Analogo a iBarShift - pagina 13

 
Nikolai Semko:

Indicatore che mostra le prestazioni della funzione iBars rispetto alle barre integrate e alla funzione iBarShift di @Alain Verleyen
Tempo di esecuzione della funzione in microsecondi.


Questo non è il posto dove andare - vai al kodobase. Sia iBars() che iBarShift()

 
Nikolai Semko:

La funzione iBars, anche se piuttosto ingombrante, la raccomando ancora al posto della normale Bars fino a quando MQ non risolve il bug di blocco in essa.

Potete comunque velocizzarlo facendo quanto segue.

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

L'iBar si blocca quando logicamente dovrebbe restituire 0. Di regola, lo restituisce per più di 10 secondi. Questo bug non esiste in MQL4.

Questa chiamata

SeriesInfoInteger(symbol_name,timeframe,SERIES_LASTBAR_DATE)

Funziona in modo errato - causa il caricamento della cronologia quando non dovrebbe esistere. Da qui i ritardi (vedi aspetto dei file hcc).

 
Nikolai Semko:

Un indicatore che mostra le prestazioni della funzione iBars rispetto alle barre integrate e alla funzione iBarShift di @Alain Verleyen
Tempo di esecuzione della funzione in microsecondi.

Anche in questo caso, la performance dovrebbe essere misurata dove è necessario - Optimiser.

 
Artyom Trishkin:

Non qui - nel kodobase. Sia iBars() che iBarShift()

Sì, ho intenzione di farlo. Mettiamolo alla prova per ora.

 
fxsaber:

Si può anche accelerare facendo quanto segue

Start_time è già implementato lì dall'inizio, ma conTimeCur si può velocizzare un po'. Sarà fatto. Grazie.

A proposito, è buono solo da M1 a D1. W1 deve essere spostato di tre giorni perché il 01.01.1970 è giovedì. E con MN1 bisogna giocare con i diamanti, perché un mese può essere di 28,29,30,31 giorni.

Questa chiamata

Questa chiamata non funziona correttamente - fa sì che la storia sia scambiata quando non dovrebbe esserlo. Da qui i ritardi (si può vedere l'aspetto dei file hcc).

Strano, non ho mai visto un comportamento simile.

fxsaber:

Di nuovo, le prestazioni dovrebbero essere misurate dove è necessario - Optimizer.

Cosa intende per ottimizzatore?

 
Nikolai Semko:

Constart_time c'è già implementato dall'inizio

Implementato con un errore. Per esempio, M1 starttime == D'12:00:05'. Anche lo stop deve essere fatto.

Cosa intende per ottimizzatore?

Modalità di ottimizzazione nel tester.

 
fxsaber:

Implementato con un errore. Per esempio, M1 starttime == D'12:00:05'. Anche lo stop deve essere fatto.

Spiegare qual è l'errore? E perché solo l'ora e dov'è la data?

Bars e iBars danno 0 per questo formato.

 
Nikolai Semko:

Spiegare qual è l'errore? E perché solo l'ora e dov'è la data?

Ero troppo pigro per scrivere la data.

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

Sostituisci start_time con un numero non nullo di secondi in un minuto in questa linea.

 
fxsaber:

Ero troppo pigro per scrivere la data.

In questa linea sostituite start_time con un numero non nullo di secondi in un minuto.

È tutto a posto. Non è un errore. Dovrebbe essere.

Prova ad eseguire il codice in questo modo:

   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:

È tutto a posto. Non è un errore. Dovrebbe essere.

Provate ad eseguire del codice come questo:

Allora non capisco perché Bars pensa che 18:00:01 appartenga a M1-bar 18:01 e non a 18:00.


A proposito, TimeCurrent dovrebbe essere sostituito con SYMBOL_TIME.

Motivazione: