エラー、バグ、質問 - ページ 221 1...214215216217218219220221222223224225226227228...3185 新しいコメント Yedelkin 2010.12.05 19:48 #2201 vikulin: これは同じ結果です!これらのポイントの入力パラメータは同じです。 説明してください。これらの点の入力パラメータは同じである」というのがよくわからないのですが。私が理解する限り、オプティマイザーの動作は、各パスが固有の入力パラメータのセットに対応しています。それとも、遺伝的アルゴリズムを 使用する場合、1つの入力パラメータを何度もオプティマイザで処理できる場合がある、ということでしょうか? ...まあ、そうですね、まさにその通りなんですが。すると、それ以降の「キャッシュから」のポイントはすべてフィクションであり、最適化結果の視覚的な認識を歪めていることが判明したのですね。 AIRAT SAFIN 2010.12.06 03:32 #2202 sultanm: 不思議ですね。今回で3回目です。グラフ上では値が近い点が2つあるが、結果的には1つしかない。 ヒント:要求された値でソートし、表の縦スクロールバーを表示することを忘れないでください。 Aleksandr Chugunov 2010.12.06 10:23 #2203 この問題は解決されるのでしょうか?この話をするのは3回目なんですが、反応がないんですよね~。 Test Account 2010.12.06 11:39 #2204 vikulin:ところで、requotesのモデリングを選択した場合、このキャッシュは使用しない方が良いように思うのですが、開発者の方は どのようにお考えでしょうか?縦方向には正しく拡大縮小され、より高い結果が得られたことが理解できますが、横方向には更新されません。まるで、ポイントが右側のどこかに追加され、すでにグラフの外側にあるかのようです。 servicedeskにお書きください。そして、ポイント2は、完全な情報に興味があることです。EA、ターミナルビルド、最適化設定...。 Igor Volodin 2010.12.06 13:23 #2205 コードint symbols = SymbolsTotal(false); for (int i=0; i<symbols; i++) { Print("Символ №"+i+" значение="+SymbolName(i,false)); }端末では、その結果2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №11 значение=GBPJPY 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №10 значение=GBPCHF 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №9 значение=EURJPY 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №8 значение=EURCHF 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №7 значение=EURAUD 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №6 значение=EURGBP 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №5 значение=AUDUSD 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №4 значение=USDCAD 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №3 значение=USDJPY 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №2 значение=USDCHF 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №1 значение=GBPUSD 2010.12.06 13:18:49 Expert (EURUSD,H1) Символ №0 значение=EURUSDテスターでの結果。2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №11 значение=USDJPY 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №10 значение=USDCHF 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №9 значение=USDCAD 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №8 значение=GBPUSD 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №7 значение=GBPJPY 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №6 значение=GBPCHF 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №5 значение=EURUSD 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №4 значение=EURJPY 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №3 значение=EURGBP 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №2 значение=EURCHF 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №1 значение=EURAUD 2010.12.06 13:21:20 Core 1 2010.11.01 00:00:00 Символ №0 значение=AUDUSD SymbolName(i)関数の美しさはすべて失われている vyv 2010.12.06 16:16 #2206 vyv:開発者へのお願いです。MT5での作業は煮詰まっており、まだまだ変更が必要ですが、最適化パスの数を増やしていただけると非常にありがたいです。私が理解した限りでは、多くのタスクの解は約1万個のバリアントで見つかりますが、それより少し多いか少ないかもしれません。1つのプロセッサで数時間検索して、最適なバリエーションが見つかりました。MQL5+OP+Multicoreテストの汎用性により、MT5ツールを使用して解決できるタスク(例:パターンの検索)の新しい地平を見ることができます。しかし、ここで困ったことになる。あなたのサイトに掲載されている記事には、遺伝的アルゴリズムhttps://www.mql5.com/ru/articles/55 の例があり、100本のバーに関する探索問題を解くのに3^100のフォワードブルートフォースを要しました - まあLongIntより少し多いですね :) 一方、17 000回の繰り返しで解が見つかりました。遺伝的アルゴリズムでは、LongIntよりもはるかに多くのバリエーションに対して解を求めることができます。そして、この制限はまったく根拠がなく、時代遅れです。まあ、このMT5の最終段階では、それが難しいということを除けばね。開発者の方に大変なお願いなのですが、もし難しいことでなければ、パスの数を最低でも2^LongInt(2の累乗)にしてください。 誰か答えを教えてくれませんか? Igor Volodin 2010.12.06 18:11 #2207 コード//+------------------------------------------------------------------+ //| testInd.mq5 | //| | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "" #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- int handle1 = iMA(NULL,0,17,0,MODE_LWMA, PRICE_CLOSE); // int handle2 = iMA(NULL,0,17,0,MODE_LWMA, PRICE_CLOSE); //абсолютно идентичные параметры if(handle1 == INVALID_HANDLE) { Print("Error Creating Handles for indicators",GetLastError()); } else { Print("Handle1 ="+handle1); } if(handle2 == INVALID_HANDLE) { Print("Error Creating Handles for indicators",GetLastError()); } else { Print("Handle2 ="+handle2); } IndicatorRelease(handle2); handle2 = INVALID_HANDLE; //добавил для "надежности" handle2 = iMA(NULL,0,33,0,MODE_LWMA, PRICE_CLOSE); //другой период if(handle2 == INVALID_HANDLE) { Print("Error Creating Handles for indicators",GetLastError()); } else { Print("Измененный? Handle2 ="+handle2); //все обращения к данным handle2 возвращают данные с handle1 } //--- return(0); } ログです。2010.12.06 18:07:52:52 testInd (EURUSD,H1) Modified?Handle2 =10 2010.12.06 18:07:52 testInd (EURUSD,H1) Handle2 =10 2010.12.06 18:07:52 testInd (EURUSD,H1) Handle1 =10したがって、handle2へのすべてのデータの呼び出しは、期間が変更されたにもかかわらず、handle1への呼び出しと同等である。Expert Advisor が動作している場合、同じ特性を持つインディケータを作成 することが可能であり、1つのハンドルに対するこのような最適化は合理的ですが、このようなハンドルが変数に「固着」することは非常に迷惑な話です。P.S. 原因がわかりました。このバグは、1つのハンドル番号に最適化した結果です。IndicatorRelease(handle2); //уменьшает счетчик хендлов на единицу и в итоге следующий созданный хэндл(с любой переменной) - опять 10 Test Account 2010.12.06 19:39 #2208 Vigor:コードログです。 2010.12.06 18:07:52 testInd (EURUSD,H1) Modified?ハンドルネーム2 =10 2010.12.06 18:07:52 testInd (EURUSD,H1) ハンドル2 =10 2010.12.06 18:07:52 testInd (EURUSD,H1) ハンドル1 =10したがって、handle2への呼び出しは、周期は変わるものの、すべてhandle1への呼び出しと同じである。EAを運用する中で、同じ特性を持つインジケータを作成することは否定できませんし、1つのハンドルに対する最適化は合理的ですが、このようにハンドルが変数に「張り付く」ことは非常に迷惑なことなのです。P.S. 原因がわかりました。これはバグであり、1つのハンドル番号に最適化した結果である。なぜ、バグだと思うのですか? Igor Volodin 2010.12.06 23:16 #2209 alexvd:なぜ、バグだと思うのですか? よかったです。機能である。しかし、あなたがよく知るべきは1つ。 ユーザーがインターフェイスからMAの期間値を入力し、指標のハンドルを作成し、指標バッファの値を使用する場合、同じ特性を持つ2つの指標(それらのハンドルはオブジェクトラッパーに格納されている)を作成した(例えば、私はこのフォームのデフォルト設定)、その人はこの機能により、最初の指標のハンドル番号を受け取ります。 以下のような連鎖が考えられます。 状況1.それは最初のインジケータを削除します(そしてプログラムはIndicatorReleaseを実行します)。その結果、2番目のインジケータは自動的に動作しません - バッファコピーエラー。 状況2.2番目のインジケータを取り除き(プログラムではIndicatorRelease)、ハンドホイールカウンタを減少させる。最初の1台は順調です。異なる周期で3つ目の インジケータが作成されます。ハンドルカウント+1、つまり削除されたばかりのインジケータのハンドル番号を受け取ります。結局、最悪なのは、作成に成功した 異なる 期間の3番目のインジケータが、まだ削除されていない最初の インジケータの値をバッファに与えて しまうことです。 ハンドル番号のグルーイング機能で、グルーイングされた2つのうち1つを削除し、新しいものを作成すると、あいまいな状況になることがある。//+------------------------------------------------------------------+ //| testInd.mq5 | //| | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "" #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- int handle1 = iMA(NULL,0,17,0,MODE_LWMA, PRICE_CLOSE); // int handle2 = iMA(NULL,0,17,0,MODE_LWMA, PRICE_CLOSE); //абсолютно идентичные параметры if(handle1 == INVALID_HANDLE) { Print("Error Creating Handles for indicators",GetLastError()); } else { Print("Handle1 ="+handle1); } if(handle2 == INVALID_HANDLE) { Print("Error Creating Handles for indicators",GetLastError()); } else { Print("Handle2 ="+handle2); } IndicatorRelease(handle2); handle3 = iMA(NULL,0,33,0,MODE_LWMA, PRICE_CLOSE); //другой период if(handle3 == INVALID_HANDLE) { Print("Error Creating Handles for indicators",GetLastError()); } else { Print("Новый handle3 ="+handle3); //все обращения к данным handle3 возвращают данные с handle1 } //--- return(0); } Sergey Chalyshev 2010.12.07 00:16 #2210 vyv: 誰か答えてくれないかな?ここでも話題になっていますね。https://www.mql5.com/ru/forum/1997/page6/#comment_31644。質問はそちらに移したほうがいいかもしれませんね--提案です。 Оптимизация в Тестере стратегий www.mql5.com из которых ТОЛЬКО 546 ms было затрачено именно на тестирование эксперта. 1...214215216217218219220221222223224225226227228...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これは同じ結果です!これらのポイントの入力パラメータは同じです。
説明してください。これらの点の入力パラメータは同じである」というのがよくわからないのですが。私が理解する限り、オプティマイザーの動作は、各パスが固有の入力パラメータのセットに対応しています。それとも、遺伝的アルゴリズムを 使用する場合、1つの入力パラメータを何度もオプティマイザで処理できる場合がある、ということでしょうか?
...まあ、そうですね、まさにその通りなんですが。すると、それ以降の「キャッシュから」のポイントはすべてフィクションであり、最適化結果の視覚的な認識を歪めていることが判明したのですね。
不思議ですね。今回で3回目です。グラフ上では値が近い点が2つあるが、結果的には1つしかない。
ヒント:要求された値でソートし、表の縦スクロールバーを表示することを忘れないでください。
この問題は解決されるのでしょうか?
この話をするのは3回目なんですが、反応がないんですよね~。
ところで、requotesのモデリングを選択した場合、このキャッシュは使用しない方が良いように思うのですが、開発者の方は どのようにお考えでしょうか?
縦方向には正しく拡大縮小され、より高い結果が得られたことが理解できますが、横方向には更新されません。まるで、ポイントが右側のどこかに追加され、すでにグラフの外側にあるかのようです。
端末では、その結果
テスターでの結果。
SymbolName(i)関数の美しさはすべて失われている
開発者へのお願いです。MT5での作業は煮詰まっており、まだまだ変更が必要ですが、最適化パスの数を増やしていただけると非常にありがたいです。
私が理解した限りでは、多くのタスクの解は約1万個のバリアントで見つかりますが、それより少し多いか少ないかもしれません。1つのプロセッサで数時間検索して、最適なバリエーションが見つかりました。
MQL5+OP+Multicoreテストの汎用性により、MT5ツールを使用して解決できるタスク(例:パターンの検索)の新しい地平を見ることができます。
しかし、ここで困ったことになる。
あなたのサイトに掲載されている記事には、遺伝的アルゴリズムhttps://www.mql5.com/ru/articles/55 の例があり、100本のバーに関する探索問題を解くのに3^100のフォワードブルートフォースを要しました - まあLongIntより少し多いですね :) 一方、17 000回の繰り返しで解が見つかりました。遺伝的アルゴリズムでは、LongIntよりもはるかに多くのバリエーションに対して解を求めることができます。そして、この制限はまったく根拠がなく、時代遅れです。まあ、このMT5の最終段階では、それが難しいということを除けばね。
開発者の方に大変なお願いなのですが、もし難しいことでなければ、パスの数を最低でも2^LongInt(2の累乗)にしてください。
コード
ログです。
2010.12.06 18:07:52:52 testInd (EURUSD,H1) Modified?Handle2 =10
2010.12.06 18:07:52 testInd (EURUSD,H1) Handle2 =10
2010.12.06 18:07:52 testInd (EURUSD,H1) Handle1 =10
したがって、handle2へのすべてのデータの呼び出しは、期間が変更されたにもかかわらず、handle1への呼び出しと同等である。
Expert Advisor が動作している場合、同じ特性を持つインディケータを作成 することが可能であり、1つのハンドルに対するこのような最適化は合理的ですが、このようなハンドルが変数に「固着」することは非常に迷惑な話です。
P.S. 原因がわかりました。このバグは、1つのハンドル番号に最適化した結果です。
IndicatorRelease(handle2); //уменьшает счетчик хендлов на единицу и в итоге следующий созданный хэндл(с любой переменной) - опять 10コード
ログです。
2010.12.06 18:07:52 testInd (EURUSD,H1) Modified?ハンドルネーム2 =10
2010.12.06 18:07:52 testInd (EURUSD,H1) ハンドル2 =10
2010.12.06 18:07:52 testInd (EURUSD,H1) ハンドル1 =10
したがって、handle2への呼び出しは、周期は変わるものの、すべてhandle1への呼び出しと同じである。
EAを運用する中で、同じ特性を持つインジケータを作成することは否定できませんし、1つのハンドルに対する最適化は合理的ですが、このようにハンドルが変数に「張り付く」ことは非常に迷惑なことなのです。
P.S. 原因がわかりました。これはバグであり、1つのハンドル番号に最適化した結果である。
なぜ、バグだと思うのですか?
なぜ、バグだと思うのですか?
ユーザーがインターフェイスからMAの期間値を入力し、指標のハンドルを作成し、指標バッファの値を使用する場合、同じ特性を持つ2つの指標(それらのハンドルはオブジェクトラッパーに格納されている)を作成した(例えば、私はこのフォームのデフォルト設定)、その人はこの機能により、最初の指標のハンドル番号を受け取ります。
以下のような連鎖が考えられます。
状況1.それは最初のインジケータを削除します(そしてプログラムはIndicatorReleaseを実行します)。その結果、2番目のインジケータは自動的に動作しません - バッファコピーエラー。
状況2.2番目のインジケータを取り除き(プログラムではIndicatorRelease)、ハンドホイールカウンタを減少させる。最初の1台は順調です。異なる周期で3つ目の インジケータが作成されます。ハンドルカウント+1、つまり削除されたばかりのインジケータのハンドル番号を受け取ります。結局、最悪なのは、作成に成功した 異なる 期間の3番目のインジケータが、まだ削除されていない最初の インジケータの値をバッファに与えて しまうことです。
ハンドル番号のグルーイング機能で、グルーイングされた2つのうち1つを削除し、新しいものを作成すると、あいまいな状況になることがある。
誰か答えてくれないかな?
ここでも話題になっていますね。https://www.mql5.com/ru/forum/1997/page6/#comment_31644。
質問はそちらに移したほうがいいかもしれませんね--提案です。