Caractéristiques du langage mql5, subtilités et techniques - page 28

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

Renat Fatkhullin, 2017.03.31 09:10

Utilisez ArraySize pour les objets dynamiques et appliquez sizeof aux objets statiques uniquement. Sizeof compte au moment de la compilation et est toujours une constante.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) et SymbolIsSynchronized(_Symbol)

Slawa, 2017.04.04 08:05

Dans les experts et les scripts, lors de l'appel des fonctions de copie, plusieurs tentatives sont effectuées - la première date du serveur est vérifiée, la première date du terminal client est vérifiée, comparée à la date demandée, la synchronisation des symboles est vérifiée, une demande de reprise est envoyée, une petite attente et un cycle de vérification de la synchronisation. Si le symbole n'est toujours pas synchronisé, on donne ce qui l'est et satisfait aux conditions de la demande. La synchronisation de la série chronologique demandée n'est pas vérifiée car elle est effectuée à la volée lors de la pagination des données.

Dans les indicateurs, une seule demande est effectuée - pas de boucle ! Ensuite, tout ce qui a pu être pris est donné immédiatement.

 

Dans le testeur MT5 en mode "ticks réels", la base de l'historique n'est pas les ticks réels, mais les barres M1. Cela signifie que si les ticks réels ne correspondent pas à des barres, ils sont ignorés et remplacés par des ticks artificiels, qui doivent correspondre à des barres.

En même temps, si CopyTicks est demandé pour plus de 128K, alors dans le testeur, ils seront pris non pas dans le cache (ticks réels + générés), mais dans une base de données - ticks réels. Et obtenir un décalage dans le testeur de l'historique des tics et ce que le testeur a généré.

 
fxsaber:

Dans le testeur MT5 en mode "ticks réels", la base de l'historique n'est pas les ticks réels, mais les barres M1. Cela signifie que si les ticks réels ne correspondent pas à des barres, ils sont ignorés et remplacés par des ticks artificiels, qui doivent correspondre à des barres.

En même temps, si CopyTicks est demandé pour plus de 128K, alors dans le testeur, ils seront pris non pas dans le cache (ticks réels + générés), mais dans une base de données - ticks réels. Et obtenir un décalage dans le testeur entre l'historique des tics et ce que le testeur mettait en place.

Quelle horreur ! Est-ce vraiment le cas ? - Avez-vous écrit en SD ?

Que croire maintenant, comment vivre... (presque sans ironie triste)

 
Andrey Dik:

Quelle horreur ! C'est vraiment vrai ? - Vous l'avez écrit en SD ?

Il s'agit d'une paraphrase très abrégée des réponses des développeurs et non de ma demande à SR.
 
fxsaber:

En même temps, si CopyTicks est demandé pour plus de 128K pièces de bord,

Quel bord ? Les derniers 128K ?

Ou le premier ?

 
George Merts:

Quel est l'avantage ? 128K du dernier ?

Ou le premier ?


Le plus récent.
 
Andrey Dik:

Quelle horreur ! C'est vraiment vrai ? - Ont-ils écrit dans le SD ?

Que croire maintenant, comment vivre... (presque sans ironie triste)

https://www.mql5.com/ru/docs/runtime/testing#real_ticks
 

Dans les tests, les données minute sont considérées comme plus fiables.

Les barres de minutes sont-elles plus fiables ? Les données à cocher ne sont-elles pas le dernier recours ? Pourquoi avez-vous besoin de données réelles si elles ne sont pas prises en compte ?

J'étais naïf lorsque je testais sur des minutes, puis j'ai testé sur des ticks, puis sur de vrais ticks comme contrôle final de précision. Je comprends maintenant qu'il n'y a pas beaucoup de sens dans le troisième contrôle.

 
Andrey Dik:

Lors des tests, les données minute sont considérées comme plus fiables.

Les barres de minutes sont-elles plus fiables ? Les données à cocher ne sont-elles pas le dernier recours ? Pourquoi avons-nous besoin de données réelles si elles ne sont pas prises en compte ?

Naïvement, j'avais l'habitude de faire cela : je testais sur les minutes, puis sur les ticks, puis sur les vrais ticks comme contrôle final de précision. Je comprends maintenant que le troisième contrôle n'a pas beaucoup de sens.


Il n'y a pas besoin de sortir la phrase de son contexte. La phrase ressemble à ceci :

Pour assurer la plus grande précision dans les tests, les barres de minutes sont également utilisées dans le mode tick réel. Les données de la coche sont vérifiées et corrigées par eux. Il permet également d'éviter la divergence des graphiques dans le testeur de stratégie et dans le terminal client.

Le testeur vérifie la conformité des données tick avec les paramètres de la barre minute : un tick ne doit pas dépasser les prix High/Low, les ticks d'ouverture et de fermeture doivent coïncider avec les prix Open/Close de la barre. Le volume est également comparé. Si une correspondance est trouvée, tous les ticks correspondant à cette barre minute seront éliminés. Les ticks générés seront utilisés à la place (comme dans le mode "Tous les ticks").

S'il existe une barre de minutes dans l'historique des symboles, mais pas de données de ticks pour cette minute, le testeur générera des ticks en mode "All ticks". Cela permet au testeur de construire le graphique correct en cas de données de tick incomplètes chez le courtier.

S'il n'y a pas de barre de minute dans l'historique du symbole, mais qu'il existe des données en tick pour cette minute, elles peuvent être utilisées dans le testeur. Par exemple, les barres des symboles boursiers sont formées à partir des derniers prix. Si seuls les ticks avec les prix Bid/Ask arrivent du serveur sans les Last prices, la barre ne sera pas formée. Le testeur utilisera ces données en tick, car elles ne contredisent pas les données en minute.

Les données tick peuvent ne pas coïncider avec les barres minutes pour diverses raisons. Par exemple, en raison d'interruptions de connexion ou d'autres défaillances pendant la transmission des données de la source au terminal client. Lors des tests, les données minute sont considérées comme plus fiables.

Comme vous pouvez le constater, si vous n'essayez pas de manipuler, il s'avérera que vous avez mal interprété la référence.
Raison: