Analogue à iBarShift - page 13

 
Nikolai Semko:

Indicateur montrant les performances de la fonction iBars par rapport aux barres intégrées et à la fonction iBarShift de @Alain Verleyen
Temps d'exécution de la fonction en microsecondes.


Ce n'est pas l'endroit où aller - allez sur la kodobase. iBars() et iBarShift()

 
Nikolai Semko:

La fonction iBars, bien qu'elle soit plutôt encombrante, je la recommande toujours à la place des barres normales jusqu'à ce que MQ corrige le bogue qui la bloque.

Vous pouvez encore l'accélérer en procédant comme suit.

start_time -= start_time % PeriodSeconds(timeframe);
TimeCur -= TimeCur % PeriodSeconds(timeframe);

L'iBar se bloque alors que logiquement elle devrait retourner 0. En règle générale, il le renvoie pendant plus de 10 secondes. Ce bogue n'existe pas dans MQL4.

Cet appel

SeriesInfoInteger(symbol_name,timeframe,SERIES_LASTBAR_DATE)

Il fonctionne de manière incorrecte - il provoque le chargement de l'historique alors qu'il ne devrait pas exister. D'où les décalages (voir l'apparence des fichiers hcc).

 
Nikolai Semko:

Un indicateur montrant la performance de la fonction iBars par rapport aux barres intégrées et à la fonction iBarShift de @Alain Verleyen
Temps d'exécution de la fonction en microsecondes.

Encore une fois, la performance doit être mesurée là où elle est nécessaire - l'Optimiseur.

 
Artyom Trishkin:

Pas ici - dans la kodobase. Les fonctions iBars() et iBarShift()

Oui, j'en ai l'intention. Testons-le pour l'instant.

 
fxsaber:

Vous pouvez également l'accélérer en effectuant les opérations suivantes

Start_time y est déjà implémenté depuis le début, mais avecTimeCur, vous pouvez l'accélérer un peu. Je le ferai. Merci.

D'ailleurs, il n'est bon que de M1 à D1. W1 doit être déplacé de trois jours car le 01.01.1970 est un jeudi. Et avec MN1, vous devez jouer avec les diamants, car le mois compte 28, 29, 30, 31 jours.

Cet appel

Cet appel ne fonctionne pas correctement - il entraîne l'échange de l'historique alors qu'il ne devrait pas l'être. D'où les décalages (vous pouvez voir l'apparition des fichiers hcc).

Étrange, je n'ai jamais vu un tel comportement.

fxsaber:

Encore une fois, la performance doit être mesurée là où elle est nécessaire - Optimizer.

Qu'entendez-vous par optimiseur ?

 
Nikolai Semko:

Avecstart_time il y a déjà une implémentation dès le départ

Mis en œuvre avec une erreur. Par exemple, M1 starttime == D'12:00:05'. Le temps d'arrêt doit également être effectué.

Qu'entendez-vous par optimiseur ?

Mode d'optimisation dans le testeur.

 
fxsaber:

Mis en œuvre avec une erreur. Par exemple, M1 starttime == D'12:00:05'. Le temps d'arrêt doit également être effectué.

Expliquez quelle est l'erreur ? Et pourquoi seulement l'heure et où est la date ?

Bars et iBars donnent 0 pour ce format.

 
Nikolai Semko:

Expliquez quelle est l'erreur ? Et pourquoi seulement l'heure et où est la date ?

J'étais trop paresseux pour écrire la date.

t=start_time-(start_time-1)%PerSec;

Remplacez start_time par un nombre non nul de secondes dans une minute dans cette ligne.

 
fxsaber:

J'étais trop paresseux pour écrire la date.

Dans cette ligne, remplacez start_time par un nombre non nul de secondes dans une minute.

C'est bon. Ce n'est pas une erreur. Il devrait l'être.

Essayez d'exécuter le code comme ceci :

   Print(Bars(_Symbol,PERIOD_M1,D'2018.04.04 18:00:00',UINT_MAX));
   Print(Bars(_Symbol,PERIOD_M1,D'2018.04.04 18:00:01',UINT_MAX)); //результат на единицу меньше
 
Nikolai Semko:

C'est bon. Ce n'est pas une erreur. Il devrait l'être.

Essayez d'exécuter un code comme celui-ci :

Alors je ne comprends pas pourquoi Bars pense que 18:00:01 appartient à M1-bar 18:01 et non 18:00.


Au fait, TimeCurrent devrait être remplacé par SYMBOL_TIME.