[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 874

 
Andrei01:
el tiempo de una nueva vela es Time[0].

y ¿cómo puedo determinar además la llegada de una nueva vela?
 
reag:

y ¿cómo se determina además la llegada de una nueva vela?
memorizar el anterior en una variable y compararlo.
 
Andrei01:
memorizar el anterior en una variable y comparar.

Voy a probarlo ahora...
 
reag:

¿y cómo identificar la llegada de una nueva vela?


Hay varias opciones, aquí hay un par de ellas:

1. Al iniciar el Asesor Experto, recuerde el número total de barras en el gráfico y controle los cambios en el número de barras durante la ejecución del Asesor Experto:

//начало кода - самый верх
int counted;

int init(){
   counted=Bars;     // запомним общее количество баров на активном ТФ
    Myorders();
return(0);
}

int start(){
   Myorders();
........................

// я рассполагаю этот код в самом конце ф-ции start() - мне так удобнее
  int bar = Bars;
  if (bar != counted ) { // сравним запомненное кол-во баров с текущим если они равны тогда нет нового бара на активном ТФ
      counted= bar;
// код который необходимо выполнить по закрытию/открытию бара
  }
return(0);
}

2. recuerde la hora de la última barra que se abrió; el código es más o menos el mismo,

use datetime last=Time[0];

y comparar last==Time[0] --> si la última hora de apertura es la misma que la última, si no es igual, significa que tenemos una nueva barra

no sé qué esquema es más eficiente 1 o 2 - tengo dudas sobre la descarga automática del historial en el terminal, pero no veo ningún problema

 
IgorM:


Hay varias opciones, aquí hay un par de ellas:

1. Al iniciar el Asesor Experto, recuerde el número total de barras en el gráfico y controle los cambios en el número de barras durante la ejecución del Asesor Experto:

esto no funcionará. el número de barras es limitado.
 
Andrei01:
no funcionará. el número de barras es limitado.


funciona, porque el número total no importa, sólo el momento en que el número de barras en el gráfico ha cambiado, en este momento la variable bar != contado, atención, recuerdo a propósito int bar = Bars; - para no perder el valor de Bars, y luego comparar y asignar este valor contado = bar; - y se podría hacer todo con Bars sin una variable extra - pero decidí reasegurar

También mencioné que puede haber un pequeño kazutz durante el auto-bombeo de la historia - puede ser bueno o puede ser malo, si usamos la hora de apertura del bar, definitivamente funcionará - la hora de apertura del bar nunca cambiará

 
IgorM:


sólo me interesa el momento en que el número de barras del gráfico cambió

Una vez que se alcanza el valor máximo establecido en los ajustes, el número de barras del gráfico no debería aumentar. aunque puede ser que salte más o menos uno al máximo, no lo he comprobado, entonces puede ser posible cogerlo, pero es una opción no documentada.
 
Andrei01:
Después de alcanzar el valor máximo establecido en la configuración, el número de barras en el gráfico no debería aumentar. aunque puede saltar, no lo he comprobado, entonces puede ser posible cogerlo, pero esto ya es una opción no documentada.

Esa era la cuestión. He comprobado cuando se alcanza el máximo... Las barras no cambian, sino que se mantienen iguales a las barras máximas de la ventana (ver propiedades).
 
reag:

esa era la cuestión. He comprobado cuando se alcanza el máximo... Las barras no cambian, sino que permanecen iguales a las barras máximas de la ventana (ver propiedades).
Pues debería serlo. Así que la primera opción no funcionará.
 
Andrei01:
Así que la primera opción no funcionará.

Sí, la primera opción no funciona, aunque estoy trabajando en un marco temporal no estándar, la segunda sí. Gracias a todos.