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

 
Valeriy Yastremskiy #:
No existe tal cosa. No se trata de un lenguaje procesal. Aquí el programa es estrictamente descendente. Y las llamadas a funciones solucionan todo lo que hay de bucles, si eso. Y OOP)
Lo tengo. Lo tengo. Gracias por la aclaración.
 
Tretyakov Rostyslav #:

Gracias.

 
Tretyakov Rostyslav #:

Hola

    if(OrderSelect(FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

Tengo una orden de ganancias en un billete, quiero cerrar cuando llegue a -x.

Pero consigo que todos los pedidos se cierren seguidos.

¿Puede decirme cómo hacerlo correctamente?

 
Alexander Avksentyev #:

Hola

Tengo una orden de ganancia en un billete, quiero cerrar cuando llegue a -x.

Pero consigo que todos los pedidos se cierren seguidos.

¿Puede decirme cómo hacerlo correctamente?

Intenta hacerlo de esta manera

 int min_ticket=FindTicketOrder();
    if(OrderSelect(min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

En general, debe desarrollar toda la función para entender lo que está haciendo

//+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev #:

Hola

Tengo una orden de ganancia en un billete, quiero cerrar cuando llegue a -x.

Pero consigo que todos los pedidos se cierren seguidos.

¿Puede decirme cómo hacerlo correctamente?

¿Cómo se consigue que se cierren todas las órdenes si sólo veo una llamada OrderClose?

No está muy claro dónde se llama este código... El algoritmo del robot tampoco está claro...
 
Mihail Matkovskij #:

¿Cómo se cierran todas las órdenes si sólo veo una llamada OrderClose?

Cierra la orden tan pronto como se abre

 
Tretyakov Rostyslav #:
Eso no es lo que querías, es un ejemplo. Estaba haciendo un EA para el comercio semiautomatizado.


Lo que quieras lo tienes que escribir tú).

En todo caso, ayudaré.

Así que, describiré más específicamente lo que necesito para un EA de Panel de Órdenes Pendientes tan rápido, he encontrado parcialmente trozos de código de esta lista (20%), pero el resto tendré que preguntároslo a vosotros, compañeros.


1) Shell: mostrar como tal un tablero con botones en el gráfico: BUY_lp(lower ASK in___pips), SELL_hp (higher BID in___pips) - número en pips introducido manualmente en el tablero, BUY_lt (lower ASK up to____seconds),SELL_ht (higher BID up to____seconds) - número en segundos introducido manualmente en el tablero, CLOSE_buys, CLOSE_sells - cerrar todas las órdenes.

a) código para crear un botón en el gráfico; el marcador como objeto de fondo;

b) código para introducir valores en este marcador (pips, segundos) campos especiales para ello

c) guardar el valor de los pips en un determinado archivo de memoria donde se fija el precio después de pulsar el botón y se añade/elimina el número de pips para el precio al que se quiere entrar en el mercado;

d) guardar el valor de los segundos en un determinado archivo de memoria, donde se cuenta continuamente el valor mínimo/máximo del precio para el periodo seleccionado "en segundos";

2) en el interior: ejecución.

a) leer el valor en pips y el precio fijo del archivo, después de pulsar el botón BUY_lp o SELL_hp, para compararlo con el precio actual;

b) cuando se pulsa el botón BUY_lt o SELL_ht, se lee de un archivo el valor en segundos y el precio máximo/mínimo modificado para compararlo con el precio actual;

c) cuando el precio actual alcanza el valor requerido - entrar en el mercado (orden abierta);

d) botón para cerrar la orden o todas las órdenes. Este botón debe funcionar de manera diferente dependiendo del modo de ejecución; si el precio fue introducido por "pips", entonces, después de cerrar por un número igual de pips, el precio de cierre debe ser diferente en la dirección "mejor" (esperando ese precio después de presionar "cerrar"), si el botón es "por segundos", entonces el mejor precio debe ser calculado para un cierto período (esperando ese precio, pero no más bajo/superior en el momento en que presionó el botón).

 
Alexander Avksentyev #:

Cierra la orden tan pronto como se abre

Bueno, sí. El beneficio siempre tiene un valor negativo en el momento en que se introduce debido a la propagación... Intenta disminuir el valor de x.

Y sería mejor hacer su propia función para calcular el beneficio en pips (por supuesto, si no quiere establecerlo en la moneda del depósito).
 
Mihail Matkovskij #:

Bueno, sí. El beneficio siempre tiene un valor negativo en el momento de la entrada debido al diferencial... Intenta reducir el valor de x.

-x menos que spread, salida a Print

if(OrderProfit()<=-x);

será verdadero si las condiciones coinciden. añadiendo un comando de cierre. cierra inmediatamente

 
Mihail Matkovskij #:

Bueno, sí. El beneficio siempre tiene un valor negativo en el momento posterior a la entrada debido a la presencia del spread... Intenta reducir el valor de x.

Y sería mejor hacer tu propia función para calcular el beneficio en pips (por supuesto, si no quieres establecerlo en la moneda del depósito).

Puedes hacerlo con puntos, no hay mucha diferencia. Sólo quería hacerlo más sencillo