La situación es la siguiente: la variable X almacena el índice de la barra en el historial, sabemos que cuando aparece una nueva barra, hay un desplazamiento, y por tanto X ya apunta a una barra diferente. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomada en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Tal vez estoy pensando en el lugar equivocado?
Nerd Trader #: La situación es la siguiente: la variable X almacena el índice de la barra en el historial, sabemos que cuando aparece una nueva barra, hay un desplazamiento, y por tanto X ya apunta a una barra diferente. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomado en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Quizás estoy pensando en el lugar equivocado?
Si es un indicador, es suficiente
boolArraySetAsSeries(
constvoid& array[], // массив по ссылкеbool flag // true означает обратный порядок индексации
);
a todos los arrays y buffers del indicador utilizado.
Entonces la barra de cero se convertirá en rates_total-1
Nerd Trader #: La situación es la siguiente: la variable X almacena el índice de la barra en el historial, sabemos que cuando aparece una nueva barra, hay un desplazamiento, y por tanto X ya apunta a una barra diferente. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomada en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Quizás estoy pensando en el lugar equivocado?
datetime x=время нужного бара;
int index=iBarShift(_Symbol,0,x);
Nerd Trader #: La situación es la siguiente: la variable X almacena el índice de la barra en el historial, y sabemos que cuando aparece una nueva barra, ésta se desplaza y por tanto X ya apunta a otra barra. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomado en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Tal vez estoy pensando en el lugar equivocado?
No hay. No hay nada en X cuando se carga el EA/indicador si está dentro de la terminal, a menos que sea una variable intu o externa o global fuera de la terminal, por lo que hay que escribir algo allí primero. Y luego simplemente leemos los cambios del número total de barras (cuenta de la aparición de una nueva barra).
datetime BarTime;
FlagNewBar=false;
if(BarTime!=iTime(NULL,0,0))
{
BarTime=iTime(NULL,0,0);
FlagNewBar=true;
}
if(FlagNewBar==true)
{
// И когда тру, делаем что нужно делать когда появился новый бар, //на следующем тике флаг нового бара будет ложь, так как БарТайм время все время существования нулевого бара будет равным
}
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
La situación es la siguiente: la variable X almacena el índice de la barra en el historial, sabemos que cuando aparece una nueva barra, hay un desplazamiento, y por tanto X ya apunta a una barra diferente. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomado en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Quizás estoy pensando en el lugar equivocado?
Si es un indicador, es suficiente
a todos los arrays y buffers del indicador utilizado.
Entonces la barra de cero se convertirá en rates_total-1
La situación es la siguiente: la variable X almacena el índice de la barra en el historial, sabemos que cuando aparece una nueva barra, hay un desplazamiento, y por tanto X ya apunta a una barra diferente. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomada en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Quizás estoy pensando en el lugar equivocado?
¿Por qué tomarse tantas molestias?
Es más fácil para mí)
Pero el procesador es más pesado...
Pero el procesador es más pesado...
La situación es la siguiente: la variable X almacena el índice de la barra en el historial, y sabemos que cuando aparece una nueva barra, ésta se desplaza y por tanto X ya apunta a otra barra. ¿Cómo solucionarlo? La idea: con cada nueva barra aumentamos el contador (count++) y lo añadimos a X. Por lo tanto, X siempre apuntará a la misma barra independientemente del desplazamiento. Pero hay un problema - cuando el EA se inicializa la primera barra actual no debe ser tomado en cuenta. Creo que puede ser fácilmente resuelto si la cuenta es inicialmente igual a -1. Es decir, en la barra actual después de la cuenta de incremento será "0", y en la siguiente barra nueva (cuando el primer desplazamiento por 1 barra ha ocurrido después de la inicialización) será "1". ¿Qué te parece? ¿Tal vez estoy pensando en el lugar equivocado?
No hay. No hay nada en X cuando se carga el EA/indicador si está dentro de la terminal, a menos que sea una variable intu o externa o global fuera de la terminal, por lo que hay que escribir algo allí primero. Y luego simplemente leemos los cambios del número total de barras (cuenta de la aparición de una nueva barra).
datetime BarTime;
Saludos. ¿Puedes darme una pista? ¿Cómo en mt5 en la inicialización o en la garrapata para definir las pruebas?
Hasta ahora sólo he encontrado OnTester(), que se llama justo antes de OnDeinit().
@Valeriy Yastremskiy El índice se coloca en X todavía en OnInit(). Mi código es el siguiente:
La condición con FlagNewBar me parece redundante.