エラー、バグ、質問 - ページ 2436

 
Slava:

OnTesterDeinitで必ずフレームの読み込みを終了させる必要があります。私たちの「主の祈り」のようなものです。

何のために?

そして、フレームが欠けたと文句を言うのです。

私は何も失ってはいない。


このようなExpert Advisorを使用しても、mqd-fileは完璧に形成されます(損失なし)。

input int Range = 1; // 1..10

double OnTester()
{
  uchar Data[];
  
  FrameAdd(NULL, 0, 0, Data);
  
  return(0);
}


その後、追加されたタブ譜を経由して一気に読みました。

 
fxsaber:

なぜ?

私は何も失わない。


このようなExpert Advisorでも、mqdファイルは完璧に(損失なく)形成されています。


その後、追加されたタブラを介して一気に読みました。

最適化が完了してから読み込まないと、高速な数学計算でも フレームが失われる。

ネットワークは完璧ではない
Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
 
Slava:

最適化が完了した後に読み込みを終了しないと、高速な数学計算でも フレームが消えてしまいます。

ネットワークは完璧ではない

どうやら私のフレームに対する考え方は間違っているようですね、ナンセンスなことを言っているようで。

フレームは読まなくても書ける。では、実際にどうなのか、教えてください。クラウドを通してフレームを扱ったことはありません。

私が思うに、フレームはmqdファイルに追加して初めて利用可能になります。

 
fxsaber:

どうやら私のフレームに対する考え方は間違っているようですね、ナンセンスなことを言っているように見えますので。

フレームを読まなくても書き込める。では、実際にどうなのか、教えてください。クラウドを通してフレームを扱ったことはありません。

私が考えるに、フレームはmqdファイルに追加されて初めて利用可能になります。

その通りです。フレームは、mqdファイルに追加されていれば利用可能です。そこからフレーム機能で読み出されます。

 
Slava:

これは正しい。フレームは、mqdファイルに追加されている限り利用可能です。そこからフレーム機能で読み出されます。

それから、私の理解が正しければ、フレームロスを主張する人は、OnTesterDeinitでその存在を確認する必要があります。

そのような問題はありませんでした。このライブラリは、ターミナルでExpert Advisorの通常モードのフレームにアクセスするために書かれたものです。


最後の16バイトが何を担っているのか、理解できていません。

struct FRAME
{
  ulong Pass;
  long ID;
  short String[64];
  double Value;
  int SizeOfArray;
  long Tmp[2];
 
Slava:

OnTesterDeinitで必ずフレームの読み込みを終了させる必要があります。これは私たちの祖国のようなものです。

すると、フレームが欠けたと文句を言われる。

この「父の祈り」については、初めて知りました。どこにそんなことが書いてあるんだ?OnTesterDeinitは、端末ですべてのフレームを受信した後に呼ぶべきではありませんか?あるいは、イベントキューにある他のイベント(特にOnTesterPass)を飛び越える可能性がありますか? もしそうなら、これは非典型的な動作なので、ドキュメントに記載すべきです。

ユーザーによるテストの強制停止を意味するのであれば、フレームが消えるという話は全く意味がありません。

 
Alexey Navoykov:

この「Our Father」は初めて知りました。どこにそんなことが書いてあるんだ?OnTesterDeinitは、端末にすべてのフレームを受信した後に呼ばれるべきではありませんか?もしそうなら、非典型的な動作なので、ドキュメントに記載すべきです。

ユーザーによるテストの強制終了を意味するのであれば、フレームが消えるという話は意味がない。

OnTesterPassはパスの終了時に簡単に呼び出すことができますが、この時、ネットワークの不完全性によりフレームデータがパスに到達しない可能性があります。

フレームが失われるというのは、多くの場合、OnTesterPassがすべてをキャッチできないことを意味します。

OnTesterDeinitでは、ターミナル側のオプティマイザは、Agentがすべてをカウントしたときではなく、すべてのフレームが来るのを待ったときに作業を停止するので、常にすべてを取得することができます。

 
fxsaber:

OnTesterPassはパスの終了時に簡単に呼び出すことができますが、ネットワークが完全ではないため、この時点までにパスのフレームデータが到達しない可能性があります。

フレームが存在しない状態でOnTesterPassが呼ばれるのですか? それならこれは明らかなエラーです。 このイベントはフレームを受け取ることを意味し、パスの終わりを意味するものではありません。

すべてのフレームは、OnTesterDeinit イベントが呼ばれる前に OnTesterPass に到着している必要があります。これは正常な健全な論理です。また、強制的にテストが中断されるというのであれば話は別ですが。

 
Alexey Navoykov:

フレームが存在しない状態でOnTesterPassが呼ばれるのですか? それならこれは明らかなエラーです。 このイベントはフレームを受け取ることを意味し、パスの終わりを意味するものではありません。

すべてのフレームは、OnTesterDeinit イベントが呼ばれる前に OnTesterPass に到着している必要があります。これは正常な健全な論理です。また、強制的にテストが中断されるというのであれば話は別ですが。

どうやら私の思い違いだったようだ。TesterPassイベントをパスデータの到着と勘違いしていた

Core 1  pass 0 returned result 100000.00 in 0:00:00.433
Core 1  pass 1 returned result 100000.00 in 0:00:00.001
Core 1  pass 2 returned result 100000.00 in 0:00:00.001
Core 1  pass 3 returned result 100000.00 in 0:00:00.001
 
オプトフォーマットに割って入るのは誰なのか...。