Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 230

 
Aleksey Mavrin:

y qué, ¿siempre hay más beneficios después de 10 segundos?)

No siempre, por supuesto, pero a menudo sucede que el precio simplemente vuela en un minuto y el EA cierra bruscamente a un precio fijo.
 
Nargiz Ravanova:

Hice lo que dijiste, pero por alguna razón después de cerrar el Asesor Experto abre operaciones un par de veces, a pesar de que después de la función CloseAll() tengo un deslizamiento durante una hora.

datetime sleep = TimeCurrent();
if(sleep > TimeCurrent())
     return;
//---
double op = CalculateProfit();

if(op >= Profit && LastTime == 0)
     LastTime = TimeCurrent();
if(LastTime > 0 && TimeCurrent() - LastTime >= Second)

    {
     CloseAll();
     LastTime = 0;

     SendNotification("Trade is end");
     sleep = TimeCurrent()+60*60;
    }

Así es. Por supuesto, sólo estaba escrito en mi rodilla.

 
Konstantin Nikitin:

Algo así. Por supuesto, fue escrito en el momento.

Gracias, ahora el EA solo cierra una operación de todas las que hay en el mercado, y tengo un EA de rejilla.

No tengo ningún deslizamiento y el EA vuelve a abrir una nueva operación e ignora los deslizamientos. Si miro el EA, no creo que sea posible abrir otro, sino que tengo que devolverlo como estaba antes. No sé qué hacer con este EA y no podré hacer nada más.

 
Nargiz Ravanova:

Gracias, ahora el EA solo cierra una operación de todas las que hay en el mercado, y tengo un EA de rejilla.

El problema es que no se sabe qué hacer con esto, pero no estoy seguro de qué hacer con esto, y no estoy seguro de qué hacer con esto. Creo que no es posible implementarlo, simplemente lo devolveré como estaba antes. Me gustaría agradecerles su ayuda.

Hay que ponerlo en práctica en su totalidad
las razones pueden ser diferentes

 
Nargiz Ravanova:

Gracias, ahora el EA solo cierra una operación de todas las que hay en el mercado, y tengo un EA de rejilla.

El problema es que no sé qué hacer con él, así que no sé qué hacer con él. Creo que no es posible implementarlo, simplemente lo devolveré como estaba antes. Ya lo he implementado y aún no se ha implementado, así que lo devolveré a como estaba antes.

Esto debería tener más sentido, ¿verdad?

input double Profit   = 100.0;
input int    Second   = 10;
//+------------------------------------------------------------------+
void CloseAllSleep(void)
    {
     static datetime sleep_all = TimeCurrent();
     static datetime LastTime = 0;
     if(sleep_all > TimeCurrent())
          return;
//---
     if(LastTime == 0)
         {
          if(CalculateProfit() < Profit)
               return;
          LastTime = TimeCurrent();
         }
     if(TimeCurrent() - LastTime >= Second)
          return;
//---
     if(!CloseAll())
          return;
     LastTime = 0;

     SendNotification("Trade is end");
     sleep_all = TimeCurrent()+60*60;
    }

//--- Считаем профит открытых позиций
double CalculateProfit(void)
    {
     return 0.0;
    }
//--- Закрываем все позиции
bool CloseAll(void)
    {
     return true;
    }

Una vez más, esto es puramente para la claridad. Y qué y cómo hay que aplicar, piénsalo tú mismo.

 
Nargiz Ravanova:
Por supuesto, no siempre, pero a menudo sucede que el precio sólo vuela por un minuto y el Asesor Experto cierra bruscamente a un precio fijo.

Aun así, creo que este enfoque no es óptimo. Si el precio está volando, debería haber un deslizamiento positivo. Si esperas el momento - es un juego de ruleta - entonces para qué sirve la estrategia, tu ganancia ya puede ser menor que las 2 libras dadas.

Es más razonable para medir la velocidad de cambio de precios, y si es alta hacia el beneficio - esperar, cuando bajó - para cubrir.

 
Konstantin Nikitin:

Creo que eso tiene más sentido, ¿no?

Una vez más, esto es puramente por el bien de la comprensión. Depende de ti averiguar qué aplicar y cómo hacerlo.

No lo entiendo para ser sincero, olvídalo, ya se me ocurrirá algo.

 
Aleksey Mavrin:

Aun así, creo que este enfoque no es óptimo. Si el precio está volando, entonces el deslizamiento debería ser positivo. Si esperas el momento - es un juego de ruleta - entonces para qué sirve la estrategia, tu ganancia ya puede ser menor que las 2 libras dadas.

Es más razonable para medir la velocidad de cambio de precios, y si es alta hacia el beneficio - esperar, cuando bajó - para cubrir.

no podemos arreglar un simple deslizamiento aquí y usted está hablando de velocidad))))
 
Nargiz Ravanova:
no podemos arreglar un simple deslizamiento aquí y usted está hablando de velocidad))))

Si te pones metas altas, el Todopoderoso te ayudará a alcanzarlas. ;)

 
Nargiz Ravanova:
no podemos arreglar un simple deslizamiento aquí y usted está hablando de velocidad))))

Bueno, para ser más precisos, parece que no se puede. Y sobre el SUEÑO. ¿Quieres congelar todo el Asesor Experto durante algún tiempo? O sólo una función determinada, después de haberla elaborado. En cualquier caso, incluso para la interrupción del trabajo del Asesor Experto es mejor utilizar la bandera para los retrasos largos, y al comprobarlo, si no hay permiso, simplemente salir a OnTick/OnTimer. Para los retrasos cortos, sí, puedes usarSLEEP.
Por cierto,SLEEP no funciona en los indicadores.

La función Sleep() no puede ser llamada desde los indicadores personalizados, porque los indicadores se ejecutan en el hilo de la interfaz y no deben ralentizarlo.

Por lo tanto, entiende el uso de las banderas, lo necesitarás en el futuro.