Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 552

 
VasiliKolchanov:
Ihor gracias por tu respuesta, solo una pregunta, no será un retraso, es decir, las alertas se acumularán con cada tick durante la pausa, y al cabo de un tiempo el EA me las enviará todas igualmente (todas acumuladas) ? Puede sonar ridículo, pero lo siento novato - estoy aprendiendo.

No lo hará, porque no llegará al punto de activar una alerta. Recibirás una alerta y luego, tras un periodo de tiempo determinado, otra alerta y así sucesivamente.

 
Vitaly Muzichenko:

En realidad debería ser al revés)

¡¡¡Gracias!!!

 

Explique qué es lo que falla aquí. He establecido una orden de apertura en un desglose diario por velas diarias. Es decir, a las 00:00, una nueva vela diaria se abre dentro de la vela anterior.



doble open1, close1, open, close;

open1=iHigh(NULL,PERIOD_D1,1);

close1=iLow(NULL,PERIOD_D1,1);

open=iHigh(NULL,PERIOD_D1,0);

close=iLow(NULL,PERIOD_D1,0);


if(O(m)==false){ //si no hay orden

if(open1<Ask){

b(......);} //orden abierta


if(close1>Ask){

s(.......);}}/orden abierta



Tiempo de Moscú, la orden se abre dentro de la vela anterior a las 00.03, yo estaba viendo en la noche a las 00.03 como se formó una nueva vela y todavía abrió la orden. Es como si el EA no viera una nueva vela diaria.

Aunque yo hice exactamente lo mismo en el desglose por horas, funciona perfectamente.

Si habilito mi EA a las 06.00, funcionará como debería, pero no me gustará el hecho de que las averías del día ocurran antes de las 06.00 y las órdenes se abran en lugares equivocados después de las 06.00. El problema está en la diferencia horaria entre la vela diaria y la hora de Moscú. DC gran capital


¡Ayuda! ¡Por favor!

 
Evgeniy Oshurkevich : Ha respondido a su propia pregunta. Las velas se dibujan en la hora del servidor. Y puede que la de su localidad no coincida con ella.

Así que deje el búho durante la noche, si se escribe normalmente, le pondrá en una posición. O calcular sus velas en el intervalo de tiempo que le interesa.

 
Ihor Herasko:

No lo hará, porque no llegará al punto de activar una alerta. Recibirás una alerta y, después de un periodo de tiempo determinado, otra

Gracias.

 

Por favor, aconseje cómo tratar con una situación en la que una orden abierta pospuesta para mañana, automáticamente con la apertura de una nueva sesión llevó a cabo el beneficio en los parámetros especificados? La única pregunta es: ¿cómo reconozco una nueva sesión? La nueva función de detección de barras no funciona en mi situación. Si sé devolver por separado el año, el mes y el día de apertura del pedido, resolveré el problema en este caso, no sé cómo hacer todo lo demás, y por favor aconsejar en qué formato la función devuelve el valor OrderOpenTime (año, mes, día, hora : min : seg O hora : min : seg)?

 
VasiliKolchanov:

Por favor, aconseje cómo tratar con una situación en la que una orden abierta pospuesta para mañana, automáticamente con la apertura de una nueva sesión llevó a cabo el beneficio en los parámetros especificados? La única pregunta es: ¿cómo reconozco una nueva sesión? La función de reconocer una nueva barra no funciona en mi situación. El resto tengo una idea aproximada de cómo hacerlo.

Obviamente, la función de reconocer una nueva sesión es necesaria)

 
VasiliKolchanov:

Tal vez alguien sabe cómo devolver por separado el año, el mes y el día de la apertura de este orden, entonces el problema sería resuelto. No sé cómo hacer el resto. Y no sé si me ayudará o no sugerir en qué formato de valor de retorno función OrderOpenTime (año.mes.día.hora : min : seg O hora : min : seg) ?

Aquí he esbozado y probado un script que comprobará el historial de órdenes cerradas (no tengo órdenes de mercado ahora mismo, puedes hacerlo tú mismo) y encontrará la última orden cerrada y la registrará:

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   int i,otype,k=OrdersHistoryTotal();
   string sy=Symbol();
   datetime oclose,t=0;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         otype    = OrderType();
         oclose   = OrderCloseTime();
         if(OrderSymbol()==sy)
           {
            if(otype==OP_BUY || otype==OP_SELL)
              {
               if(t<oclose)
                 {
                  t=oclose;
                 }
              }
           }
        }
     }
   Print("Последний ордер закрыт: ",TimeDay(t)," день, ",TimeHour(t),"час, ",TimeMinute(t)," минуты");
  }
//+------------------------------------------------------------------+

resultado:

21:12:07.558 test EURUSD,H1: Última orden cerrada: día 27, 21h, 17 min

 
Taras Slobodyanik:

obviamente, se necesita una nueva función de reconocimiento de sesiones)

¿Qué aspecto tiene Taras?
 
Igor Makanu:

He esbozado y probado un script que comprobará el historial de órdenes cerradas (no tengo una orden de mercado ahora mismo, puedes hacerlo tú mismo) y encontrará la última orden cerrada y registrará la información sobre ella:

resultado:

21:12:07.558 test EURUSD,H1: Última orden cerrada: día 27, 21h, 17 min

Razón de la queja: