一体どうなっているのでしょうか。 - ページ 2

 

違う仕掛けがあるんです。アドバイザーは、各時間のオープニングで売りを入れる。ユーロの場合は正常に動作しますが、カスタムシンボルの場合は、どのように動作するのか不明です。

ビジュアルモードで、一部のローソク足が表示されない


ファイル:
MySymbol.mq5  4 kb
Test.mq5  2 kb
 
Сергей Таболин:

これはもう一度、テスター/オプティマイザーについて...。

最適化テストと単体テストの結果に差異があることに気づいた。端末を再起動し、設定を変更(念のため)。最適化を開始。

1つのテストを実行する...

どうしてだろう?そんなバカな話がどこにあるんだ?

同じような感じでしたね。最適化のパスとパスの間で、変数が常に、またはすべてのパス前にあったように初期化されるわけではありません。すべてを初期化し始めたら、問題は解決しました。

また、iSARが原因で、最小限のステップで同じような問題が発生したことがありました。

 

あるクライアントが問題を抱えていた。彼のExpert Advisorはテスターでテストして結果を出していましたが、オプティマイザーではすべての実行がNULLでした。

彼のExpert Advisorの取引開始のアルゴリズムは、状況に応じて変化するボタンからのキャプションを読み取ることに基づいていた。最適化の際にグラフィカルなオブジェクトはレンダリングされないため、このリクエストは常に否定的な結果となりました。

Expert Advisor のアルゴリズムがグラフィカルなオブジェクトからのデータを使用している場合、テストと最適化の間に大きな違いが生じる可能性もあります。

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


どうですか?どちらも同じです。どうして違いがあるのでしょうか?特に、ほとんどすべてのデータはループの中で初期化されるからです。そして、そこで何かが初期化されていないと、エラーが発生します。


できれば-詳しく教えてください。ループ内の初期化を見てみたい。孫娘に見せようと思います。

 
もう二度とやらないために。
 
Алексей Тарабанов:

可能なら、もっと詳しく。ループの中の初期化を見てみたい。孫娘に見せようと思います。

int sum = 0;

for ()

  sum = 0;

  for ()

    sum += ....

というか、孫娘には意味が通じないでしょう。

int sum;

for ()

  sum = 0;

  for ()

    sum += ....
 
Andrey Barinov:
コードの中で何かを初期化するのを忘れるだけで、違いが出てくるのです。コードを確認する

もう一度すべてを確認したところ、すべての変数が初期化されていました。

Andrey Kaunov さん、ありがとうございます。

アレクセイ・タラバーノフ

できれば-詳しく教えてください。ループ内の初期化を見てみたい。孫娘に見せようと思います。

对于你好的东西,并且东西的东西。)ちょっとやりすぎましたね。もちろん全部ではなく、インジケーターハンドルだけですが ))))

int      ind_handle[];

int OnInit()
{
...........
   if(!nc_getHandles()) return(INIT_FAILED);
...........
}
//+------------------------------------------------------------------+
bool  nc_getHandles(void)
{
   ind_nums = ArraySize(indicators);
   ArrayResize(ind_handle, ind_nums);

   for(int i = 0; i < ind_nums; i++)
   {
      ind_handle[i]  = iCustom(Symbol(), Period(), folder+indicators[i]);
      if(ind_handle[i] == INVALID_HANDLE)
      {
         Print("Ошибка получения хандла индикатора >>> "+indicators[i]);
         writeErrorFile(program_name,program_version,"Ошибка получения хандла индикатора >>> "+indicators[i]);
         return(false);
      }
   }
   Print("Получены хэндлы всех индикаторов >> ",ArraySize(indicators));
//-----------------------------------
   return(true);
}
 

さて、本題です。

すべてのログとキャッシュを完全に消去しました。

エディタを起動し、Expert Advisorを再コンパイル。

端末を開いた。

遺伝的最適化を開始。

待機中...


1つのテストを実行する

パラメータが正しいかどうかをチェックします。

Backtestタブを開いてみる。

利益 - 697 / 247

トレード - 44 / 56.

これからログを集めて添付します。

ファイル:
mt5logs.zip  288 kb
 

コードを調べて、最適化の中でトランザクションに何が起こるのか、1回のウォークスルーで把握してみてください。

印刷を解除して、自分でファイルに入れる。

プログラムの中のロジックについてです。あなた以外の誰にも見えないから、助けも来ない。

 
Renat Fatkhullin:

コードを調べて、最適化の中でトランザクションに何が起こるのか、1回のウォークスルーで把握してみてください。

印刷を解除して、自分でファイルに入れる。

プログラムの中のロジックについてです。あなた以外の誰も見ることができず、したがって助けもない。

レナート ありがとうございます。しかし、オプティマイザでの2*2+2*3とシングルパスの違いを知らない人がいるとしたら、説明してください。せめて、具体的にどこに矛盾があるのか、ヒントを教えてください。

あと、せっかくなのでStrategy TesterのEAと実際の口座の 違いをどこでどう見つけるかヒントをください。

私は、自分の愚かさからか、書かれたコードは(エラーがあろうとなかろうと、最適化されていようとなかろうと)、コンパイルされているので、オプティマイザーでもテスターでも、実際のアカウントでも同じように動くはずだとずっと信じていました......。

では、普通のプログラマーの立場から、1つの(コンパイルされた)コードが、この3つの状態で実行されたときに、どこに、どのように、どのような手段で不明確な差異があるかを探せばいいのだろうか。

私は、ユーザーとして、1つの実行可能ファイルがオプティマイザとテスターで同じように動作しないことだけを参照してください、それは実際の生活の中で同じように動作することを意味します.......


ふと思ったのですが、もしEAをテストしているときに、それが...まあ、しょうがないですね。実際の取引に使ったら?それが聖杯だとしたら?))))