Tiki in Echtzeit - Seite 6

 
Andrey Khatimlianskii:

Ersetzen Sie OnBookEvent in Ihrem Code durch OnTick, und vergleichen Sie das Ergebnis.

Man kann die Ergebnisse nicht vergleichen :)

Sie müssen beide EAs gleichzeitig ausführen, um die Ergebnisse zu vergleichen.

Aber ich weiß schon, dass es dasselbe sein wird, ABER

aber wenn ich OnTick() ausführe, kommt es manchmal zu einer Verzögerung der Ergebnisse,

d.h. nicht in Echtzeit.

 
prostotrader:

Man kann die Ergebnisse nicht vergleichen :)

Sie müssen beide EAs ausführen, um die Ergebnisse zu vergleichen.

Aber ich weiß schon, dass es dasselbe sein wird, ABER

nur wenn es sich um OnTick() handelt, kommt es zu einer Verzögerung der Ergebnisse,

d.h. nicht in Echtzeit.

Es wird keine Verzögerung geben. Im Gegenteil, wenn Sie viele Instrumente abonnieren, um den Stack zu aktualisieren, kann OnTick schneller arbeiten. Seien Sie nicht zu faul zum Vergleichen.

 
Andrey Khatimlianskii:

Es wird keine Verzögerung geben. Im Gegenteil, wenn Sie die Aktienaktualisierungen für viele Instrumente abonnieren, kann OnTick schneller arbeiten. Seien Sie nicht zu faul zum Vergleichen.

Und warum sollte man nicht alle möglichen Einsätze abonnieren?

Sie könnten sich etwas anderes einfallen lassen.

Bei einem einzelnen Werkzeug mit einem einzigen Tick-Abonnement wird OnBookEvent() häufiger ausgelöst als OnTick().

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!

Ein neues Paket von Zecken kommt an - OnBookEvent() wird ausgelöst.

Wenn Sie meine Version nicht mögen, schreiben Sie Ihre eigene.

Übrigens, das Ergebnis ist höher, mit 84 Bechern auf der realen unterzeichnet!

Hinzugefügt

Hier ist mehr

//+------------------------------------------------------------------+
//|                                                  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!

Hinzugefügt

Und das war's für heute!

Sie haben nur Fantasien und Annahmen, und

Ich habe 7 Jahre Erfahrung im Schreiben von Robotern und erfolgreichem Handel auf FORTS +

Ich habe einen konkreten Arbeitscode.

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

Es gab einen Fehler im Code.

Mit Korrekturen auf Seite 5 veröffentlicht

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

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

Warum melden Sie sich nicht für alle möglichen Zuhaltungen an, die möglich sind?

Sie könnten sich etwas anderes einfallen lassen.

Bei einem Werkzeug mit einem einzigen Glasabonnement wird OnBookEvent() häufiger ausgelöst als OnTick()

Welchen Unterschied macht es, wie viele OnBookEvent-Ereignisse eintreffen? Sie haben angegeben, dass der Empfang von Ticks früher als OnTick erfolgen soll. Und ich schlug vor, dies zu überprüfen, um die Zeit des Empfangs eines Ticks dort und dort auszugeben (nur nicht im selben EA).


Prostotrader:

Und das war's dann auch schon!

Sie haben nur Fantasien und Annahmen, und

Und ich habe 7 Jahre Erfahrung im Schreiben von Robotern und erfolgreichen Handel auf FORTS +

Ich habe einen speziellen Arbeitscode.

Sie haben die Souveränität, die in all Ihren Botschaften widerhallt. Warum Sie beschlossen haben, dass FORTS nur mit OnBookEvent funktionieren kann, wissen nur Sie.

Aber Respekt vor dem Kodex. Wenn ich die Zeit finde, werde ich meinen Beitrag veröffentlichen. Dies ist keine vorrangige Aufgabe.

 
Andrey Khatimlianskii:

Welchen Unterschied macht es, wie viele OnBookEvent-Ereignisse eintreffen? Sie haben angegeben, dass der Empfang eines Tick früher als bei OnTick erfolgt. Und ich schlug vor, dass Sie es überprüfen, geben Sie die Zeit des Empfangs einer Zecke dort und dort (nur nicht in der gleichen EA).


Sie haben eine Souveränität, die in jedem Beitrag widerhallt. Warum Sie beschlossen haben, dass FORTS nur mit OnBookEvent funktionieren kann, wissen nur Sie.

