Análogo a iBarShift - página 13

 
Nikolai Semko:

Indicador que muestra el rendimiento de la función iBars en comparación con las Barras incorporadas y la función iBarShift de @Alain Verleyen
Tiempo de ejecución de la función en microsegundos.


Este no es el lugar para ir - ir a la kodobase. Tanto iBars() como iBarShift()

 
Nikolai Semko:

La función iBars, aunque es bastante engorrosa, la sigo recomendando en lugar de las Barras normales hasta que MQ solucione el error de cuelgue que tiene.

Todavía puedes acelerarlo haciendo lo siguiente.

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

El iBar se cuelga cuando lógicamente debería devolver 0. Por regla general, lo devuelve durante más de 10 segundos. Este error no existe en MQL4.

Esta llamada

SeriesInfoInteger(symbol_name,timeframe,SERIES_LASTBAR_DATE)

Funciona de forma incorrecta: provoca la carga del historial cuando no debería existir. De ahí los retrasos (véase el aspecto de los archivos hcc).

 
Nikolai Semko:

Un indicador que muestra el rendimiento de la función iBars en comparación con las Barras incorporadas y la función iBarShift de @Alain Verleyen
Tiempo de ejecución de la función en microsegundos.

Una vez más, el rendimiento debe medirse donde se necesita: el optimizador.

 
Artyom Trishkin:

No aquí - en la kodobase. Tanto iBars() como iBarShift()

Sí, pienso hacerlo. Vamos a probarlo por ahora.

 
fxsaber:

También se puede acelerar haciendo lo siguiente

Start_time ya está implementado ahí desde el principio, pero conTimeCur se puede acelerar un poco. Lo haré. Gracias.

Por cierto, sólo sirve de M1 a D1. W1 tiene que moverse tres días porque el 01.01.1970 es jueves. Y con MN1 hay que jugar con los diamantes, porque un mes puede tener 28,29,30,31 días.

Esta llamada

Esta llamada no funciona correctamente - hace que el historial se intercambie cuando no debería. De ahí los retrasos (se puede ver la aparición de archivos hcc).

Extraño, no he visto ese comportamiento.

fxsaber:

De nuevo, el rendimiento debe medirse donde se necesita: el optimizador.

¿Qué quiere decir con optimizador?

 
Nikolai Semko:

Constart_time ya está implementado desde el principio

Implementado con un error. Por ejemplo, M1 starttime == D'12:00:05'. También hay que hacer el tiempo de parada.

¿Qué quiere decir con optimizador?

Modo de optimización en el probador.

 
fxsaber:

Implementado con un error. Por ejemplo, M1 starttime == D'12:00:05'. También hay que hacer el tiempo de parada.

¿Explique cuál es el error? ¿Y por qué sólo la hora y dónde está la fecha?

Bares y iBars dan 0 para este formato.

 
Nikolai Semko:

¿Explique cuál es el error? ¿Y por qué sólo la hora y dónde está la fecha?

Me daba pereza escribir la fecha.

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

Sustituya start_time por un número no nulo de segundos en un minuto en esta línea.

 
fxsaber:

Me daba pereza escribir la fecha.

En esta línea sustituya start_time por un número de segundos distinto de cero en un minuto.

No pasa nada. No es un error. Debería serlo.

Intenta ejecutar el código así:

   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:

No pasa nada. No es un error. Debería serlo.

Intenta ejecutar un código como este:

Entonces no entiendo por qué Bars piensa que las 18:00:01 pertenecen a la barra M1 18:01 y no a las 18:00.


Por cierto, TimeCurrent debería ser sustituido por SYMBOL_TIME.