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

7 件のコメント:

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

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

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

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

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

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

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

      削除