ChartApplyTemplate
指定したファイルから特定のテンプレート(定型チャート)をチャートに適用します。
コマンドはチャートメッセージキューに追加され、キューが追加される前に持っているコマンドが処理された後に実行されます。
■引数
引数名 |
初期値 |
I/O |
詳細 |
chart_id |
- |
In |
チャートID。
0は現在のチャートを意味します。
|
filename |
- |
In |
テンプレートファイル名
|
■戻り値
コマンドがチャートキューに追加された場合はtrueを返します。
それ以外はfalseを返します。
エラーコードの確認は
GetLastError()関数を使用します。
■備考
新しいテンプレートのロードが成功した場合、EAがアンロードされる為動作を継続する事は出来ません。
自動売買とDLLインポート
ユーザーはチャート上で起動したMQL4プログラムの以下のアクションの許可/禁止設定をする事が出来ます。
・自動売買の許可
・DLL使用の許可
ターミナルは起動したEAと全てのインジケータの設定情報を持つテンプレートを保存する事が可能です。
テンプレートを使用して他チャートに同じ設定のチャート状態にする事が可能です。
テンプレートを保存する時、起動するプログラムのアクセス(自動売買・DLLインポート)許可状態も保存されます。
チャートにテンプレートを適用すると、これらの権限はセキュリティ上の理由で制限される事があります。
ChartApplyTemplate()関数を使用してテンプレート適用した場合、
テンプレートに保存されたアクセス(自動売買・DLLインポート)許可状態は適用されません。
テンプレートの使用
ChartSetInteger()関数を使用した複数のチャートプロパティ設定もテンプレートに保存されます。
また、チャート上の複数の
グラフィカルオブジェクトと
インジケータもテンプレートに保存されます。
必要なインジケータをチャートプロパティの設定した後、それをテンプレートとして保存し、
他チャートに適用する事が出来ます。
ChartApplyTemplate()関数は、以前保存したテンプレートをMQL4プログラムで使用する為の関数です。
テンプレートを格納するファイルパスは引数で渡します。
テンプレートファイルは以下のルールに従って検索します。
・"\"セパレータ(プログラム上では"\\")が先頭に配置されている場合は、"ターミナルデータディレクトリ\MQL4"パスに対して検索します。
・先頭に"\"が無い場合は、.ex4ファイルが置かれているディレクトリの相対パスから検索します
・上記2つの方法で検索しても見つからない場合は、"ターミナルディレクトリ\templates"から検索します
"ターミナルディレクトリ"はメタトレーダー4クライアントターミナルが実行されているフォルダで、
その場所は使用しているOS、OSのユーザー名、OSのセキュリティ設定に依存します。
"ターミナルデータディレクトリ"と"ターミナルディレクトリ"の場所は
TerminalInfoString()関数で取得する事が出来ます。
サンプルソース:
void OnInit() {
Print("ターミナルディレクトリ :",TerminalInfoString(TERMINAL_PATH));
Print("ターミナルデータディレクトリ:",TerminalInfoString(TERMINAL_DATA_PATH));
}
結果:
ターミナルディレクトリ :D:\Program Files\FXCM MetaTrader 4
ターミナルデータディレクトリ:C:\Users\yuki\AppData\Roaming\MetaQuotes\Terminal\F7DC4A11FD305E0AA6ED39F4697586F7
サンプルソース:
void OnInit() {
ChartApplyTemplate(0,"\\test.tpl"))
ChartApplyTemplate(0,"test.tpl"))
ChartApplyTemplate(0,"My_templates\\ADX2.tpl"))
}
バックテスト中に呼び出したら、エラー4051(無効な関数の引数値)になりました。
バックテスト中は使用出来ないのかもしれません。