Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Gracias, tengo que arreglar mi código también cuando exact es true, ya que entendí mal este parámetro. Documentación en Inglés para iBarShift está mal.
Creo que este es mi error también, iBarShift debe devolver la barra que contiene el tiempo especificado (no con el tiempo exacto de apertura).
¿Podría utilizar su función en mi biblioteca (con sus derechos de autor, por supuesto)? Si es más rápido y correcto, ¿por qué debería reinventar la rueda)?
Creo que este es mi error también, iBarShift debe devolver la barra que contiene el tiempo especificado (no con el tiempo exacto de apertura).
¿Podría utilizar su función en mi biblioteca (con sus derechos de autor, por supuesto)? Si es más rápido y correcto, ¿por qué debería reinventar la rueda)?
Gracias, tengo que arreglar mi código también cuando exact es true, ya que entendí mal este parámetro. La documentación en inglés de iBarShift es incorrecta.
El error mql5 está en la función Bars(), lo he reportado al Service Desk.
La compilación 880 ha corregido el error en Bars(), y todo funciona bien ahora.
en m2 con m1 los valores en trudy, por alguna razon tienen valores no -1, y en barra cero hay un retorno a la barra 1.
La función está torcida en al menos dos sitios:
1) if(time>LastBar)
return(0);
Si exact=true, la lógica debería devolver -1 en caso de que el tiempo no pertenezca explícitamente a la última barra, es decir, si time>LastBar+PeriodSeconds(timeframe).
2) if(CopyTime(symbol,timeframe,time,1,checkcandle)==1)
...
return(-1);
De nuevo, si exact=false, se devolverá la barra más cercana, en este caso Bars(symbol,timeframe)-1.
Creo que hay un pequeño error en tu código:
Si el último tick 'abre' una nueva barra entonces if(time>LastBar) se convierte en falso - porque ahora time == LastBar
Y más tarde aterrizamos aquí
¡Y ahora shift == 0 que devuelve -1 en vez de 0!
Así que creo que esto
debería cambiarse a
Calli
Creo que hay un pequeño error en tu código:
Si el último tick 'abre' una nueva barra entonces if(time>LastBar) se convierte en falso - porque ahora time == LastBar
Y mas tarde aterrizamos aqui:
¡Y ahora shift == 0 que devuelve -1 en vez de 0!
Así que creo que esto
debería cambiarse por
Calli
Tu corrección también funcionaría, pero el caso 'time==LastBar' se procesa como un caso "normal".
La declaración
if(time>LastBar)se añadió como corrección de errores si el tiempo es mayor que el tiempo de la barra 0 actual.