2015年11月15日日曜日

MT4スクリプト: テンプレートからオブジェクトを除去、Template Cleaner


MT4のテンプレート機能は、テクニカルを組み合わせた戦術を複数持っている人には大変便利な機能で、多くの人が利用していると思います。

しかし、テンプレートの作り方には正しい方法と間違った方法があることをご存知でしたか?

テンプレートの正しい作り方

チャートにインジケーターをセットして「右クリック → 定型チャート → 定型として保存」、多くの人はこのやり方でテンプレートを作成していると思います。しかしそれは間違い。

正しい作り方は次の通りです。
  1. チャート上のオブジェクトを削除
    「右クリック → 表示中のライン等 → すべて → Ctrl+Aで全選択して削除」
  2. テンプレートとして保存
    「右クリック → 定型チャート → 定型として保存」
  3. テンプレートファイルを確認
    「ファイル → データフォルダを開く → templates」からtplファイルをメモ帳で開き、オブジェクトのデータがあれば削除
多くの人はチャート上のオブジェクト(トレンドラインやフィボナッチなど)を削除しないまま、テンプレートファイルを作成してしまっています。すると、テンプレートを適用したときにオブジェクトも復元されてしまうのです。

大抵のインジケーターは、自分がこれから作成するはずのオブジェクトが、起動時に既にチャート上にあることを想定していません。テンプレートにオブジェクト情報が含まれていると、インジケーター誤動作の原因となるのです。

それ以外にも、復元されたオブジェクトが邪魔になったり、テンプレート切り替えが遅くなったり、メモリ消費が多くなったりと、百害あって一利なしです。

手順3の補足

テンプレート情報が記録されたtplファイルはテキストファイルで、メモ帳などで中身を見ることができます。この中に<object>~</object>で囲まれた部分が含まれていれば、オブジェクト情報が残っています。

手順1でオブジェクトの全削除をしているのですが、インジケーターの中には削除してもすぐにオブジェクトを作成し直すものがあるため、それらを削除するために手順3が必要となります。

テンプレートからオブジェクト情報を一発削除

上記の手順を手動でやってもいいのですが、テンプレートファイルに含まれるオブジェクト情報を一発で削除するスクリプトがあれば便利です。その名もTemplate Cleaner

テンプレートにしたらなぜかインジケーターが動かなくなった、テンプレート適用が遅い、という方は、オブジェクト情報が含まれたままテンプレートを作成してしまっている可能性大。ぜひ一度このスクリプトを実行してみてください。

使い方は簡単です。
  1. 「定型として保存」でテンプレートを作成
  2. パラメーターTemplateFileにテンプレート名を入力して実行
ワイルドカード(*)を入力すると、templateフォルダ内の全てのファイルが対象になります(念のためバックアップを忘れずに)。

「DLLの実行を許可する」にチェックが入っている必要があります。
ダウンロード
テンプレートからオブジェクトを除去、Template Cleaner
最新バージョン: Ver 1.01 (2016.7.14)

Template Cleaner.ex4

10 件のコメント:

  1. 一度クリーンしたテンプレートを再度クリーンする(ワイルドカードを指定して2度実行する)と、テンプレートファイルが1KBとなり、中を見てみると、が2行目にあるだけのファイルになりました(壊れました)。MT4のBuild988を利用しています。

    返信削除
    返信
    1. ご不便をおかけして申し訳ありません。プログラムを修正しました。

      削除
    2. 上記からダウンロードしたのですが、バージョンが1.00となっており、コピーライトのところも2015のままとなっています。一旦テストを中止しました。ご確認いただけますでしょうか?

      削除
    3. V1.01のファイルへリンク先が修正されておりませんでした。度々申し訳ありません。

      削除
    4. お手数おかけします。
      対応、ありがとうございます。
      ファイルの中身を見た所、コードが不足しているようで、改行されてなかったのですが、特に問題はないようです。

      削除
  2. こんにちは。サイトから口座番号をリセットしてくださいと出ました。やり方を教えてください。よろしくお願いいたします。

    返信削除
    返信
    1. fx-onのダウンロードページにリセットボタンがあります。それを押すと登録した口座をリセットすることができます。

      削除
  3. こんばんは、初めまして♪

    大変初歩的な事ですみません、他でも検索してみたのですが、他の方の様にはやり方が理解できないのですが
    ---------
    1「定型として保存」でテンプレートを作成
    2 パラメーターTemplateFileにテンプレート名を入力して実行
    ---------
    これは消したいインジケーターのチャートを定型として保存した後
    2は、Templatesフォルダーにテンプレートとしてまず保存して行うものでしょうか??

    tplファイルにテンプレート名を入力と言う事なのでしょうか??

    Template Cleaner.ex4を使うタイミングも全く見当がつかないのですが、
    お忙しい中、お手数ですがアドバイスを頂ければ幸いです。m(__)m

    返信削除
    返信
    1. 手順2では、Template CleanerをパラメーターTemplateFileにテンプレート名を入力して実行してください。

      削除
  4. お返事ありがとうございます。
    他の方は出来ているのに、初歩的な事で恐縮です。

    インジケーターは消す事が出来ました。ありがとうございます。

    なお、チャートの背景色やロウソクの色も全てリセットされ、
    新規チャートと同じ状態に成りましたが
    ここまでリセットされてしまうものでしょうか?

    もし可能なら、
    例えば、3つインジケーターを入れていた場合、
    その内1つのインジケーターに関するものだけを削除は出来ないものですよね?


    多分、私の手順が間違っているからだと思うのですが、
    -------------
    3つインジケーターが入っているチャートがあり、その内1つのインジケーターを消したい時に、
    まずチャートを「定型チャート」「定型として保存」
    (Terminal\templates\123.tplを作製)

    次に
    Template Cleaner.ex4をTerminal\templatesフォルダーに移動させ
    Template Cleaner.ex4名を123.tpl名に変更し
    123チャートから定型チャート123を読み込み
    -------------
    で合っていましたでしょうか?


    無料のインジケーターなのにすみません。
    皆さんに追いつけるよう、頑張ります。

    返信削除