Tiki en temps réel - page 6

 
Andrey Khatimlianskii:

Remplacez OnBookEvent dans votre code par OnTick, et comparez le résultat.

On ne peut pas comparer les résultats :)

Vous devez exécuter les deux EA en même temps pour comparer les résultats.

Mais je sais déjà que ce sera la même chose, MAIS...

mais si je lance OnTick(), il y aura parfois un retard dans les résultats,

c'est-à-dire pas en temps réel.

 
prostotrader:

On ne peut pas comparer les résultats :)

Vous devez exécuter les deux EA pour comparer les résultats.

Mais je sais déjà que ce sera la même chose, MAIS...

seulement si c'est OnTick(), il y aura un retard dans les résultats,

c'est-à-dire pas en temps réel.

Il n'y aura pas de retard. Au contraire, si vous vous abonnez à de nombreux instruments pour mettre à jour la pile, OnTick peut fonctionner plus rapidement. N'ayez pas la flemme de comparer.

 
Andrey Khatimlianskii:

Il n'y aura pas de retard. Au contraire, si vous vous abonnez aux mises à jour des actions sur de nombreux instruments, OnTick peut fonctionner plus rapidement. Ne soyez pas trop paresseux pour comparer.

Et pourquoi ne pas souscrire à tous les enjeux possibles ?

Vous pourriez trouver autre chose.

Sur un seul outil avec un abonnement à un seul tick, OnBookEvent() est déclenché plus souvent que 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!

Un nouveau paquet de ticks arrive - OnBookEvent() est déclenché.

Si vous n'aimez pas ma version, écrivez la vôtre.

D'ailleurs, le résultat est supérieur, avec 84 tumblers signés sur le réel!

Ajouté

En voici plus

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

Ajouté

Et c'est parti !

Vous n'avez que des fantasmes et des suppositions, et

J'ai 7 ans d'expérience dans l'écriture de robots et le trading réussi sur FORTS +.

J'ai un code concret qui fonctionne.

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

Il y avait une erreur dans le code.

Publié avec des corrections à la page 5

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

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

Pourquoi ne pas s'inscrire pour toutes les culbutes possibles ?

Tu pourrais penser à autre chose.

Sur un outil avec un seul abonnement au verre, OnBookEvent() est déclenché plus souvent que OnTick().

Quelle différence cela fait-il de savoir combien d'événements OnBookEvent arrivent ? Vous avez déclaré que lorsqu'il reçoit des ticks, cela se produit avant OnTick. Et j'ai proposé de vérifier cela, de sortir le temps de réception d'un tick ici et là (mais pas dans le même EA).


prostotrader:

Et finissons-en là !

Vous n'avez que des fantasmes et des suppositions, et

Et j'ai 7 ans d'expérience dans l'écriture de robots et le trading réussi sur FORTS +.

J'ai un code spécifique qui fonctionne.

Vous avez l'aplomb qui se répercute dans tous vos messages. Pourquoi avez-vous décidé que les FORTS ne peuvent fonctionner qu'à partir de OnBookEvent - vous seul le savez.

Mais respect du code. Quand je trouverai le temps, je posterai le mien. Il ne s'agit pas d'une tâche prioritaire.

 
Andrey Khatimlianskii:

Quelle différence cela fait-il de savoir combien d'événements OnBookEvent arrivent ? Vous avez déclaré que lorsqu'un tick est reçu dans ce système, il se produit plus tôt que dans OnTick. Et je vous ai suggéré de le vérifier, de sortir le timing de réception d'un tick ici et là (mais pas dans la même EA).


Vous avez un aplomb qui se répercute dans chaque message. Pourquoi avez-vous décidé que FORTS ne peut fonctionner qu'à partir de OnBookEvent - vous seul le savez.

Mais respect du code. Quand je trouverai le temps, je posterai le mien. Il ne s'agit pas d'une tâche prioritaire.

Vous pouvez travailler sur ce que vous voulez !

J'ai posté ma solution, basée sur mon expérience de travail sur FORTS.

Je serais d'accord avec vous si je disais que j'étais tropconfiant dans mon comportement, dans mon discours.

Je serais d'accord avec vous si je n'avais pas d'expérience.

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!

Heure du premier OnTick()2020.01.30 19:31:11.112

Heure de la seconde OnTick()2020.01.30 19:31:11.802

C'est-à-dire que 690 ms se sont écoulées, pendant ce temps, entre le OnTick() de ces 690 ms

OnBookEvent() a été déclenché 15 fois

Pensez-vous que ces déclencheurs n'ont rien à voir avec les tiques?

Eh bien, lisez l'aide pour OnBookEvent()

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

Un nouveau lot de ticks arrive - le déclenchement de OnBookEvent() est garanti - cela permet d'obtenir les ticks en temps réel avec CopyTicks().

Alors qu'avec OnTick() vous pouvez obtenir seulement les ticks de l'historique.

Vous les recevez tous et rien ne manque, mais pas en temps réel.

Il est très étrange que je doive expliquer tout cela de manière aussi détaillée à quelqu'un qui a beaucoup d'expérience.

Encore une fois, chacun est libre de choisir la programmation et les méthodes de trading qui lui conviennent !

Ajouté

Il y a un autre point important que beaucoup de gens oublient.

Il s'agit de la vitesse à laquelle l'EA prend une décision en analysant les données d'entrée.

En utilisant OnBookEvent() au lieu de OnTick(), mon EA sera plus rapide que le vôtre.

 
prostotrader:

Heure du premier OnTick()2020.01.30 19:31:11.112

Heure de la seconde OnTick()2020.01.30 19:31:11.802

C'est à dire que 690 ms se sont écoulées, pendant ce temps, entre le OnTick() de ces 690 ms

OnBookEvent() a été déclenché 15 fois

Pensez-vous que ces déclencheurs n'ont rien à voir avec les tiques?

Veuillez également imprimer les valeurs des ticks. Le journal ci-dessus ne montre pas que OnBookEvent a détecté un changement dans la structure MqlTick.

Le fait de placer SellLimit à l'extérieur du spread créera un événement OnBookEvent, mais ne générera pas de transaction ni de modification de BestBid/BestAsk/BestVolume. C'est-à-dire que les bandes INFO et LAST tick (historique CopyTicks) ne seront pas mises à jour.

 
fxsaber:

Imprimez également les valeurs de coche, s'il vous plaît. Le journal ci-dessus ne montre pas que OnBookEvent a détecté le changement de structure de MqlTick.

Si SellLimit est défini en dehors du spread, cela créera l'événement OnBookEvent, mais ne générera pas de transaction ou de changement de BestBid/BestAsk/BestVolume. C'est-à-dire que les bandes INFO et LAST tick (historique CopyTicks) ne seront pas mises à jour.

Pourquoi l'imprimer ?

La première ligne de la description de la fonction OnBookEvent() dit ceci

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

Pourquoi l'imprimer ?

La première ligne de la description de OnBookEvent() indique que

Si vous mesurez le nombre d'événements BookEvent par heure et le nombre d'enregistrements dans CopyTicks, vous pouvez tirer une conclusion.

 
fxsaber:

Si vous mesurez combien d'événements BookEvent se produisent par heure et combien d'entrées dans CopyTicks, vous pouvez en déduire.

Il y a le code ci-dessus, vérifiez-le par vous-même.

Il y a un code qui fonctionne.

Je crois qu'il fonctionne en temps réel et certainement plus rapidement,

que OnTick().

Quel est le problème ? Fais ceci, fais cela...

Vous devez poster votre code de travail pour prouver ou réfuter quelque chose !