MT5ターミナルが本日アップデートされ、テスト中に「最適化」ウィンドウが表示されなくなりました。 - ページ 22

 
Aleksey Vyazmikin:

ポイントは、INIT_PARAMETERS_INCORRECTを使用して、非論理的/不要な値を除外して検索領域を絞り込むことが多いため、完全な列挙を使用した場合に最適 化が大幅に高速化される点です。もしINIT_PARAMETERS_INCORRECTがなかったら、遺伝子が不要な変種に遭遇していじくるだけなので、変数値を除外しないのは選択肢に入らない。そういうわけで、プロとして、この問題をあまり苦労せずに解決するにはどうしたらいいのか、ということです。正しい変数をすべて手動で列挙し、隙間なく列挙し、承知の上で INIT_PARAMETERS_INCORRECT 値を除外することは、オプションではありません - 非常に長いです。スマートカウンターの使用は万人向けではなく、また遺伝子を害する可能性もあります。

では、1日にすべてのパラメータを渡し、その正しい値をコードに書き込むことで、遺伝子の選別を行うにはどうすればよいのでしょうか?

上記の私の説明をお読みください。

あなたの描く世界観は、遺伝的アルゴリズムと相容れないものです。否定によって人口の4分の1を殺す - 遺伝は損なわれてもまだ生き残る。人口の98%を殺す-それは進化の終わりです。あなたの希望や好みの 操作方法にかかわらず。

上にリンクした資料を読んでみてください。

啓蒙はもういいや、ごめんね。INIT_PARAMETERS_INCORRECTスレッドの継続は終了し、すべてのコメントが削除されます。

 
void collectNecessaryDataOnTick()
{
   //--- считать последние цены на тике
   SymbolInfoTick(Symbol(),last_tick);
   
   ArrayFree(buf_CCI);
   
   if(CopyBuffer(handle_CCI,0,0,bars_4_tr_cur,buf_CCI) < 0 )               // копируем данные из индикаторного массива в статический массив buf_CCI для дальнейшей работы с ними
   {                                                                       // если есть ошибки
      Comment("Не удалось скопировать данные из индикаторного буфера");    // то выводим сообщение
      return;                                                              // и выходим из функции
   }
   bars_4_tr_cur  = 10;
   
   return;
}

今日のアップデート前は、すべてうまくいっていました。現在、エラーメッセージが 表示されています。

 
Сергей Таболин:

今日のアップデート前は、すべてうまくいっていました。今、エラーメッセージが 出ました。

GetLastError()はどのような値を返すのですか?

CopyBufferを呼び出す前の変数bars_4_tr_curの値は何ですか?

handle_CCIがカウントされる時系列は何本ですか?

 
Slava:

GetLastError()はどのような値を返すのですか?

CopyBufferを呼び出す前の変数bars_4_tr_curの値は何ですか?

handle_CCI インジケータがカウントされるタイムシリーズのバー数は?

変数 = 33

М15

   ResetLastError();
   if(CopyBuffer(handle_CCI,0,0,33,buf_CCI) < 0 )               // копируем данные из индикаторного массива в статический массив buf_CCI для дальнейшей работы с ними
   {                                                                       // если есть ошибки
      Comment("Не удалось скопировать данные из индикаторного буфера");    // то выводим сообщение об ошибке
      Print(GetLastError());
      return;                                                              // и выходим из функции
   }

4003 -システム関数を呼び出すと、パラメーターが不正に なります。

 
Сергей Таболин:

変数 = 33

М15

4003 -システム関数を呼び出すと、パラメーターが不正に なります。

次の質問です。CCIインジケーターからデータを取っているという理解で合っていますか?

このインジケーターを作成した際のパラメータを教えてください。

 
Slava:

次の質問です。CCIインジケーターからデータを取っているという理解で合っていますか?

このインジケーターを作成した際のパラメータを教えてください。

//--- активируем хендл индикатора CCI
   handle_CCI = iCCI(Symbol(),0,14,PRICE_TYPICAL);
   if(handle_CCI==INVALID_HANDLE)                        // проверяем наличие хендла индикатора
   {
      Comment("Не удалось получить хендл индикатора");   // если хендл не получен, то выводим сообщение об ошибке
      return(-1);                                        // завершаем работу с ошибкой
   }
   ArraySetAsSeries(buf_CCI,true);                       // устанавливаем индексацию для массива buf_CCI как в таймсерии
 
Сергей Таболин:

変数 = 33

М15

4003 -システム関数を呼び出すときに、パラメーターが無効 です。

ちょうど33?これは、エラー4003を返す33の直接値を使用した直接コールですか?

もう一度確認する

 
Slava:

ちょうど33?エラー4003を返すのは、33の直接値を使用した所定の直接呼び出しでしょうか?

もう一度確認する

int OnInit()
{
............
//--- количество баров для определения трендов CCI
   bars_4_tr_cur  = 33;
............
//+--------
   return(INIT_SUCCEEDED);
}

もう一度。アップデート前は、3つのブローカーのデモ口座でEAが問題なく動作していましたが、アップデート後は、3つのブローカーのデモ口座でEAが問題なく動作するようになりました。

インジケーターを以前のバージョンから入れ替えようとしたこともありました。今も叫んでいます。

 

もう、わかったから。

保存されたパラメータファイルの読み込みにエラーが発生しました。

そうでした。

      if(filehandle != INVALID_HANDLE)

変更後、動作するようになりました。

      if(FileIsExist(filename,FILE_COMMON) && filehandle != INVALID_HANDLE)
 
Сергей Таболин:

もう一度言います。アップデート前は、3つのブローカーのデモ口座でEAが問題なく動作していましたが、アップデート後は、3つのブローカーのデモ口座でEAが問題なく動作するようになりました。

インジケーターを以前のバージョンから入れ替えようとしたこともありました。悪態をついて、それでおしまい。

このEAを実行してください。

iCCIインジケータの データを受信するのは、あえて毎ティックではなく、0から33までのバーをループで受信するように設定しました。

ファイル:
iCCI.mq5  11 kb