Главным преимуществом торговых терминалов MetaTrader является возможность создания автоматических торговых систем, способных совершать торговые операции без вмешательства трейдера, что позволяет исключить влияние психологии на результаты торговли. Для этого нужно сформулировать торговую стратегию и реализовать ее в виде программы на языке MQL...
2020.01.3019:31:11.112 Test_freeze (BR-3.20,M1) OnTick Tick is done!
2020.01.3019:31:11.113 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.132 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.192 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.199 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.219 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.249 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.261 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.309 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.323 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.414 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.433 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.539 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.667 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.703 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.789 Test_freeze (BR-3.20,M1) OnBookEvent Tick is done!
2020.01.3019:31:11.802 Test_freeze (BR-3.20,M1) OnTick Tick is done!
最初のOnTick()の時刻2020.01.3019:31:11.112
秒の時間 OnTick()2020.01.3019:31:11.802
つまり、690msが経過しており、その間、この690msのOnTick()
OnBookEvent()が15回発生した
これらのトリガーはダニとは 関係ないと思っているのでしょうか?
さて、OnBookEvent()のヘルプを読んでみましょう。
События BookEvent никогда не пропускаются и всегда ставятся в очередь, даже если в данный момент еще не закончена обработка предыдущего события BookEvent.
При этом необходимо иметь в виду, что события BookEvent доставляются сами по себе и не несут с собой состояния стакана заявок.
Это означает, что вызов MarketBookGet() из обработчика OnBookEvent() позволяет получить текущее актуальное состояние стакана на момент вызова,
а не то состояние стакана, которое вызвало отправку события BookEvent.
Для гарантированного получения всех уникальных состояний стакана функция OnBookEvent() должна быть максимально быстрой.
コード中の OnBookEventをOnTickに置き換えて、結果を比較してみてください。
結果を比較することはできません :)
結果を比較するためには、両方のEAを同時に 実行する必要があります。
でも、同じになることはもう分かっている、BUT
が、OnTick()を実行すると、時々 結果に遅延が 発生します。
つまり、リアルタイムではありません。
結果を比較することはできません :)
結果を比較するためには、両方のEAを実行する必要があります。
でも、同じになることはもう分かっている、BUT
OnTick()の場合のみ、結果に遅延が 発生します。
つまり、リアルタイムではありません。
遅れることはないでしょう。逆に、多くの楽器を購読してスタックを更新 する場合は、OnTick の方が速く動作する場合があります。比較することを怠ってはいけない。
遅れることはありません。逆に、多くの商品の株価更新を購読している場合は、OnTickの方が速く動作する場合があります。比較することを面倒くさがらないでください。
そして、可能な限りすべてのステークを購読してみてはいかがでしょうか。
他にも思いつくことがあるはずです。
単一ティックサブスクリプションの単一ツールでは、OnTick()よりもOnBookEvent()の方が頻繁にトリガーされる。
新しいティックのパックが到着 - OnBookEvent()がトリガーされます。
私のバージョンが気に入らないなら、自分で書けばいい。
ちなみに、結果は84個のタンブラーがリアルにサインしてくれて、高くなりました!
追加
詳しくはこちら
追加
そして、今日も一日頑張ろう!
空想と思い込みしかない、そして
私は7年間ロボットを作成 し、FORTS +で取引を成功させた経験を持っています。
具体的に動くコードがある
コードに間違いがありました。
P5を訂正して掲載
https://www.mql5.com/ru/forum/331060/page5#comment_14783678
可能な限りのタンブラーを登録してみてはいかがでしょうか。
他のものを考えてもいい。
1つのグラスサブスクリプションのあるツールでは、OnTick()よりもOnBookEvent()の方が頻繁にトリガーされる。
OnBookEventのイベントがいくつ来ても、何か違いがあるのでしょうか?ティックを受信するとOnTickより早く発生するとのことですね。そして、これを確認するために、あちこちでティックを受信した時間を出力することを提案しました(ただ、同じEAではありません)。
そして、そこで終わりにしよう!
空想と思い込みしかない、そして
そして、私は7年間ロボットを書き、FORTS +で取引を成功させた経験を持っています。
具体的な動作コードがある
すべてのメッセージに響く堂々としたものですね。なぜFORTSはOnBookEventからしか動かないと決めたのか、それはあなただけが知っています。
でも、コードには敬意を。時間を見つけては、私のも掲載します。これは優先すべきタスクではありません。
OnBookEventのイベントが何個届くと、どんな違いがあるのでしょうか?その中でティックが受信されると、OnTickよりも早く発生するとのことですが、どうなのでしょうか? そして、それを確認するために、あちこちでティックを受信するタイミングを出力することを提案しました(ただ、同じEAではありません)。
あなたは、どの記事も堂々としていますね。なぜFORTSはOnBookEventからしか動かないと決めたのか、それはあなただけが知っています。
でも、コードには敬意を。時間を見つけては、私のも掲載します。これは優先すべきタスクではありません。
好きなことをやりつくせる!
FORTSに携わった経験をもとに、私の解決策を掲載しました。
自分の行動、話し方に自信が ありすぎたと言われれば、納得してしまいますが。
経験が なければ同意する。
最初のOnTick()の時刻2020.01.30 19:31:11.112
秒の時間 OnTick()2020.01.30 19:31:11.802
つまり、690msが経過しており、その間、この690msのOnTick()
OnBookEvent()が15回発生した
これらのトリガーはダニとは 関係ないと思っているのでしょうか?
さて、OnBookEvent()のヘルプを読んでみましょう。
新しい ティックバッチが到着 - OnBookEvent()の起動が保証される - CopyTicks()でティックをリアルタイムで 取得する機会を提供します。
一方、OnTick()では、履歴からティックのみを取得することができます。
全部受け取って、何も足りない ものはないのですが、リアルタイムでは ありません。
経験 豊富な方に、ここまで詳しく説明するのはとても不思議なことです。
繰り返しになりますが、プログラミングや取引方法は、みなさんが自由に選ぶことができるのです
追加
もうひとつ、多くの人が忘れている大切なポイントがあります。
EAが入力データを解析して判断を下すまでのスピードです。
OnTick()の代わりにOnBookEvent()を使用すると、私のEAはあなたのEAより速く なります。
最初のOnTick()の時刻2020.01.30 19:31:11.112
秒の時間 OnTick()2020.01.30 19:31:11.802
つまり、690msが経過しており、その間、この690msのOnTick()
OnBookEvent()が15回発生した
これらのトリガーはダニとは 関係ないと思っているのでしょうか?
ティックの値もプリントアウトしてください。上のログからは、OnBookEventがMqlTickの構造 体の変化を捉えたことがわかりません。
SellLimit をスプレッドの外側に置くと OnBookEvent イベントが発生しますが、取引や BestBid/BestAsk/BestVolume の変更は発生しません。すなわち、INFOとLAST tickのテープ(CopyTicksの履歴)は更新されません。
刻み値もプリントアウトしてください。上記のログでは、OnBookEventがMqlTickの構造 体の変化を捕らえたことがわかりません。
SellLimitをスプレッド外に設定した場合、OnBookEventイベントは発生しますが、取引やBestBid/BestAsk/BestVolumeの変更は発生しません。すなわち、INFOとLAST tickのテープ(CopyTicksの履歴)は更新されません。
なぜプリントアウトするのか?
OnBookEvent()の記述の1行目には、次のように書かれています。
なぜプリントアウトするのか?
OnBookEvent()の記述の1行目には、次のように書かれています。
1時間に何件のBookEventイベントが発生し、CopyTicksに何件のレコードがあるかを計測すれば、結論を出すことができる。
1時間にどれだけのBookEventイベントが発生し、CopyTicksにどれだけのエントリーがあるかを計測すれば、推論が可能です。
上にコードがありますので、ご自身で確認してみてください。
動作するコードが あります。
リアルタイムで、確実に速く 動くと思います。
OnTick()よりも。
何が問題なのか?あれをやって、これをやって...。
証明するにも反証するにも、動作するコードを掲載しなければならないのです