ライブラリ: エキスパート - ページ 11 1...45678910111213 新しいコメント fxsaber 2020.09.22 19:12 #101 インプットの名前を知っている場合は、2 番目のオプションの方がよい。Expert Advisor で入力の順序を考える必要がなくなる。また、技術的にも実装が優れている。 #include <fxsaber\Expert.mqh> void OnStart() { MqlParam Params[2]; // カウンセラーへの道 Params[0].string_value = "Experts\\Test6.ex5"; Params[0].string_value += "\nexpertmode=5"; Params[1].type = TYPE_INT; Params[1].integer_value = 123423; EXPERT::AddInputName(Params[1], "inpFirst"); EXPERT::Run(0, Params); }inpFirst は 2 番目のインプットであるにもかかわらず、任意のインプットを設定することができる。設定されていないものはデフォルトとなる。 fxsaber 2020.09.29 18:51 #102 実験のために、いくつかのチャートのロボットをクローンする必要があった。私はこの機能を使ってそれを行った。 #include <fxsaber\Expert.mqh> //https://www.mql5.com/ja/code/19003 // 実行中のExpert Advisorを現在の設定で一方のチャートから他方のチャートにコピーします。 bool ExpertFromTo( const long ChartSource, const long ChartTarget ) { bool Res = false; MqlParam Params[]; string Names[]; const int ExpertMode = EXPERT::Parameters(ChartSource, Params, Names); const int Size = ArraySize(Params); if (Size) { Params[0].string_value += "\nexpertmode=" + (string)ExpertMode; for (int i = 1; i < Size; i++) EXPERT::AddInputName(Params[i], (Names[i - 1] == NULL) ? " " : Names[i - 1]); Res = EXPERT::Run(ChartTarget, Params); } return(Res); }次のように使った。#property script_show_inputs input int inAmount = 5; // クローンの数 void OnStart() { const int Size = SymbolsTotal(true); if (Size > inAmount) for (int i = 0, Count = 0; i < Size; i++) { const string Symb = SymbolName(i, true); if (Symb != _Symbol) { ExpertFromTo(0, ChartOpen(Symb, PERIOD_CURRENT)); // 新しいチャート-シンボルで現在のEAを実行する。 Count++; if (Count == inAmount) break; } } } fxsaber 2020.10.09 04:55 #103 複数のターミナルで十数種類のExpert Advisorを再起動する作業が発生する。一般的には、大きなルーチン。 例えば、何かを修正した。そしてMEで一括コンパイルして再起動する。私はそのようなスクリプトを使用しています。 // すべてのチャートでEAをリロードする。 input int inInterval = 5; // チャートの再スタート間隔(秒 bool ReloadChart( const long Chart ) { return (ChartSaveTemplate(Chart, "\\Files\\" + __FILE__ + ".tpl") && ChartApplyTemplate(Chart, "\\Files\\" + __FILE__ + ".tpl") && // タスクをチャート・キューに入れる。 ChartGetInteger(Chart, CHART_WINDOW_HANDLE)); // キューを移動させる。 } void OnStart() { const long chartID = ::ChartID(); for (long Chart = ChartFirst(); (Chart != -1) && !IsStopped(); Chart = ChartNext(Chart)) if ((Chart != chartID) && (ChartGetString(Chart, CHART_EXPERT_NAME) != NULL) && (ReloadChart(Chart))) Sleep(inInterval * 1000); } 私はコード内の重要な場所をマークしている。それがなければ、テンプレートの適用は、スクリプトの最後までされません。例えて言えば、ターミナルをリロードした後のExpert Advisorの起動なども 解決できます。 Vladimir Pastushak 2020.10.09 08:57 #104 fxsaber:複数のターミナルで何十種類ものExpert Advisorを再起動する作業が発生する。一般的に、大変な作業です。例えば、何かを修正した。MEで一括コンパイルして再起動。私はこのスクリプトを使っている。コード中の重要な場所をハイライトしました。これがないと、テンプレートはスクリプトの最後まで使用されません。類推すると、ターミナルをリロードした後のExpert Advisorの起動なども 解決できます。 指定したチャート上でEAの名前を取得できれば一式となる。難しくなければ完成させてください。 fxsaber 2020.10.09 09:05 #105 Vladimir Pastushak:指定された表に参議院議員の名前を入れてもらえれば完成です。差し支えなければ、完成させてください。 ChartGetString(Chart, CHART_EXPERT_NAME) こちらはMT5です。クロスプラットフォームやExpert Advisorへのフルパスが必要な場合は、Expert.mqh経由で。 Vladimir Pastushak 2020.10.09 09:52 #106 fxsaber:これはMT5です。クロスプラットフォームまたは Expert Advisor へのフルパスが必要な場合は、Expert.mqh. クロスプラットフォームが必要な場合 fxsaber 2020.10.09 10:12 #107 Vladimir Pastushak:クロスプラットフォーマーが必要だ... 取引、自動取引システム、取引戦略のテストに関するフォーラム。 ライブラリ: Expert fxsaber, 2019.09.12 06:17. #include <fxsaber\Expert.mqh> //https://www.mql5.com/ja/code/19003 // 実行中のEAのデータを出力する。 string EAToString( const long Chart_ID = 0 ) { string Names[]; MqlParam Params[]; const int Flag = EXPERT::Parameters(Chart_ID, Params, Names); const int Size = ArraySize(Names); string Str = "Expert " + Params[0].string_value + ", expertmode = " + (string)Flag; for (int i = 0; i < Size; i++) Str += "\n" + Names[i] + " = " + Params[i + 1].string_value; return(Str); } fxsaber 2020.10.14 17:07 #108 // ファイル入力変数を選択されたファイルと等しくする。 bool FileDialogToInput( const string InputName, const long Chart = 0 ) { string FileNames[]; const bool Res = (FileSelectDialog(MQLInfoString(MQL_PROGRAM_NAME) + " " + _Symbol + " " + EnumToString(_Period) + ": input string " + InputName + " = ", NULL, NULL, FSD_FILE_MUST_EXIST, FileNames, NULL) > 0); if (Res) { MqlParam Params[]; string Names[]; const int ExpertMode = EXPERT::Parameters(Chart, Params, Names); const int Size = ArraySize(Params); if (Size) { Params[0].string_value += "\nexpertmode=" + (string)ExpertMode; for (int i = 1; i < Size; i++) { if (Names[i - 1] == InputName) Params[i].string_value = FileNames[0]; EXPERT::AddInputName(Params[i], (Names[i - 1] == NULL) ? " " : Names[i - 1]); } EXPERT::Run(Chart, Params); } } return(Res); } この関数は、入力変数としてファイルを選択することができる。この実装。 input string inFileName = NULL; // 選択されたファイル #define TOSTRING(A) #A int OnInit() { if (!FileIsExist(inFileName)) return(FileDialogToInput(TOSTRING(inFileName)) || INIT_FAILED); // 入力変数に有効なファイルが指定された場合のコード。 return(INIT_SUCCEEDED); } 起動します。 OKをクリックし、選択する。 Openをクリックし、実行中のEAのプロパティ(F7)を見る。 いくつのファイルでも同じように動作します。 input string inFileName1 = NULL; // 選択されたファイル1 input string inFileName2 = NULL; // 選択されたファイル2 #define TOSTRING(A) #A int OnInit() { if (!FileIsExist(inFileName1)) return(FileDialogToInput(TOSTRING(inFileName1)) || INIT_FAILED); if (!FileIsExist(inFileName2)) return(FileDialogToInput(TOSTRING(inFileName2)) || INIT_FAILED); // 入力変数に有効なファイルが指定された場合のコード。 return(INIT_SUCCEEDED); } traveller00 2020.11.23 17:29 #109 また、セットファイルからのパラメーターのロードはまだサポートされていないようだが? fxsaber 2020.11.23 17:34 #110 traveller00: また、セットファイルからのパラメーターのロードはまだサポートされていないようだが? まだです。でも、とても簡単なことなんだ。 1...45678910111213 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
inpFirst は 2 番目のインプットであるにもかかわらず、任意のインプットを設定することができる。設定されていないものはデフォルトとなる。
次のように使った。
複数のターミナルで十数種類のExpert Advisorを再起動する作業が発生する。一般的には、大きなルーチン。
例えば、何かを修正した。そしてMEで一括コンパイルして再起動する。私はそのようなスクリプトを使用しています。
私はコード内の重要な場所をマークしている。それがなければ、テンプレートの適用は、スクリプトの最後までされません。例えて言えば、ターミナルをリロードした後のExpert Advisorの起動なども 解決できます。
複数のターミナルで何十種類ものExpert Advisorを再起動する作業が発生する。一般的に、大変な作業です。
例えば、何かを修正した。MEで一括コンパイルして再起動。私はこのスクリプトを使っている。
コード中の重要な場所をハイライトしました。これがないと、テンプレートはスクリプトの最後まで使用されません。類推すると、ターミナルをリロードした後のExpert Advisorの起動なども 解決できます。
指定したチャート上でEAの名前を取得できれば一式となる。難しくなければ完成させてください。
指定された表に参議院議員の名前を入れてもらえれば完成です。差し支えなければ、完成させてください。
こちらはMT5です。クロスプラットフォームやExpert Advisorへのフルパスが必要な場合は、Expert.mqh経由で。
これはMT5です。クロスプラットフォームまたは Expert Advisor へのフルパスが必要な場合は、Expert.mqh.
クロスプラットフォームが必要な場合
クロスプラットフォーマーが必要だ...
取引、自動取引システム、取引戦略のテストに関するフォーラム。
ライブラリ: Expert
fxsaber, 2019.09.12 06:17.
この関数は、入力変数としてファイルを選択することができる。この実装。
起動します。
OKをクリックし、選択する。
Openをクリックし、実行中のEAのプロパティ(F7)を見る。
いくつのファイルでも同じように動作します。
また、セットファイルからのパラメーターのロードはまだサポートされていないようだが?
まだです。でも、とても簡単なことなんだ。