Errores, fallos, preguntas - página 74

 

Mientras probaba el Asesor Experto, accidentalmente me encontré con la función Sleep() en el probador que creo que no funciona correctamente. La cuestión es la siguiente:

el Asesor Experto cierra todas las posiciones a las 23:00 si el beneficio total es superior al especificado (la función CloseAll()). Después de cerrar la siguiente posición, se introduce un retraso de 10 segundos mediante Sleep(10000).

Esto es lo que tenemos en el registro:

FP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 CloseAll Profit: 3030.66
JD 0 Comercio 04:31:04 instantáneo vender 0.80 EURAUD a 1.56474 (1.56474 / 1.56558 / 1.56474)
JH 0 Operaciones 04:31:04 operación #85 vender 0.80 EURAUD a 1.56474 hecho (basado en la orden #85)
Operación HL 0 04:31:04 realizada [#85 vender 0,80 EURAUD a 1,56474]
HI 0 Operación 04:31:04 orden ejecutada vender 0,80 EURAUD a 1,56474 [#85 vender 0,80 EURAUD a 1,56474]
QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 posición de EURAUD a cerrar
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
FG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.
RO 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QD 0 Comercio 04:31:04 comprar 1.00 USDJPY a 90.444 (90.417 / 90.444 / 90.417)
NS 0 Operaciones 04:31:04 operación #86 comprar 1.00 USDJPY a 90.444 hecho (basado en la orden #86)
MJ 0 Operación 04:31:04 realizada [#86 comprar 1.00 USDJPY a 90.444]
JS 0 Operación 04:31:04 orden ejecutada comprar 1,00 a 90,444 [#86 comprar 1,00 USDJPY a 90,444]
JL 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 posición de USDJPY a cerrar
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.
DF 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QN 0 Operación 04:31:04 comprar 0.80 AUDUSD a 0.90001 (0.89967 / 0.90001 / 0.89967)
IH 0 Operaciones 04:31:04 operación #87 comprar 0.80 AUDUSD a 0.90001 hecho (basado en la orden #87)
KQ 0 Operación 04:31:04 realizada [#87 comprar 0,80 AUDUSD a 0,90001]
RL 0 Operación 04:31:04 orden ejecutada comprar 0,80 a 0,90001 [#87 comprar 0,80 AUDUSD a 0,90001]
EG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 posición de AUDUSD a cerrar
LP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.

NQ 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0

Como podemos ver, el tiempo antes y después del desfase es el mismo. Pero sólo ocurre si TimeCurrent() == 0.

Si no, el deslizamiento funciona bien. Por ejemplo:

MD 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 CloseAll Profit: 3382.28
KQ 0 Comercio 04:30:39 ET 0,70 EURUSD a 1,44090 (1,44090 / 1,44108 / 1,44090)
IE 0 Operaciones 04:30:39 trato #27 vender 0.70 EURUSD a 1.44090 hecho (basado en la orden #27)
CI 0 Operación 04:30:39 realizada [#27 vender 0,70 EURUSD a 1,44090]
EL 0 Comercio 04:30:39 orden ejecutada vender 0,70 a 1,44090 [#27 vender 0,70 EURUSD a 1,44090]
DH 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39
JR 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:7
MK 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 cek.
EP 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:15
DE 0 Comercio 04:30:39 ET 0.80 AUDUSD a 0.91951 (0.91951 / 0.91993 / 0.91951)
CJ 0 Trades 04:30:39 deal #28 sell 0.80 AUDUSD at 0.91951 done (based on order #28)
HR 0 Operación 04:30:39 realizada [#28 vender 0,80 AUDUSD a 0,91951]
HH 0 Comercio 04:30:39 orden ejecutada vender 0.80 AUDUSD a 0.91951 [#28 vender 0.80 AUDUSD a 0.91951]
LS 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 AUDUSD se cierra
QL 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:15
ED 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 10 cek Sleep.
LO 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:25
DD 0 Operación 04:30:39 comprar 0,60 EURAUD a 1,56727 (1,56632 / 1,56727 / 1,56632)
LN 0 Operaciones 04:30:39 operación #29 comprar 0.60 EURAUD a 1.56727 hecho (basado en la orden #29)
FK 0 Operación 04:30:39 realizada [#29 comprar 0,60 EURAUD a 1,56727]
IR 0 Operación 04:30:39 orden ejecutada comprar 0.60 a 1.56727 [#29 comprar 0.60 EURAUD a 1.56727]
RM 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 posición de EURAUD a cerrar
FE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:25
GN 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 cek.

QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:35

Código para cerrar una posición:

if(m_trade[j].PositionClose(m_symbol[j].Name()))
           {
            PosCloseCount--;
            printf("Position by %s to be closed",m_symbol[j].Name());
            MqlDateTime  dt_struct;
            TimeCurrent(dt_struct);
            printf("%u:%u:%u",dt_struct.hour,dt_struct.min,dt_struct.sec);
            Sleep(10000);
            Print("Sleep 10 cek.");
            TimeCurrent(dt_struct);
            printf("%u:%u:%u",dt_struct.hour,dt_struct.min,dt_struct.sec);
           }

Llamada a la función CloseAll:

   MqlDateTime  dt_struct;
   TimeCurrent(dt_struct);
   if(dt_struct.hour==2 3 && m_account.Profit()>InpProfitToClose)
     {
      Trade=false;Print("CloseAll Profit: ",m_account.Profit());
      while(PositionsTotal()>0)
         CloseAll();

Si cambiamos la condición a

if(dt_struct.hour==23 && dt_struct.min>0 && m_account.Profit()>InpProfitToClose)
no hay ningún error.
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 
joo:
Entonces, ¿mi mensaje no es en vano, como ya pensaba?

Sí, hemos arreglado el comportamiento StringToTime, gracias.

 
Valmars:

Mientras probaba el Asesor Experto, accidentalmente me encontré con la función Sleep() en el probador que creo que no funciona correctamente. La cuestión es la siguiente:

Muy interesante. Veamos.
 
Abro la pestaña "Noticias" y hay... - es una noticia equivocada. ¿Me estoy perdiendo algo?
 
x100intraday:
Abro la pestaña "Noticias" y ahí... - es una noticia equivocada. ¿Me estoy perdiendo algo?

Establezca los idiomas en los que desea recibir las noticias.


 
Rosh:

Establezca los idiomas en los que desea recibir las noticias.


No lo es. Está un poco salpicado de "noticias" del foro de mt5, no tiene nada que ver con las noticias de forex. No sólo las actualizaciones pro-auto recientemente, sino que descargué la distribución mt5 de nuevo y la instalé, ya hace casi una semana. No sé cómo fue durante la semana, porque no entré en la pestaña "Noticias", pero lo he descubierto ahora:

Noticias financieras extrañas

 
x100intraday:

No lo es. Está un poco salpicado de "noticias" del foro de mt5, no tiene nada que ver con las noticias de forex. No lo he pro-autocargado recientemente, he vuelto a descargar la distribución de mt5 y la he instalado, hace ya casi una semana. No sé cómo fue durante la semana, porque no entré en la pestaña "Noticias", pero lo he descubierto ahora:

Este es nuestro servidor de demostración que difunde las noticias de MQL5.com en lugar de las noticias de Forex que faltan (no tenemos derecho a distribuir noticias gratuitas de otros).

Si no quieres verlas, sólo tienes que desmarcar la casilla correspondiente en la sección de categorías de noticias del menú del botón derecho.

 

Después de la actualización automática, el EA que antes funcionaba empezó a dar mensajes de que no podía copiar las series de tiempo. El problema se solucionó descargando el EA y cargándolo de nuevo. Pregunta: ¿se debe esperar siempre este resultado de la actualización automática o se trata de un error terminal, que se eliminará?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Yedelkin:

Después de la actualización automática, el EA que antes funcionaba empezó a dar mensajes de que no podía copiar las series de tiempo. El problema se solucionó descargando el EA y cargándolo de nuevo. Pregunta: ¿se debe esperar siempre este resultado de la actualización automática o se trata de un error terminal, que se eliminará?

Por favor, dé más detalles (registros, capturas de pantalla, etc.).

Sin esto, no es posible dar una respuesta informada.

 
Renat:

Proporcione más detalles (registros, capturas de pantalla, etc.), por favor.

Sin esto, es imposible dar una respuesta razonable.

DE ACUERDO. Cuenta demo en el servidor MQ, archivo de registro adjunto (2010729.log), la hora de inicio de la actualización automática es 20:54, a las 22:36 borré yo mismo el Asesor Experto y lo cargué un minuto después.

Hay una simple comprobación de tipo en EA:

if(CopyHigh(Symbol(),0,0,bars,high)<bars || CopyClose(Symbol(),0,0,bars,close)<bars || CopyLow(Symbol(),0,0,bars,low)<bars || CopyTime(Symbol(),0,0,bars,time)<bars)
  {
   Print("Can't copy timeseries!");
   return;
  }

En consecuencia, después de los mensajes de actualización automática fue (archivo 20100729copy.log). En general, esto ha ocurrido antes, pero de alguna manera no prestar atención.

Después de recargar el Asesor Experto, las líneas de precios de apertura y stop-loss en el gráfico también han desaparecido.

¿Puedo añadir algo más a lo que se ha dicho?