Aber Respekt vor dem Kodex. Wenn ich Zeit finde, werde ich meinen Beitrag veröffentlichen. Dies ist keine vorrangige Aufgabe.

Sie können durcharbeiten, was Sie wollen!

Ich habe meine Lösung veröffentlicht, die auf meiner Erfahrung mit FORTS beruht.

Ich würde Ihnen zustimmen, wenn ich sagen würde, dass ichin meinem Verhalten, in meiner Rede zuselbstsicher war.

Ich würde Ihnen zustimmen, wenn ich keine Erfahrung hätte.

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!

Zeitpunkt des ersten OnTick()2020.01.30 19:31:11.112

Zeit der Sekunde OnTick()2020.01.30 19:31:11.802

Das heißt, zwischen dem OnTick() dieser 690 ms sind inzwischen 690 ms vergangen

OnBookEvent() wurde 15 Mal ausgelöst

Glauben Sie, dass diese Auslöser nichts mit Zecken zu tun haben?

Nun, lesen Sie die OnBookEvent()-Hilfe.

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

Ein neuer Tick-Stapel trifft ein - OnBookEvent() wird garantiert ausgelöst - dies bietet die Möglichkeit, die Ticks in Echtzeit mit CopyTicks() zu erhalten.

Mit OnTick() können Sie hingegen nur Ticks aus der Historie abrufen.

Sie erhalten sie alle und es fehlt an nichts, aber nicht in Echtzeit.

Es ist sehr seltsam, dass ich das alles jemandem, der viel Erfahrung hat, so detailliert erklären muss.

Auch hier steht es jedem frei, die Programmierung und die Handelsmethoden zu wählen , die ihm gefallen!

Hinzugefügt

Es gibt einen weiteren wichtigen Punkt, den viele Menschen vergessen.

Dies ist die Geschwindigkeit, mit der der EA durch Analyse der Eingabedaten eine Entscheidung trifft.

Wenn Sie OnBookEvent() anstelle von OnTick() verwenden, wird mein EA schneller sein als Ihrer.

 
prostotrader:

Zeitpunkt des ersten OnTick()2020.01.30 19:31:11.112

Zeit der Sekunde OnTick()2020.01.30 19:31:11.802

Das heißt, zwischen dem OnTick() dieser 690 ms sind inzwischen 690 ms vergangen

OnBookEvent() wurde 15 Mal ausgelöst

Glauben Sie, dass diese Auslöser nichts mit Zecken zu tun haben?

Bitte drucken Sie auch die Werte der Häkchen aus. Aus dem obigen Protokoll ist nicht ersichtlich, dass OnBookEvent eine Änderung in der MqlTick-Struktur erfasst hat.

Wenn Sie SellLimit außerhalb der Spanne setzen, wird ein OnBookEvent-Ereignis ausgelöst, aber es wird kein Handel oder keine Änderung von BestBid/BestAsk/BestVolume erzeugt. D.h. INFO und LAST tick Bänder (CopyTicks Geschichte) werden nicht aktualisiert.

 
fxsaber:

Drucken Sie bitte auch die Häkchenwerte aus. Aus dem obigen Protokoll geht nicht hervor, dass OnBookEvent die Änderung der MqlTick-Struktur erfasst hat.

Wenn SellLimit außerhalb des Spreads gesetzt wird, wird ein OnBookEvent-Ereignis erzeugt, aber es wird kein Handel oder keine BestBid/BestAsk/BestVolume-Änderung erzeugt. D.h. INFO und LAST tick Bänder (CopyTicks Geschichte) werden nicht aktualisiert.

Warum drucken Sie es aus?

In der ersten Zeile der OnBookEvent()-Beschreibung steht

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

Warum drucken Sie es aus?

In der ersten Zeile der OnBookEvent()-Beschreibung steht

Wenn Sie messen, wie viele BookEvent-Ereignisse in einer Stunde stattfinden und wie viele Einträge in CopyTicks, können Sie eine Schlussfolgerung ziehen.

 
fxsaber:

Wenn Sie messen, wie viele BookEvent-Ereignisse pro Stunde auftreten und wie viele Einträge in CopyTicks, können Sie daraus schließen.

Oben finden Sie den Code, überprüfen Sie ihn selbst.

Es gibt einen funktionierenden Code.

Ich glaube, es funktioniert in Echtzeit und sicherlich schneller,

als OnTick().

Was ist das Problem? Tu dies, tu das...

Sie müssen Ihren funktionierenden Code veröffentlichen, um etwas zu beweisen oder zu widerlegen!