ライブラリ: エキスパート - ページ 3 12345678910...13 新しいコメント fxsaber 2018.11.16 09:19 #21 ライブラリーの別の応用例 取引、自動取引システム、取引戦略のテストに関するフォーラム パラメータGetRange() fxsaber, 2018.11.16 09:17 #include <fxsaber\Expert.mqh> //https://www.mql5.com/ja/code/19003 #define TOSTRING(A) (" " + #A + " = " + (string)(A)) // 最適化のための入力パラメータの範囲に関するデータを収集する。 string OptimizationData( void ) { string Str = NULL; MqlParam Params[]; string Names[]; if (EXPERT::Parameters(0, Params, Names)) { const int Size = ArraySize(Names); bool Enable; long Value, Start, Step, Stop; long Total = 1; Str = Params[0].string_value; for (int i = 0; i < Size; i++) if (ParameterGetRange(Names[i], Enable, Value, Start, Step, Stop)) { const long Interval = Stop - Start + 1; const long Amount = Enable ? Interval / Step + ((bool)(Interval % Step) ? 1 : 0) : 1; Str += "\n" + Names[i] + " = " + (string)Value + (Enable ? TOSTRING(Start) + TOSTRING(Step) + TOSTRING(Stop) + TOSTRING(Amount) : NULL); Total *= Amount; } Str += "\n" + TOSTRING(Total); } return(Str); } input int Range1 = 5; input int Range2 = 5; input int Range3 = 5; void OnTesterInit() { ParameterSetRange("Range1", true, 5, 1, 2, 3); Print(__FUNCTION__ + "\n" + OptimizationData()); } void OnTesterDeinit() { Print(__FUNCTION__ + "\n" + OptimizationData()); ChartClose(); } int OnInit() { return(INIT_FAILED); } OnTesterInit Experts\fxsaber\Test3.ex5 Range1 = 5 Start = 5 Step = 1 Stop = 50 Amount = 46 Range2 = 5 Start = 23 Step = 1 Stop = 78 Amount = 56 Range3 = 5 Start = 26 Step = 5 Stop = 83 Amount = 12 Total = 30912 OnTesterDeinit Experts\fxsaber\Test3.ex5 Range1 = 5 Start = 1 Step = 2 Stop = 3 Amount = 2 Range2 = 5 Start = 23 Step = 1 Stop = 78 Amount = 56 Range3 = 5 Start = 26 Step = 5 Stop = 83 Amount = 12 Total = 1344 fxsaber 2019.03.12 12:20 #22 バグ修正。 fxsaber 2019.03.12 12:21 #23 バグを修正しました。最終バージョン Vitaly Muzichenko 2019.03.19 12:39 #24 .ex4形式のExpert Advisorを別の名前のExpert Advisorに接続して実行するにはどうすればよいですか。 Trade.ex4」という名前でコンパイルされたExpert Advisorがあります。 Hand.ex4」という名前のExpert Advisorを新規作成します。 Hand.ex4」が起動されたときに、「Trade.ex4」が完全に機能し、「Trade.ex4」が「Hand.ex4」に埋め込まれるように、これらを結合する方法。 つまり、マシン上にはHand.ex4ファイルしかありませんが、仕事ではTrade.ex4を使っています。 ありがとうございました! fxsaber 2019.03.19 18:45 #25 Vitaly Muzichenko:.ex4形式のExpert Advisorをどのように実行できますか?現在のライブラリはEX5でのみ動作します。 Andrey Khatimlianskii 2019.04.09 01:31 #26 Sergey Eremin:私自身は、あるプロジェクトの一環として、この方法で解決しました("name "タグをそのまま使って):ありがとうございます! ただ、保存したテンプレートの名前にchartIdを追加して、異なるチャートの同一のEAが同じファイルを取り合わないようにしました。 fxsaberさん、コードに "#ifndef __MQL5__"がありますが、なぜクロスプラットフォームを論理的結論にしないのですか? Isを動作させるには、コードの最初に追加します: #property strict #ifdef __MQL4__ class SubstringParser { private: string m_text; string m_subStart; string m_subEnd; public: SubstringParser(const string text, const string subStart, const string subEnd) { m_text = text; m_subStart = subStart; m_subEnd = subEnd; } string Get() { int startPhraseLengt = StringLen(m_subStart); int startPos = StringFind(m_text, m_subStart) + startPhraseLengt; int endPos = StringFind(m_text, m_subEnd, startPos); if(startPos >= startPhraseLengt && endPos > startPos) { return StringSubstr(m_text, startPos, endPos - startPos); } else { return ""; } } }; string GetChartEAName(const long chartId) { if(!SaveTemplate(chartId)) { return ""; } string result = ""; int handle = FileOpen("ea_name_checking_" + (string)chartId + ".tpl",FILE_TXT|FILE_READ); if(handle == INVALID_HANDLE) { Print ( "Error in ", __FILE__,", line ", __LINE__, ": can't open template file 'ea_name_checking_" + (string)chartId + ".tpl', error code = ", GetLastError() ); } else { string text = ""; while(!FileIsEnding(handle)) { text = text + FileReadString(handle, (uint)FileSize(handle)) +"\r\n"; } SubstringParser eaSectionTextParser(text, "<expert>", "</expert>"); string eaSectionText = eaSectionTextParser.Get(); if(StringTrimLeft(StringTrimRight(eaSectionText)) != "") { SubstringParser eaNameParser(eaSectionText, "name=","\r\n"); string eaName = StringTrimLeft(StringTrimRight(eaNameParser.Get())); if(eaName != "") { result = eaName; } } } FileClose(handle); FileDelete("ea_name_checking_" + (string)chartId + ".tpl"); return result; } bool SaveTemplate(const long chartId) { ResetLastError(); if(!ChartSaveTemplate(chartId, "\\Files\\ea_name_checking_" + (string)chartId + ".tpl")) { Print ( "Error in ", __FILE__,", line ", __LINE__, ": can't save template to the file 'ea_name_checking_" + (string)chartId + ".tpl', error code = ", GetLastError() ); return false; } return true; } #endif そして関数自体を修正します: static bool Is( const long Chart_ID = 0 ) { #ifdef __MQL4__ string chartEAName = GetChartEAName(Chart_ID); #endif #ifdef __MQL5__ string chartEAName = ChartGetString(Chart_ID, CHART_EXPERT_NAME); #endif return(chartEAName != NULL); } 他に難しい点は? fxsaber 2019.04.09 07:53 #27 Andrey Khatimlianskii:他に何か問題がありますか?インジケーターが1つしかないチャート。 ZY このように動作するはずです。 SubstringParser eaSectionTextParser(text, "\r\n\r\n<expert>", "</expert>"); fxsaber 2019.04.09 13:04 #28 ライブラリのすべての機能がMT4で動作するようになりました。 ライブラリはクロスプラットフォームになりました。 fxsaber 2019.04.09 13:05 #29 すべてのライブラリ機能が MT4で動作するようになりました。ライブラリはクロスプラットフォームになりました。 MT4の例: MT4の例: MT4の例, MT4の例, MT4の例, MT4の例, MT4の例, MT4の例 Библиотеки:エキスパート fxsaber, 2019.04.09 13:19 #include <fxsaber\Expert.mqh> //https://www.mql5.com/ru/code/19003 void OnStart() { MqlParam Params[2]; // Путь к советнику Params[0].string_value = "Moving Average"; // Первый входной параметр советника Params[1].type = TYPE_DOUBLE; Params[1].double_value = 0.5; Print(EXPERT::Run(ChartOpen(_Symbol, _Period), Params)); } fxsaber 2019.04.09 13:19 #30 Vitaly Muzichenko:.ex4でEAを実行する最良の方法は?#include <fxsaber\Expert.mqh> //https://www.mql5.com/ja/code/19003 void OnStart() { MqlParam Params[2]; // カウンセラーへの道 Params[0].string_value = "Moving Average"; // Expert Advisor の最初の入力パラメータ。 Params[1].type = TYPE_DOUBLE; Params[1].double_value = 0.5; Print(EXPERT::Run(ChartOpen(_Symbol, _Period), Params)); } 12345678910...13 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
取引、自動取引システム、取引戦略のテストに関するフォーラム
パラメータGetRange()
fxsaber, 2018.11.16 09:17
.ex4形式のExpert Advisorを別の名前のExpert Advisorに接続して実行するにはどうすればよいですか。
Trade.ex4」という名前でコンパイルされたExpert Advisorがあります。
Hand.ex4」という名前のExpert Advisorを新規作成します。
Hand.ex4」が起動されたときに、「Trade.ex4」が完全に機能し、「Trade.ex4」が「Hand.ex4」に埋め込まれるように、これらを結合する方法。
つまり、マシン上にはHand.ex4ファイルしかありませんが、仕事ではTrade.ex4を使っています。
ありがとうございました!
.ex4形式のExpert Advisorをどのように実行できますか?
現在のライブラリはEX5でのみ動作します。
私自身は、あるプロジェクトの一環として、この方法で解決しました("name "タグをそのまま使って):
ありがとうございます!
ただ、保存したテンプレートの名前にchartIdを追加して、異なるチャートの同一のEAが同じファイルを取り合わないようにしました。
fxsaberさん、コードに "#ifndef __MQL5__"がありますが、なぜクロスプラットフォームを論理的結論にしないのですか?
Isを動作させるには、コードの最初に追加します:
そして関数自体を修正します:
他に難しい点は?
他に何か問題がありますか?
インジケーターが1つしかないチャート。
ZY このように動作するはずです。
ライブラリのすべての機能がMT4で動作するようになりました。
ライブラリはクロスプラットフォームになりました。
MT4の例:
MT4の例: MT4の例, MT4の例, MT4の例, MT4の例, MT4の例, MT4の例
Библиотеки:エキスパート
fxsaber, 2019.04.09 13:19
.ex4でEAを実行する最良の方法は?