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

 
Alexey Viktorov:

Y luego sigues utilizando la misma redacción.


))) Dos objetos, uno mayor y otro menor, necesito el precio por puntos del objeto menor (más cercano) y obtengo el precio por puntos del objeto mayor (más lejano) en el comentario. ¿Por qué? Si el bucle anterior, comentado, devolvió el objeto más lejano, el bucle actual debe devolver el más cercano - el último pero devuelve el penúltimo. Me falta algo aquí.
 
PolarSeaman:
))) Dos objetos, uno mayor y otro menor, necesito el precio por puntos del objeto menor (más cercano) y obtengo el precio por puntos del objeto mayor (más lejano) en el comentario. ¿Por qué? Si el bucle anterior, comentado, devolvió el objeto más lejano, el bucle actual debe devolver el más cercano - el último pero devuelve el penúltimo. Me falta algo aquí.

Uno, y dos - para seleccionar objetos en el bucle por tiempo, es necesario comparar dos tiempos - el objeto anterior y el actual. Si la hora actual es más larga, entonces guárdela en una variable que se comprobará en la siguiente iteración del bucle. Al final del bucle, la variable contendrá el objeto más reciente creado.

 
YanSay:

Lo he intentado, no funciona, debo estar haciendo algo mal(

El error más grave aquí es especificar el valor 100 en lugar de ticket en el argumento de la función OrderDelete().

El siguiente error no es tan grave, pero está relacionado con el hecho de que se comprueba el valor calculado de Stop Loss en lugar de su valor real.

Tampoco se comprueba el tipo de pedido. ¿Y si hemos elegido una orden de mercado? ¿Cómo borrarlo? No se ha comprobado el símbolo de la orden.

Teniendo en cuenta estos errores, obtenemos el código de eliminación de la orden pendiente cuando el precio alcanza su Stop Loss:

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())
      continue;

   if (OrderMagicNumber() != 100)
      continue;

   if (((OrderType == OP_BUYSTOP || OrderType() == OP_BUYLIMIT) && Bid <= OrderStopLoss()) ||
       ((OrderType == OP_SELLSTOP || OrderType() == OP_SELLLIMIT) && Ask >= OrderStopLoss() && OrderStopLoss() > 0.0))
   {
      if (OrderDelete(OrderTicket()))
         RefreshRates();
   }
                                        
}   
También en su código, el Stop Loss se comprueba inmediatamente después de abrir una orden. Parece que después de abrir una orden pendiente, este código ya no se ejecuta. Es decir, hay que separar las ramas de ejecución. Uno se encarga de establecer el orden y el segundo de acompañarlo.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

Hola, señoras y señores.

Me podéis decir cómo coger la combinación de teclas como Ctrl+1. Sé cómo coger una tecla del teclado.

Pero necesito una combinación en mt4 - ¡cómo hacerlo!

 
Игорь:

Hola, señoras y señores.

Me podéis decir cómo coger la combinación de teclas como Ctrl+1. Sé cómo coger una tecla del teclado.

Necesito una combinación de Mt4 - ¡cómo hacer esto!

El evento OnChartEvent, analiza los parámetros lparam y sparam, porque pulsar Ctrl+1 son dos eventos.

 
Ihor Herasko:

Evento OnChartEvent, analice los parámetros lparam y sparam, ya que pulsar Ctrl+1 son dos eventos.

No, no funciona, lo he probado.

¡¡¡Sólo muestra la prensa ctrl y todos los demás más 1 y las letras no funcionan !!!

 
Игорь:

No, no funciona, lo he probado.

¡¡¡Sólo muestra la prensa kntrl y todos los demás más 1 y las letras no funcionan !!!

Yo escribí:

pulsar Ctrl+1 son dos eventos

Captura dos eventos y analiza:

2018.04.05 12:26:32.170 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 17, dparam: 1.0, sparam: 285
2018.04.05 12:26:32.396 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 49, dparam: 1.0, sparam: 2

Esto es una pulsación de Ctrl+1.

 
Ihor Herasko:

Yo escribí:

Captura dos eventos y analiza:

Esto es una pulsación de Ctrl+1.

¡Aquí sólo tengo contracl o 1 y ningún evento en el otro o mostrar su código !

¡Después de pulsar ctrl no hay otros eventos hasta que sueltes ctrl !

He encontrado el error, ¡gracias!

 
Eliminado los duplicados.
 
Vitaly Muzichenko:

¿Con un perfil? =)

:)