La gran y terrible MT4 para siempre (o cómo hacer una estrategia de transición) - página 26

 
fxsaber:

Es probable que no haya ninguna bandera en el interior.

Parece que no.

pero creo que MQ bien podría hacer una, sobre todo porque sería una bandera por terminal, es decir, para todos los programas.

 
Artyom Trishkin:
Probablemente lo proponga. Pero mucho más tarde. Debido a circunstancias subjetivas. Desgraciadamente. Mientras tanto, considérese un demagogo. No está prohibido.

¿Sigue siendo relevante? ¿Será su versión de la solución?

 
Igor Makanu:

¿Sigue siendo relevante? ¿Será su versión de la solución?

Has citado mi post, que decía "mucho más tarde". Para mí, "mucho más tarde" significa no antes de un año como mínimo. No porque sea el tiempo que se necesita para encontrar una solución, sino simplemente por circunstancias subjetivas, por desgracia.

 
Artyom Trishkin:

no lo será hasta dentro de un año como mínimo.

Bien, entonces no es relevante.

 
Seguro que todavía se te ocurren problemas sencillos en cuanto a sus condiciones, y cuyas soluciones provocan dificultades inesperadas.
 
fxsaber:
Es probable que todavía pueda plantear problemas sencillos, cuya solución le provoque dificultades inesperadas.

El script vigila el exceso de riesgo: si el total de posiciones y órdenes pendientes excede de dos, informa de ello y sale.


Código conciso:

void OnStart()
{
  while (!IsStopped())
    if ((PositionsTotal() + OrdersTotal() > 2)) // Если (риск превышен) число отложек/позиций больше двух,
    {
      Alert("Risk exceeded!");                  // сообщаем      
      ExpertRemove();                           // и выходим.
    }
}


Observamos el comportamiento del script en función de las acciones manuales. Antes de hacerlo (antes de ejecutar el script), marquemos el número de posiciones en la cuenta PosTotal, órdenes - OrdTotal.

Guión PosTotal/OrdTotal Acción Resultado del guión
01 0/0 Abrir una posición. Obras.
02 0/0 Colocar una posición pendiente. Funciona.
03 0/1 Establecer una pausa. 03 0/1 Poner una pausa.
04 0/1 Abrir una posición. Alerta (no siempre).
05 0/1 Elimina una posición pendiente. Obras.
06 1/0 Poner una orden pendiente. Obras.
07 1/0 Apertura de un puesto. Alerta (no siempre).
08 1/0 Posición cercana. Trabajando.
09 1/1 Borrar una posición pendiente. Trabajando.
10 1/1 Cerrar una posición. Alerta.
11 0/2 Elimina una posición pendiente. Trabajando.
12 2/0 Cerrar una posición. Alerta.


Parece una tarea muy sencilla, pero alertas. ¿Cuáles son las variantes de solución?


Probablemente, deberíamos trabajar en tareas tan simples y desarrollar nuestra comprensión de MT5.

 
fxsaber:

El script vigila el riesgo: si el número total de posiciones y órdenes pendientes es superior a dos, informa de ello y sale.


Código conciso:


Observamos el comportamiento del script en función de las acciones manuales. Antes de hacerlo (antes de ejecutar el script), marquemos el número de posiciones en la cuenta PosTotal, órdenes - OrdTotal.

Guión PosTotal/OrdTotal Acción Resultado del guión
01 0/0 Abrir una posición. Obras.
02 0/0 Colocar una posición pendiente. Funciona.
03 0/1 Establecer una pausa. 03 0/1 Poner una pausa.
04 0/1 Abrir una posición. Alerta (no siempre).
05 0/1 Elimina una posición pendiente. Obras.
06 1/0 Poner una orden pendiente. Obras.
07 1/0 Apertura de un puesto. Alerta (no siempre).
08 1/0 Posición cercana. Trabajando.
09 1/1 Borrar una posición pendiente. Trabajando.
10 1/1 Cerrar una posición. Alerta.
11 0/2 Elimina una posición pendiente. Trabajando.
12 2/0 Cerrar una posición. Alerta.


Parece una tarea muy sencilla, pero alertas. ¿Cuáles son las variantes de solución?


Probablemente, es en tareas sencillas como ésta donde debemos trabajar en nuestra comprensión de MT5.

¿Qué tiene que ver MQ5 con esto? La condición de salida del bucle: IsStopped y no más de dos órdenes. Entonces el script funciona, y si la condición no funciona, el script también.

 
Алексей Тарабанов:

¿Qué tiene esto que ver con MQ5? Condición para salir del bucle: IsStopped y no más de dos órdenes. Entonces el script funciona, y si la condición no funciona, el script también.

El código contiene incluso comentarios.

 
fxsaber:

El script vigila el exceso de riesgo: si el número total de posiciones y órdenes es superior a dos, informa de ello y sale.

Un código conciso:


Parece una tarea muy sencilla, pero alertas. ¿Cuáles son las variantes de solución?


Probablemente este es el tipo de tareas sencillas que deberíamos utilizar para desarrollar nuestra comprensión de MT5.

Creo que tengo que hacer algo así:

void OnStart()
{
   while (!IsStopped())
   {
      //--- посчитаем ордера
      int orders = 0;
      for(int i = 0; i < OrdersTotal(); i++)
         if(OrderGetTicket(i) > 0 && OrderGetInteger(ORDER_TYPE) < ORDER_TYPE_CLOSE_BY) orders++;
      
      if(orders + PositionsTotal() > 2) break;     // выходим
   }
   if(!_StopFlag) Alert("Risk exceeded!");         // сообщаем
}
 
Igor Makanu:

probablemente haya que hacer algo así:

Ciertamente, hay que filtrar los pedidos. No es algo fácil de hacer.

ZS Es una situación interesante en el foro. Respuestas activas a las preguntas. Aquí es diferente, aparentemente.
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2016.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...