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

 
Sabit Dosaev:
Una pregunta sencilla. El búho no compila. Hay un error al final del código. + __FUNCSIG__
+ ": "+Market_Err_To_Str(errIndex)
+ "; ticket de pedido = " + (cadena)OrderTicket()
+ "; tipo de pedido = " + (cadena)OrderType()
+ "; orden Stop Loss = " + DoubleToStr(OrderStopLoss(), Digits())
+ "; nuevo Stop Loss = " + DoubleToStr(newStopLoss, Digits())
+ "; Oferta = " + DoubleToStr(Oferta, Dígitos())
+ "; Ask = " + DoubleToStr(Ask, Digits())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


Lanza un error de compilación. Por favor, ayude si puede. Gracias.

Introduzca el código correctamente:


И... no está claro en el trozo de código cuál es su error. El código debe ser reproducible.

 
string LastComm(int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0;
   int l_datetime_12 = 0;
   string ls_ret_16 = "0";
   for(int l_pos_24 = 0; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
      if(l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

@Artyom Trishkin

¿Cómo puedo convertir esta función a MQL5 desde MQL4?

 

Buenas tardes a todos.

¿Podría decirme dónde insertar la función IsConnected () para determinar el estado de la comunicación?

Si lo inserto dentro de la función OnTick(), entonces siempre hay conexión (es decir, hay llegada de ticks, por lo que hay conexión, no hay llegada de ticks (por su ausencia o por la ausencia de conexión) significa que no hay llamada a OnTick() y respectivamente a la función que define el estado de conexión IsConnected ())) Sobre esto es inútil insertar IsConnected () en marcos OnTick () (cuántas veces no desconecté el Internet, de todos modos no escribe en un archivo sobre la ausencia de comunicación)

Por esta razón la pregunta es dónde insertar correctamente la función IsConnected () o cuáles son las otras formas de determinar el estado de la conexión (sólo para MT4)

Gracias.

 
Roni Iron:

Buenas tardes a todos.

¿Podría decirme dónde insertar la función IsConnected () para determinar el estado de la comunicación?

Si lo inserto dentro de la función OnTick(), entonces siempre hay conexión (es decir, hay llegada de ticks, por lo que hay conexión, no hay llegada de ticks (por su ausencia o por la ausencia de conexión) significa que no hay llamada a OnTick() y respectivamente a la función que define el estado de conexión IsConnected ())) Sobre esto es inútil insertar IsConnected () en marcos OnTick () (cuántas veces no desconecté el Internet, de todos modos no escribe en un archivo sobre la ausencia de comunicación)

Por esta razón la pregunta es dónde insertar correctamente la función IsConnected () o cuáles son las otras formas de determinar el estado de la conexión (sólo para MT4)

Gracias.

OnTimer()

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko:

tienes una confusión de variables y funciones, si es una función, inténtalo de esta manera:

ALT + S para el código

Gracias

Roman Shiredchenko:

tienes confusión sobre las variables y las funciones, si es una función, prueba esto:

ALT + S

Sí, es una función.

Gracias, pero da un error por alguna razón

'}' - no todas las vías de control devuelven un valor

aunque parece que he comprobado todo correctamente tanto en mi código como en una plantilla vacía.

ALT + S - gracias, lo tendré en cuenta

 
wolder1:

Gracias

Sí, es una función.

Gracias, pero por alguna razón da un error

'}' - no todas las vías de control devuelven un valor

Aunque los paréntesis parecen ser correctos, tanto en mi código como en la plantilla vacía.

ALT + S - gracias, lo tendré en cuenta.

Una buena pregunta contiene la respuesta (C)

 
wolder1:

Gracias

Sí, es una función.

Gracias, pero por alguna razón da un error

'}' - no todas las vías de control devuelven un valor

Aunque he comprobado todo correctamente con paréntesis tanto en mi código como en una plantilla vacía.

ALT + S - gracias.

La función double debe devolver un valor, no si la función es nula .

si tienes variables definidas arriba en tu código, pueden ser comentadas + tenías espacios extra aquí (Bid > = L8b)) - Hice una edición:

double lot=0; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot=0, Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
    return(lot);  
  } 
 

Buenos días.

Pregunta. En el probador, en la interfaz del lado del día (cuando pasa la línea del día siguiente) el programa debería haber colocado una orden pendiente. La orden pendiente que ya estaba ahí y el precio la tocó, se abrió pero la instrucción de abrir otraorden pendiente fue ignorada por el sistema por alguna razón. ¿Puede ocurrir lo mismo en una cuenta real en la que las instrucciones del robot simplemente se ignoran y, por tanto, no se realiza la acción requerida?


Y otra pregunta. Estoy ejecutando un Probador de Estrategias pero me confundió mucho el hecho de que va una semana más o menos en la visualización y luego muestra el siguiente mensaje

177564 eventos de tick (447 barras, 7888506 estados de barra) procesados en 0:17:42.694 (tiempo total 0:17:48.217)

177564 eventos de tick (447 barras, 7888506 estados de barra) procesados en 0:17:42.694 (tiempo total 0:17:48.217)

No lo entiendo, ¿está demasiado ocupado para seguir haciendo pruebas? ¿O es tan cuidadoso y se preocupa por los recursos de mi ordenador? No veo ningún mensaje de error. Simplemente se termina por sí mismo. Aunque he puesto la fecha no 7 días, sino 7 meses. Me gustaría ver todo el recorrido de la prueba de principio a fin.

¿Qué religión no le permite hacer pruebas visuales durante, por ejemplo, un año o varios años? Y puede ver visualmente cómo funcionó su programa durante el año anterior, por ejemplo.


Y una pregunta más. (Aunque puede no tener respuesta)) ) ¿Cómo puede suceder que el probador 2 vueltas trabajando como debería, y justo antes de la inscripción antes mencionada en el día simplemente ignora todas las instrucciones. Cómo es posible que el programa haya funcionado correctamente durante varias rondas (abrió órdenes y luego las cerró), y luego, pum, lo ignora todo. No se abre ni se cierra. ¿Se debe al final de un periodo de pruebas o hay otras razones?

 

¡¡¡Buenas tardes!!!

Necesito la hora del último pedido cerrado.

He escrito una función pero no funciona correctamente.

//+------------------------------------------------------------------+

//| Hora del último pedido cerrado |

//+------------------------------------------------------------------+

double Ultimos_Ticets_Cerrados()

{

Last_Ticet = 0;

Last_OrClTime = 0;


for(int i=0; i<TotalPedidos(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY ))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)

{

if(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket();

Last_OrClTime = OrderCloseTime();

}

}

}

}

devolver (Last_Ticet);

}

¿Alguien puede decirme qué pasa?

 
142vs:

¡¡¡Buenas tardes!!!

Necesito la hora del último pedido cerrado.

Escribí un f-iio, pero no funciona correctamente.

¿Alguien puede sugerir lo que está mal?

cuando busque una hora posterior, compare las horas, no los billetes

Razón de la queja: