ChartApplyTemplate

チャートに指定されたファイルから特定のテンプレートを適用します。コマンドは、チャートメッセージキューに追加され、以前の全てのコマンドの処理後に実行されます。

bool  ChartApplyTemplate(
  long          chart_id,     // チャート識別子
  const string  filename      // テンプレートファイル名
  );

パラメータ

chart_id

[in]  チャート識別子。( 0 は現在のチャート)

filename

[in]  テンプレートを含むファイルの名称

戻り値

コマンドがチャートキューに追加された場合は true、そうでない場合は false。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

エキスパートアドバイザーは、接続されているチャートへの新しいテンプレートの読み込みが成功した場合には、アンロードされ、動作を継続することは出来ません。

チャートにテンプレートを適用する場合、セキュリティ上の理由のために取引権限が制限されることがあります。

ライブ取引許可は ChartApplyTemplate() 関数を使用してテンプレートを適用することによって開始したエキスパートアドバイザーには拡張することは出来ません。

ChartApplyTemplate() 関数を呼び出した MQL5 プログラムに取引権限がない場合は、テンプレートから起動されたエキスパートアドバイザーは、テンプレートの設定に関係なく取引することは出来ません。

ChartApplyTemplate() 関数を呼び出し MQL5 プログラムに取引権限がある場合でも、テンプレートの設定にそのような権限はなければ、テンプレートから起動されたエキスパートアドバイザーは、取引することが出来ません。

テンプレートの使用

MQL5 言語のリソースは、ChartSetInteger() 関数を使用して、色に関した複数のチャートのプロパティの設定を許可します。

  • チャートの背景色
  • 軸、スケールとOHLCラインの色
  • グリッドの色
  • ボリュームやポジションオープンレベルの色
  • アップバー、影と強気ローソク足の縁の色
  • ダウンバー、影や弱気ローソク足の縁の色
  • チャートの線と同時線の色
  • 強気ローソク足の実体の色
  • 弱気ローソク足の実体の色
  • 売値ラインの色
  • 買値ラインの色
  • 直近の約定価格(Last)の線の色
  • 逆指値(決済逆指値及び決済指値)レベルの色

また、チャートには、複数の グラフィカルオブジェクト指標 が存在出来ます。全ての必要な指標とチャートを設定した後、テンプレートとして保存することが出来ます。このようなテンプレートは、任意のチャートに適用することが出来ます。

ChartApplyTemplate()関数は、以前に保存したテンプレートを使用するためにあり、任意のMQL5 プログラムで使用することが出来ます。テンプレートを格納するファイルへのパスは ChartApplyTemplate() の2 番目のパラメータとして受け渡しされます。テンプレートファイルは、次のルールに従って検索されます。

  • バックスラッシュ"\" セパレータ("\\"として記述)がパスの先頭に配置されている場合、テンプレートは_terminal_data_directory\ MQL5 との相対パスで検索されます。
  • バックスラッシュがない場合、テンプレートは ChartApplyTemplate() を呼び出した実行可能な EX5 ファイルへの相対位置から検索されます。
  • テンプレートが上記の 2 つで見つからない場合は、検索が terminal_directory\Profiles\Templates\ で行われます。

ここで terminal_directory はメタトレーダー5クライアント端末が実行されているフォルダで terminal_data_directory が編集可能なファイルが保存されているフォルダで、その場所は、オペレーティングシステム、ユーザ名、及びコンピュータのセキュリティ設定に依存します。通常、これらは別々のフォルダですが、場合によって、同じフォルダであっても可能です。

terminal_data_directory と terminal_directory フォルダの場所は TerminalInfoString() 関数で習得出来ます。

//--- 端末が起動されたディレクトリ
  string terminal_path=TerminalInfoString(TERMINAL_PATH);
  Print("Terminal directory:",terminal_path);
//--- EAと指標を含むMQL5フォルダが配置されている端末のデータディレクトリ
  string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
  Print("Terminal data directory:",terminal_data_path);

例えば、

//--- terminal_data_directory\MQL5\ でテンプレートを探す
ChartApplyTemplate(0,"\\first_template.tpl"))
//--- directory_of_EX5_file\ に続いて terminal_data_directory\Profiles\Templates\でテンプレートを探す
ChartApplyTemplate(0,"second_template.tpl"))
//--- directory_of_EX5_file\My_templates\ に続いて terminal_directory\Profiles\Templates\My_templates\ でテンプレートを探す
ChartApplyTemplate(0,"My_templates\\third_template.tpl"))

テンプレートは実行可能なEX5ファイルに含むことは出来ないのでリソースではありません。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                        |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- \MQL5\Files にあるテンプレートを適用する例
  if(FileIsExist("my_template.tpl"))
    {
    Print("The file my_template.tpl found in \Files'");
    //--- テンプレートを適用する
    if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
       {
        Print("The template 'my_template.tpl' applied successfully");
        //--- チャートを再描画
        ChartRedraw();
       }
    else
        Print("Failed to apply 'my_template.tpl', error code ",GetLastError());
    }
  else
    {
    Print("File 'my_template.tpl' not found in "
           +TerminalInfoString(TERMINAL_PATH)+"\\MQL5\\Files");
    }
 }

参照

リソース