mql5言語の特徴、微妙なニュアンスとテクニック - ページ 27

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

fxsaber さん 2017.02.07 13:41

インジケーターのSymbolInfoTickは、EAとは全く異なる動作をします。

インジケータでは、OnCalculateコールの開始点であるティックを常に返します。そして、インジケーターのこのイニシエーター・ティックを省略してはならない、これが開発者の思想です。問題は、このダニの行列の形成にある。

Expert Advisor では、OnTick の SymbolInfoTick は、OnTick の呼び出しを開始したティックを返さず、現在の状態を完全に要求します。

 
fxsaber

つまりは

ティックバッチが到着すると、インジケータはパック全体から最初のティックを表示し、EAは最後のティックを表示します。

私の読みは正しいのでしょうか?

 
アルチョム・トリシキン

つまりは

ティックのパックが到着すると、インジケータはパック全体から最初のティックを表示し、EAは最後のティックを表示します。

正しく理解できているか?

はい。OnCalculateは、キューの順番でパックのティック ごとに呼び出されるわけではありません。
 
fxsaber
はい。OnCalculateは、キューの順番でパケットのティック ごとに呼び出されるわけではありません。

刻み目ごとに?なぜなら、あなたは書いていないのだから...

ティックのパケット到着で、インジケーターは到着したパケットのティックの順番にスタートすることが判明しましたか?

新しいバーのオープニングでパケットを受信した場合、このティックのパックの間に何回インジケータは完全な再計算を実行するのでしょうか?

 
アルチョム・トリシキン

刻み目ごとに?なぜなら、あなたが書いていないのだから...

たぶん、いろいろと書いていないんでしょうね。

ティックのパケット到着で、インジケーターは到着したパックのティックの順に起動することが判明したのですが?

新しいバーの開始時にパックが来た場合、このティックのパックの間に何回インジケータは完全な再計算を行うのでしょうか?

Calculateイベントは、EVERY TICKで 発生します。そのため、インジケータにはティックキューが存在します。一定量に達すると、ログにインジケーターが遅すぎるという警告が表示されます。

バーそのものはもともと指標であり、Calculate-eventによって形成される。したがって、TF M1で10:15:00.020のときに50msのパックが来た場合、その中の最初のティックはまだ時間10:14:59.970である。そして、すべてのインジケータは、このCalculateイベントで最初に呼び出されます。最初に時系列インジケータ、次にこれらの時系列を持つカスタムインジケータです。つまり、このレイアウトでは10時15分のバーがまだゼロバーとして形成されていないのです。そして、ゼロバーは10時14分です。


そして、Calculateイベントによってパックが巻き戻され始めると、10:15-バーも表示されるようになります。詳しく綴ったつもりです。

 
fxsaber

書いていないことがたくさんあるはずです。

Calculateイベントは、EVERY TICKで 生成されます。そのため、指標にはティックキューが存在します。一定量に達すると、ログにインジケーターが遅すぎるという警告が表示されます。

バー自体はもともとインジケータであり、Calculateイベントによって形成される。したがって、TF M1で10:15:00.020であり、50msのパックが来る場合、その中の最初のティックはまだ時間10:14:59.970を持っていることになります。そして、すべてのインジケータは、このCalculateイベントで最初に呼び出されます。最初に時系列インジケータ、次にこれらの時系列を持つカスタムインジケータです。つまり、このレイアウトでは10時15分のバーがまだゼロバーとして形成されていないのです。そして、ゼロバーは10時14分です。


そして、Calculateイベントでパックの巻き戻しが始まると、10:15-バーも表示されるようになります。詳しく綴ったつもりです。

ありがとうございます。
 

その結果、まだ形成されていないバーのティックをEAが受信するのはごく普通のことです。しかし、これはわざと再現するにも手間がかかるほど微妙な点です。一般的には、実用性よりも理論性が重視されます。


スピードに偏執的で あれば、インジケータ(もちろんバーも)を使うという選択肢はない。全てはEAの中にある。

 

fxsaber

そして、Calculateイベントによってパックが巻き戻され始めると、10:15-バーも表示されるようになります。詳しく綴ったつもりです。

興味深い情報です。
パックが到着したと判断し、そこから最初のティックを無視し、最後のティックのみを処理に取り込む方法はありますか?
 
Vasiliy Pushkaryov:
パックが来たことを検知して、そのパックの最初のティックを無視して、最後のティックだけを処理する方法はありますか?
CopyTicksを介したOnCalculateで
 
fxsaber
CopyTicksを介したOnCalculateで。
ありがとうございます、参考にさせていただきます。
理由: