Bonne journée à vous tous.
Il est nécessaire de tester l'algorithme de trading sur les ticks réels du courtier "Otkritie".
Ainsi, l'algorithme montre des résultats différents en mode en ligne et dans le testeur en mode ticks réels.
C'est pourquoi l'étape suivante est la collecte des ticks en temps réel (ticks réels) et leur comparaison avec l'historique des ticks (ticks historiques), obtenu par la fonction CopyTicksRange().
Les tiques ont été collectées sur les contrats à terme du SBRF pour le 21.01.2020.
Des résultats intéressants ont été obtenus et certaines questions ont été soulevées.
1. Le nombre de ticks réels et de ticks historiques diffère considérablement, mais il y a les mêmes ticks au début et à la fin de la journée de négociation.
Peut-être est-ce dû à une caractéristique du gestionnaire OnTick(), qui peut sauter le traitement des ticks.
2. plus de la moitié des ticks historiques, en plus des drapeaux standards (TICK_FLAG_BID ... etc.) ont un drapeau supplémentaire inclus de 9 bits.
Nous ne le voyons pas dans les ticks réels - il n'y a pas un seul tick avec le drapeau 9 bits activé.
3. Nous n'avons pas trouvé de différence systématique entre les ticks réels et historiques, ainsi que l'inclusion du bit 9 dans les ticks historiques.
Les ticks historiques peuvent tout à fait correspondre à des ticks réels, et le 9e bit de leur drapeau peut être activé ou désactivé.
Les ticks réels et historiques peuvent être incohérents même pendant les périodes de faible activité commerciale, lorsque la réception de ticks dans le terminal n'est pas aussi intensive.
Et les questions sont en conséquence :
Aux développeurs - que signifient 9 bits dans un drapeau à tic-tac ?
Et à la communauté - quelqu'un a-t-il rencontré une telle collision ?
Comment tester les algorithmes sur des ticks réels ? Seulement en ligne ?
Vous trouverez ci-joint des fichiers avec le collecteur et l'analyseur de tics.
Et des ticks réels sur SBRF-3.20 pour le 21.01.2020.
Vous m'avez fait rire avec votre collectionneur de tiques :)
Prenez comme base "l'homme à tout faire".
https://www.mql5.com/ru/code/16210
Complété
Et oubliez le testeur pour les instruments d'échange
- www.mql5.com
Vous me faites rire avec votre collectionneur de tiques :)
Prenez comme base "All Transactions Feed".
https://www.mql5.com/ru/code/16210
Complété
Et oubliez le testeur pour les instruments d'échange
L'exemple ci-dessus n'est qu'une façon d'agréger la bande des transactions, et encore une fois la référence est à l'historique.
Ce que je ne voudrais pas faire, car cela ralentit l'algorithme. Tout d'abord, nous sommes intéressés par les ticks qui sont traités par l'événement OnTick().
Oublier le testeur pour MetaTrader en général ou le testeur dans MT5 ?
Cet exemple n'est qu'une des méthodes d'agrégation des métiers, et il s'agit là encore d'une référence à l'histoire.
1. ce que vous ne voudriez pas faire, car cela ralentit l'algorithme. Tout d'abord, nous sommes intéressés par les ticks qui sont traités par l'événement OnTick().
2. Oublier le testeur pour les instruments d'échange en principe ou le testeur dans MT5 ?
1. Rien ne ralentit et rien ne ralentira.
Vous avez reçu une solution toute prête, qu'il suffit d'adapter à vos besoins.
L'événement OnTick() n'affiche pas tous les changements dans la pioche, c'est-à-dire qu'il ne prend pas en compte tous les ticks!
Voici un exemple simple que vous pouvez vérifier
//+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { Print(__FUNCTION__ + " Tick is done!"); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { Print(__FUNCTION__ + " Tick is done!"); } } //+------------------------------------------------------------------+
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!
2. Pour les instruments d'échange (déjà écrit pour les actions)
Ajouté
Si vous avez décidé de "ramper" du FOREX vers la Bourse, je vous recommande de trouver ce sujet dans le site suivant
La section "Aide pour les débutants" et lisez-la en détail.
Sur la Bourse, Glass, et non OnTick(), est la "tête" de tout.1. Rien ne ralentit et rien ne ralentira.
Vous avez reçu une solution toute prête, qu'il suffit d'adapter à vos besoins.
L'événement OnTick() n'affiche pas tous les changements dans le verre, c'est-à-dire que tous les ticks ne sont pas pris en compte !
Voici un exemple simple que vous pouvez vérifier
2. Pour les instruments négociables en bourse (déjà écrit pour les actions)
Ajouté
Si vous avez décidé de "ramper" du FOREX vers la Bourse, je vous recommande de trouver le sujet dans cette page.
section "Guide du débutant" et lisez-la en détail.
Sur la Bourse, Glass, et non OnTick(), est la "tête" de tout.1. Vous avez raison. L'événement OnTick() n'est pas exactement lié à l'événement OnBookEvent().
Le premier événement gère l'arrivée de nouveaux ticks - changement de cotation, opérations de change.
Le deuxième événement gère le changement de tick, qui ne se traduit pas toujours par une transaction boursière.
Comme l'opération d'échange ne passe pas nécessairement par le téléscripteur.
. C'est-à-dire que nous pouvons dire que le premier événement se réfère au téléscripteur de l'opération, et que le second événement se réfère au téléscripteur.
2. Ce qu'il faut utiliser pour l'analyse et la prise de décision - la bande de transactions ou le curseur ou les deux, dépend de l'algorithme de trading.
Il semble que je doive utiliser l'événement OnTimer() avec une période de quelques millisecondes pour analyser la bande.
Je vais continuer à expérimenter.
1. Vous avez raison. L'événement OnTick() n'est pas exactement lié à l'événement OnBookEvent().
Le premier événement gère l'arrivée de nouveaux ticks - changement de cotation, transactions boursières.
Le deuxième événement gère le changement de tick, qui ne se traduit pas toujours par une transaction boursière.
Un échange ne doit pas non plus nécessairement passer par la coupe.
C'est-à-dire que nous pouvons dire que le premier événement se réfère à la bande des métiers et le second à la coupe.
2. Le choix de l'analyse et de la prise de décision - le téléscripteur de la transaction, le marché ou les deux - dépend de l'algorithme de négociation.
Il semble que je doive utiliser l'événement OnTimer() avec une période de quelques millisecondes pour analyser la tranche d'affaires.
Je vais continuer à expérimenter.
L'utilisation d'un minuteur n'est pas une bonne idée.
Vous devez décider ce que vous voulez : travailler en temps réel ou par minuterie...
Votre tête est dans un état de confusion.
Tout changement dans la pile est un tick, ce qui inclut le "flux commercial".
Lorsque OnBookEvent() est déclenché, cela signifie que :
1. Un échange a eu lieu ou
2. Un nouvel ASK s'est produit ou
3. Un nouveau Bid est apparu, ou
4. Quelqu'un a retiré sa commande en cours ou
5. 5. demander le changement de volume ou
6 Le volume du Bid a changé
Tout ceci est reflété dans OnBookEvent() .....
Bonne chance !
Ajouté
Contrairement au FOREX, où vous négociez avec un ordinateur DC,
Sur le FOREX, vous avez de vrais adversaires (particuliers et entreprises) !
La bourse ne fait que "coupler" vos ordres(pas gratuitement, bien sûr :) ) .
- www.mql5.com
Contrairement au FOREX, où vous négociez avec un ordinateur DC,
Sur le FOREX, vous avez de vraies contreparties (de vrais individus et entreprises) !
La Bourse ne fait que "coupler" vos ordres(pas gratuitement, bien sûr :) ) .
Avez-vous entendu parler de l'ECN ?
- 2019.07.25
- www.mql5.com
Pourquoi es-tu venu ici ?
Continuez à chercher le graal sur le FOREX...
Quel est votre territoire privé ici ?
Et ce n'est pas poli de dire aux gens que vous ne savez pas quoi faire. Cela montre un peu le faible niveau de votre développement.
Aux développeurs - que signifie le bit 9 dans le drapeau de tique ?
Je ne sais pas pour le bit 9, la question portait sur le bit 7 non documenté :
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
Slava, 2018.12.04 11:09
Alain Verleyen:
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 2 tick : 2018.12.03 00 : 52 : 27.743 1.13335 / 1.13348 / 0.00000 0 flags :230
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 3 tick : 2018.12.03 00 : 52 : 27.821 1.13327 / 1.13343 / 0.00000 0 flags :230
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 4 tick : 2018.12.03 00 : 52 : 27.888 1.13326 / 1.13343 / 0.00000 0 flags :226
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 5 tick : 2018.12.03 00 : 52 : 27.965 1.13327 / 1.13345 / 0.00000 0 flags :230
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 6 tick : 2018.12.03 00 : 52 : 28.194 1.13328 / 1.13346 / 0.00000 0 flags :230
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 7 tick : 2018.12.03 00 : 52 : 28.265 1.13328 / 1.13346 / 0.00000 0 flags : 96
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 8 tick : 2018.12.03 00 : 52 : 28.327 1.13326 / 1.13344 / 0.00000 0 flags :230
2018.12.03 09 : 58 : 06.898 TicksInfo (EURUSD, M5) EURUSD : 9 tick : 2018.12.03 00 : 52 : 28.405 1.13326 / 1.13344 / 0.00000 0 flags : 96
2018.12.03 09 : 58 : 06.899 TicksInfo (EURUSD, M5) EURUSD : 10 tick : 2018.12.03 00 : 52 : 28.809 1.13326 / 1.13344 / 0.00000 0 flags : 96
2018.12.03 09 : 58 : 06.899 TicksInfo (EURUSD, M5) EURUSD : 11 tick : 2018.12.03 00 : 52 : 29.289 1.13326 / 1.13344 / 0.00000 0 flags : 96
Apparemment le drapeau est bit par bit 7 (valeur 128,non documenté), est-il possible de connaître la valeur ?
Il s'agit d'un indicateur de service qui est activé par le datafeed si le drapeau TICK_FLAG_BID n'a pas été activé pour une raison quelconque, alors que le tick doit être appliqué à une barre.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonne journée à vous tous.
Il est devenu nécessaire de tester l'algorithme de trading sur des ticks réels du courtier "Otkritie".
Ainsi, l'algorithme montre des résultats différents dans le mode en ligne et dans le testeur dans le mode des ticks réels.
En partant de là, l'étape suivante a été la collecte des ticks en ticks réels et leur comparaison avec l'historique (ticks historiques), obtenu par la fonction CopyTicksRange().
Les tiques ont été collectées sur les contrats à terme du SBRF pour le 21.01.2020.
Des résultats intéressants ont été obtenus et certaines questions ont été soulevées.
1. Le nombre de ticks réels et de ticks historiques diffère considérablement, mais il y a les mêmes ticks au début et à la fin de la journée de négociation.
Peut-être est-ce dû à une caractéristique du gestionnaire OnTick(), qui peut sauter le traitement des ticks.
Plus de la moitié des ticks historiques, en plus des drapeaux standards (TICK_FLAG_BID ... etc.) ont un drapeau supplémentaire activé 9 bits.
Nous ne le voyons pas dans les ticks réels - il n'y a pas un seul tick avec le drapeau 9 bits activé.
3. Nous n'avons pas trouvé de différence systématique entre les ticks réels et historiques, ainsi que l'inclusion du bit 9 dans les ticks historiques.
Les ticks historiques peuvent tout à fait correspondre aux ticks réels, et le 9e bit de leur drapeau peut être activé ou désactivé.
Les ticks réels et historiques peuvent être incohérents même pendant les périodes de faible activité commerciale, lorsque la réception de ticks dans le terminal n'est pas aussi intensive.
Et les questions sont en conséquence :
Aux développeurs - que signifient les 9 bits du drapeau tique ?
Et à la communauté - quelqu'un a-t-il rencontré une telle collision ?
Comment tester les algorithmes sur des ticks réels ? Seulement en ligne ?
Ci-joint les fichiers avec le collecteur et l'analyseur de tics.
Et des ticks réels sur SBRF-3.20 pour le 21.01.2020.