Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 635

 

Ayuda, por favor. ¿Qué pasa aquí?

 double buy_OrderProfit = 0;
 double sell_OrderProfit = 0;
 double buy_Order_price  = 0;
 double sell_Order_price = 0;
 
  double Drop_proc1 =AccountEquity();
  double Drop_proc2 =AccountBalance();
  double Drop_proc3 =(Drop_proc1*100)/Drop_proc2;
  
  if (Drop_procK <= Drop_proc3)
  {
  for(int i=OrdersTotal()-1; i>=0; i--)
       if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
            if((OrderType()==OP_SELL) sell_OrderProfit + OrderProfit())
                 if((OrderType()==OP_BUY)  buy_OrderProfit + OrderProfit()) 

  for (int i=OrdersTotal()-1; i>=0; i--)
        if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
             if ((OrderType()==OP_BUY ) && ( buy_OrderProfit < sell_OrderProfit ) )     
                  OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
                    if ((OrderType()==OP_SELL) && sell_OrderProfit < buy_OrderProfit )
                         OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);  
        } 
   else 1=1;

error 'if' - las expresiones no están permitidas en un ámbito global v.4.1.5(2).mq4 793 3



 
new-rena:

¡Caballeros!

¿Cómo puedo saber si el mercado está cerrado o no durante la inicialización de un Asesor Experto MQL4? (¿qué orden?)

No existe tal comando. Puede intentar colocar una orden pendiente de largo alcance y luego eliminarla si lo hace.
 
Kisolen:

Ayuda, por favor. ¿Qué pasa aquí?

Una condición if sólo puede estar dentro de una función.
 
Sergei Vladimirov:
La condición if sólo puede estar dentro de una función.
Gracias por responder. Este código está dentro de la función void OnTick(), dentro de las llaves. Está muy arriba, me disculpo por no haberlo copiado. ¿Es así como lo entiendo? Esto es una función, ¿verdad? Y sigue habiendo un error.
 
Kisolen:
Gracias por responder. Este código está dentro de la función void OnTick(), dentro de las llaves. Está muy arriba, perdón por no copiarlo. ¿Es así como lo entiendo? Esto es una función, ¿verdad? Y sigue habiendo un error.
El compilador escribe que si está en el ámbito global. Tal vez sea sólo un desequilibrio de paréntesis, compruébalo (no es sorprendente, por cierto, con este estilo de código).
 
Vitaly Muzichenko:

Prueba este, parece que funcionó una vez, pero no lo he usado:

Tu código no funciona, porque la hora actual está determinada por TimeCurrent(), y devuelve la hora de la última cita, y tu función siempre devolverá true. Se puede hacer lo mismo con TimeLocal(), teniendo en cuenta la diferencia de zona horaria entre el ordenador y el servidor, pero esto no garantiza el resultado correcto: el reloj del ordenador puede estar equivocado, y puede no llenar la hora de la sesión en el servidor, y en días festivos (Año Nuevo), nadie sabe lo que se devolverá... Y no existe una función sencilla y fiable como MarketIsClosed() en µl.
 
Sergei Vladimirov:
No existe tal comando. Podría intentar colocar una orden pendiente de largo alcance y luego eliminarla si lo hace.

Sí, una buena opción. El equipo devolverá un error "El mercado está cerrado".

Está resuelto.

Gracias.

 

Buenas tardes a todos.

Por favor, aconseje qué camino a cavar, o si puede un pedazo de código para un ejemplo :)

Necesito lo siguiente:

Tengo un Asesor Experto y un indicador en un gráfico. ¿Cómo cambiar los parámetros del indicador con el Asesor Experto?

Gracias de antemano por las respuestas.

 
GrRusel:

Buenas tardes a todos.

Por favor, aconseje qué camino a cavar, o si puede un pedazo de código para un ejemplo :)

Necesito lo siguiente:

Tengo un Asesor Experto y un indicador en un gráfico. ¿Cómo cambiar los parámetros del indicador con el Asesor Experto?

Gracias de antemano por las respuestas.

No cambiará la configuración del indicador visualmente, pero al leer los datos en el Asesor Experto a través de iCustom desde el indicador, puede establecer los parámetros que recibe el Asesor Experto desde este indicador. O puede utilizar variables globales, si enseña al indicador a utilizarlas.
 
Vladimir Zubov:
No cambiará la configuración del indicador visualmente, pero al leer los datos en el Asesor Experto a través de iCustom desde el indicador, puede establecer los parámetros que recibe el Asesor Experto desde este indicador. O puede utilizar variables globales, si enseña al indicador a utilizarlas.
Lo hago todo a través de icustom. Pero cuando cambio la configuración del indicador, quiero que el indicador cambie su configuración de visualización - por ejemplo, he cambiado las zonas OBOS. He decidido cambiar las zonas de OBOS. Tal vez debería quitarlo del gráfico y luego añadirlo con la nueva configuración, pero hay que hacerlo a través de Expert Advisor. ¿No se ha encontrado nadie con un problema de este tipo y cada vez que se cambia todo a mano - no puede ser...
Razón de la queja: