Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1044

 
LRA:

int Flags=FILE_WRITE+FILE_TXT+FILE_COMMON;

int Info = FileOpen(fName,Flags);

FileWrite(Info,What's Up); En la otra terminal, leer. Cursor en FileOpen y F1 - obtener ayuda

Gracias, voy a echar un vistazo.
 

Hola a todos.

Mi matriz de series de tiempo no se actualiza en la cadena de definición de eventos comerciales (cuando aparece una nueva vela), o más bien su valor no cambia cuando aparece una nueva vela.

if(T[i]!=iTime(NULL,TF[i],1))

T[i] se establece por primera vez al iniciar el Asesor Experto, y luego, cuando aparece una nueva vela, el valor se actualiza.

El parámetro I se establece en función de los parámetros de entrada.

Lo que es interesante, la versión en la que usé varios TFs para trabajar, y tuve que usar un bucle for por eso, todo funcionó bien, pero falla aquí - no se actualiza, y ya está...(

 
Igemon:

Hola a todos.

Mi matriz de series de tiempo no se actualiza en la cadena de definición de eventos comerciales (cuando aparece una nueva vela), o más bien su valor no cambia cuando aparece una nueva vela.

T[i] se establece por primera vez al iniciar el Asesor Experto, y luego, cuando aparece una nueva vela, el valor se actualiza.

El parámetro I se establece en función de los parámetros de entrada.

Lo interesante es que en la versión en la que tenía que usar un bucle for funcionaba bien, pero ahora falla, simplemente no se actualiza...(

Aparentemente no fue sacado del bucle correctamente...

Esta es una función personalizada para definir una nueva barra

bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

Variables de entrada:

tf - período del gráfico o valor del período para determinar la aparición de una nueva barra.

lastbar - una variable pasada por referencia para almacenar el tiempo de la última barra.

void OnTick()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar(PERIOD_D1, lastDay);
 if(newDay)
 Print("наступил новый день");
// и нового часа
 newHour = NewBar(PERIOD_H1, lastHour);
 if(newHour)
 Print("наступил новый час");
}
 
AlexeyVik
bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

La primera vez que se llama desde el EA, informa inmediatamente de una nueva barra. Se ha corregido añadiendo llamadas a la función OnInit()

Cuando se llama por primera vez desde el script, informa inmediatamente de una nueva barra. Luego es siempre falso. Se ha corregido añadiendo RefreshRates() al principio de la función

 
LRA:

La primera vez que se llama desde el EA, informa inmediatamente de una nueva barra. Se ha corregido añadiendo llamadas a la función OnInit()

Cuando se llama por primera vez desde el script, informa inmediatamente de una nueva barra. Luego es siempre falso. Se ha corregido añadiendo RefreshRates() al principio de la función

1. En la primera llamada verdad, es bastante normal, si no ha habido barras, la que ha aparecido será la nueva. Si es necesario, si la estrategia lo exige, es posible rechazar un nuevo bar y algunos más de esta manera. De un vistazo, sin pensarlo, introduzco dos más.

static datetime lastDay = iTime(_Symbol, PERIOD_D1, 0);, lastHour = iTime(_Symbol, PERIOD_H1, 0);

o

if(lastbar != curbar && lastbar > 0)

2. ¿Por qué el script definiría una nueva barra? ¿Hasta qué punto es una tontería?

 

Pero por qué no funciona aquí...((( Creo que está bien(

extern int TFrame=1;

datetime T[6];
int TF[6]={1,5,15,30,60,240};
int i=TFrame-1;

int OnInit()
   {
   T[0]=iTime(NULL,1,1);
   T[1]=iTime(NULL,5,1);
   T[2]=iTime(NULL,15,1);
   T[3]=iTime(NULL,30,1);
   T[4]=iTime(NULL,60,1);
   T[5]=iTime(NULL,240,1);
   for(int q=0;q<=5;q++)
      Print(T[q]);
   return(INIT_SUCCEEDED);
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon:

void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
Disculpa, Igemon, pero ¿por qué esta imprudencia? ¿Qué persona amable te aconsejó hacer eso?
 
Buenos días a todos. ¿Podría alguien aconsejarme: cómo puedo asegurarme de que el EA funcione correctamente, es decir, que ejecute un determinado algoritmo cuando se reinicie el terminal o cuando se desconecte Internet?
 
artmedia70:
Perdona, Ygemon, pero ¿por qué esta imprudencia? ¿Qué persona amable te aconsejó hacer eso?
¿Qué tiene de malo? Simplemente no puse el resto del código, porque todo es normal allí. El bucle es necesario para no depender de los ticks, cuando se definen los eventos, para no reiniciar el PC es dormir a 100 mlsec
Razón de la queja: