¿Un error en la función OrderSend()? - página 5

 
Sepulca:

La estática funciona al 100%. Esta es la prueba:

Y los resultados:


Bueno, a mí me funciona igual que antes... ¡No hay cambios! Incluso tengo la función de abrir un nuevo bar:

bool isNewBar()
   {
      static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
      datetime currBar;                                                  // Задаём переменную для времени открытия текущего бара
      currBar = iTime(Symbol(),PERIOD_M1,0);          // Находим время открытия текущего бара
      if(lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
            return(true);
         }
      return(false);
   }

que también funciona correctamente. Por eso, mi código es objeto de críticas sin fundamento. Y la pregunta era generalmente correcta. Al parecer, el probador tiene un fallo, por lo que las lecturas son erróneas. En la M5 es de alguna manera más limpio, en la M15 también el H1 ya es igual.

 
hoz:


Bueno, funciona igual que antes... ¡No hay ningún cambio! Incluso tengo una nueva función de apertura de bares:

que también funciona bien. Por eso se critica mi código sin fundamento. Pero la pregunta era correcta en general. Al parecer, el comprobador tiene un fallo y las lecturas son erróneas. En la M5 es de alguna manera más limpio, en la M15 también H1 ya es abismal.


Aconsejaría escribir if(lastBar<currBar) de inmediato, aunque apenas cambiará nada. Revisaré más a fondo tus posts, tal vez diga algo más.
 
hoz:


Bueno, funciona igual que antes... ¡No hay ningún cambio! Incluso tengo una función para abrir un nuevo bar:

que también funciona bien. Por eso se critica mi código sin fundamento. Pero la pregunta era correcta en general. Al parecer, el comprobador tiene un fallo y las lecturas son erróneas. En la M5 es algo más limpio, en la M15 también el H1 ya es pésimo.



Puede ayudar. Su función start() está un poco retocada. No me metí en profundidad, pero aún así:

int start()
{
   fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime(NULL, 0, 1));    // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime(NULL, 0, 0))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
      {
       ..........// Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime(NULL, 0, 0);              // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
  return (0);
}
 
Sepulca:



Podría ayudar. Su función start() está un poco retocada. No me metí en profundidad, pero aún así:


Pues bien, aquí el tiempo de cálculo se toma de la barra anterior. No parece lógico. Necesitamos el bar actual.
 
PapaYozh:

Personalmente, nunca me he encontrado con un statik que no funcionara.

Aquí tienes un ejemplo de experto, por si quieres comprobarlo en un gráfico:

1. Inicie el Asesor Experto.

2. Cambia el TF.

3. Asegúrese de que el cc no se convierta en 20 de nuevo.

 
hoz:


Bueno, funciona igual que antes... ¡No hay ningún cambio! Incluso tengo una nueva función de apertura de bares:

que también funciona bien. Por eso se critica mi código sin fundamento. Pero la pregunta era correcta en general. Al parecer, el comprobador tiene un fallo y las lecturas son erróneas. En la M5 es algo más limpio, en la M15 también el H1 ya es pésimo.

Con respecto a su situación:

El tiempo se inicializó una vez - cuando inicie el EA, no se inicializará de nuevo, así que cuando cambie de M1 a D1 tendrá que esperar alrededor de un día para la actualización del gráfico :(

 
tara:

Se aplica a su situación:

El tiempo se inicializó una vez - cuando inicie el EA, no se inicializará de nuevo, así que cuando cambie de M1 a D1 tendrá que esperar alrededor de un día para que el gráfico se actualice :(



El Asesor Experto trabaja en un TF específico. ¿Por qué tendría que cambiarlo?
 
tara:

3. Asegúrese de que el cc no se ha convertido en 20 de nuevo.

Esta es una característica documentada de las EA.
 
TheXpert:
Esta es una característica documentada de las EA.


¿Qué es entonces Static? Es más bien un Fatalic...


Por cierto, ¿dónde está documentado?

 
hoz:

El Asesor Experto trabaja en un TF específico. ¿Por qué tendría que cambiarlo de repente?

Sólo tienes que cambiar algún parámetro. La reacción se producirá sólo después del primer tick de una nueva barra en la TF establecida.

Pero usted mismo se preguntó por qué el Asesor Experto es inexplicable en un TF superior:)