リアルタイムで見るTiki - ページ 6

 
Andrey Khatimlianskii:

コード中の OnBookEventをOnTickに置き換えて、結果を比較してみてください。

結果を比較することはできません :)

結果を比較するためには、両方のEAを同時に 実行する必要があります。

でも、同じになることはもう分かっている、BUT

が、OnTick()を実行すると、時々 結果に遅延が 発生します。

つまり、リアルタイムではありません。

 
prostotrader:

結果を比較することはできません :)

結果を比較するためには、両方のEAを実行する必要があります。

でも、同じになることはもう分かっている、BUT

OnTick()の場合のみ、結果に遅延が 発生します。

つまり、リアルタイムではありません。

遅れることはないでしょう。逆に、多くの楽器を購読してスタックを更新 する場合は、OnTick の方が速く動作する場合があります。比較することを怠ってはいけない。

 
Andrey Khatimlianskii:

遅れることはありません。逆に、多くの商品の株価更新を購読している場合は、OnTickの方が速く動作する場合があります。比較することを面倒くさがらないでください。

そして、可能な限りすべてのステークを購読してみてはいかがでしょうか。

他にも思いつくことがあるはずです。

単一ティックサブスクリプションの単一ツールでは、OnTick()よりもOnBookEvent()の方が頻繁にトリガーされる。

2020.01.23 16:56:53.226	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.226	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.712	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.712	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.930	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:53.996	Ticks_test (GOLD-3.20,M1)	OnTick Tick is done!
2020.01.23 16:56:53.996	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.016	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.280	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!
2020.01.23 16:56:54.392	Ticks_test (GOLD-3.20,M1)	OnBookEvent Tick is done!

新しいティックのパックが到着 - OnBookEvent()がトリガーされます。

私のバージョンが気に入らないなら、自分で書けばいい。

ちなみに、結果は84個のタンブラーがリアルにサインしてくれて、高くなりました!

追加

詳しくはこちら

//+------------------------------------------------------------------+
//|                                                  Test_freeze.mq5 |
//|                                     Copyright 2018, prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
bool is_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
    //int fr_level = int(SymbolInfoInteger(Symbol(), SYMBOL_TRADE_FREEZE_LEVEL));
   // Print(__FUNCTION__, ": ", Symbol(), " Freeze level is ", fr_level);
   is_book = MarketBookAdd(Symbol());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  if(is_book == true) MarketBookRelease(Symbol());
}
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnTick()
{
  Print(__FUNCTION__, " Tick is done!");
}
//---
void OnBookEvent(const string &symbol)
{
  if(Symbol() == symbol)
  {
    Print(__FUNCTION__, " Tick is done!");
  }
}


2020.01.30 19:31:11.112 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.113 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.132 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.192 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.199 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.219 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.249 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.261 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.309 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.323 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.414 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.433 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.539 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.667 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.703 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.789 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.802 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.809 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.821 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.949 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.950 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.049 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.122 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.201 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.292 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:12.293 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.314 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:12.315 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.336 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.350 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.372 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.412 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.433 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.491 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.577 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.740 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.799 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.862 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:12.992 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!

追加

そして、今日も一日頑張ろう!

空想と思い込みしかない、そして

私は7年間ロボットを作成 し、FORTS +で取引を成功させた経験を持っています。

具体的に動くコードがある

Как заказать торгового робота на MQL5 и MQL4
Как заказать торгового робота на MQL5 и MQL4
  • www.mql5.com
Главным преимуществом торговых терминалов MetaTrader является возможность создания автоматических торговых систем, способных совершать торговые операции без вмешательства трейдера, что позволяет исключить влияние психологии на результаты торговли. Для этого нужно сформулировать торговую стратегию и реализовать ее в виде программы на языке MQL...
 

コードに間違いがありました。

P5を訂正して掲載

https://www.mql5.com/ru/forum/331060/page5#comment_14783678

Тики в реальном времени
Тики в реальном времени
  • 2020.01.30
  • www.mql5.com
Всем доброго времени суток. Появилась необходимость протестировать торговый алгоритм на реальных тиках брокера "Открытие...
 
prostotrader:

可能な限りのタンブラーを登録してみてはいかがでしょうか。

他のものを考えてもいい。

1つのグラスサブスクリプションのあるツールでは、OnTick()よりもOnBookEvent()の方が頻繁にトリガーされる。

OnBookEventのイベントがいくつ来ても、何か違いがあるのでしょうか?ティックを受信するとOnTickより早く発生するとのことですね。そして、これを確認するために、あちこちでティックを受信した時間を出力することを提案しました(ただ、同じEAではありません)。


プロストトレーダー

そして、そこで終わりにしよう!

空想と思い込みしかない、そして

そして、私は7年間ロボットを書き、FORTS +で取引を成功させた経験を持っています。

具体的な動作コードがある

すべてのメッセージに響く堂々としたものですね。なぜFORTSはOnBookEventからしか動かないと決めたのか、それはあなただけが知っています。

でも、コードには敬意を。時間を見つけては、私のも掲載します。これは優先すべきタスクではありません。

 
Andrey Khatimlianskii:

OnBookEventのイベントが何個届くと、どんな違いがあるのでしょうか?その中でティックが受信されると、OnTickよりも早く発生するとのことですが、どうなのでしょうか? そして、それを確認するために、あちこちでティックを受信するタイミングを出力することを提案しました(ただ、同じEAではありません)。


あなたは、どの記事も堂々としていますね。なぜFORTSはOnBookEventからしか動かないと決めたのか、それはあなただけが知っています。

でも、コードには敬意を。時間を見つけては、私のも掲載します。これは優先すべきタスクではありません。

好きなことをやりつくせる!

FORTSに携わった経験をもとに、私の解決策を掲載しました。

自分の行動、話し方に自信が ありすぎたと言われれば、納得してしまいますが。

経験が なければ同意する。

2020.01.30 19:31:11.112 Test_freeze (BR-3.20,M1)        OnTick Tick is done!
2020.01.30 19:31:11.113 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.132 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.192 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.199 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.219 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.249 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.261 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.309 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.323 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.414 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.433 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.539 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.667 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.703 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.789 Test_freeze (BR-3.20,M1)        OnBookEvent Tick is done!
2020.01.30 19:31:11.802 Test_freeze (BR-3.20,M1)        OnTick Tick is done!

最初のOnTick()の時刻2020.01.30 19:31:11.112

秒の時間 OnTick()2020.01.30 19:31:11.802

つまり、690msが経過しており、その間、この690msのOnTick()

OnBookEvent()が15回発生した

これらのトリガーはダニとは 関係ないと思っているのでしょうか?

さて、OnBookEvent()のヘルプを読んでみましょう。

События BookEvent никогда не пропускаются и всегда ставятся в очередь, даже если в данный момент еще не закончена обработка предыдущего события BookEvent.
При этом необходимо иметь в виду, что события BookEvent доставляются сами по себе и не несут с собой состояния стакана заявок.
Это означает, что вызов MarketBookGet() из обработчика OnBookEvent() позволяет получить текущее актуальное состояние стакана на момент вызова,
а не то состояние стакана, которое вызвало отправку события BookEvent.
Для гарантированного получения всех уникальных состояний стакана функция OnBookEvent() должна быть максимально быстрой. 

新しい ティックバッチが到着 - OnBookEvent()の起動が保証される - CopyTicks()でティックをリアルタイムで 取得する機会を提供します。

一方、OnTick()では、履歴からティックのみを取得することができます。

全部受け取って、何も足りない ものはないのですが、リアルタイムでは ありません。

経験 豊富な方に、ここまで詳しく説明するのはとても不思議なことです。

繰り返しになりますが、プログラミングや取引方法は、みなさんが自由に選ぶことができるのです

追加

もうひとつ、多くの人が忘れている大切なポイントがあります。

EAが入力データを解析して判断を下すまでのスピードです。

OnTick()の代わりにOnBookEvent()を使用すると、私のEAはあなたのEAより速く なります。

 
prostotrader:

最初の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の履歴)は更新されません。

 
fxsaber:

刻み値もプリントアウトしてください。上記のログでは、OnBookEventがMqlTickの構造 体の変化を捕らえたことがわかりません。

SellLimitをスプレッド外に設定した場合、OnBookEventイベントは発生しますが、取引やBestBid/BestAsk/BestVolumeの変更は発生しません。すなわち、INFOとLAST tickのテープ(CopyTicksの履歴)は更新されません。

なぜプリントアウトするのか?

OnBookEvent()の記述の1行目には、次のように書かれています。

Вызывается в индикаторах и экспертах при наступлении события BookEvent.
Функция предназначена для обработки изменений стакана цен (Depth of Market).
 
prostotrader:

なぜプリントアウトするのか?

OnBookEvent()の記述の1行目には、次のように書かれています。

1時間に何件のBookEventイベントが発生し、CopyTicksに何件のレコードがあるかを計測すれば、結論を出すことができる。

 
fxsaber:

1時間にどれだけのBookEventイベントが発生し、CopyTicksにどれだけのエントリーがあるかを計測すれば、推論が可能です。

上にコードがありますので、ご自身で確認してみてください。

動作するコードが あります。

リアルタイムで、確実に速く 動くと思います。

OnTick()よりも。

何が問題なのか?あれをやって、これをやって...。

証明するにも反証するにも、動作するコードを掲載しなければならないのです