Características del lenguaje mql5, sutilezas y técnicas - página 12

 
Leo59:
¡Gracias!
Según tengo entendido, "orden activa" se refiere a las posiciones de COMPRA y/o VENTA, así como a las órdenes pendientes establecidas (aceptadas por el corredor).
Si tengo: posiciones largas y cortas abiertas, y límite de compra y stop de venta establecidos, entonces OrdersTotal() devolverá el valor =4. ¿Correcto?

Puede haber una posición de COMPRA abierta y una orden de COMPRA activa. He proporcionado un código de ejemplo arriba, pero probablemente sea más fácil usar los dedos. ¿Cómo se activa el TP de una posición abierta?

  • El precio alcanza el TP de la posición de COMPRA.
  • El servidor de operaciones crea la correspondiente orden de VENTA activa.
  • Entonces el terminal tiene simultáneamente una posición de COMPRA y una orden de VENTA.
  • La orden de VENTA se ejecuta entrando en el historial y generando una operación allí.
  • La posición inicial de COMPRA se cierra en base a esta operación, que no se captura en ninguna parte - está presente indirectamente en el historial de operaciones.

 
Leo59:
Todo ha sido aceptado desde hace tiempo, y probablemente no es descabellado leer el tutorial de Sergei Kovalev (está incorporado en MQL4) antes de escribir la documentación:
Lee el título del hilo. Todo el mundo pensaba que se trataba de MQL5. Hay una sección correspondiente para MQL4 y MT4 aquí en el foro. Si hicieras tu pregunta allí, la respuesta sería diferente.
 
Leo59:
Todo ha sido aceptado desde hace mucho tiempo, y antes de escribir la documentación, probablemente valdría la pena leer el tutorial de Sergei Kovalev (está integrado en MQL4):


Así se puede construir un bloque en el que se analizan las órdenes de mercado y pendientes:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

El valor inicial i=1 se especifica en la cabecera de la sentencia del bucle, y la condición para el final del bucle es la expresión i<=TotalOrdenes(). La función OrdersTotal() devuelve el importe total de las órdenes de mercado y pendientes, es decir, aquellas órdenes que se muestran en el Terminal en la pestaña de Comercio. Por lo tanto, el número de iteraciones en el bucle será igual al número de órdenes presentes en la operación.

Por favor, inserta el código correctamente:Inserta correctamente el código en el foro(ya he corregido lo que has insertado - y mira: has insertado sólo texto, y ahora es CÓDIGO, con resaltado de sintaxis).
 
Vitaly Muzichenko:

No hay necesidad de agitar)

Este es un código MT4 y no hay división de órdenes y posiciones - todo está mezclado

¿Son diferentes las funciones OrdersTotal( ) en MQL4 y MQL5? El compilador parece ser el mismo ....
 
Leo59:
Todo ha sido aceptado desde hace mucho tiempo, y antes de escribir la documentación, probablemente valdría la pena leer el tutorial de Sergei Kovalev (está integrado en MQL4):


Así se puede construir un bloque en el que se analizan las órdenes de mercado y pendientes:

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

El valor inicial i=1 se especifica en la cabecera de la sentencia del bucle, y la condición para el final del bucle es la expresión i<=TotalOrdenes(). La función OrdersTotal() devuelve el importe total de las órdenes de mercado y pendientes, es decir, aquellas órdenes que se muestran en el Terminal en la pestaña de Comercio. Por lo tanto, el número de iteraciones en el bucle será igual al número de órdenes presentes en la operación.

No sólo estás hablando de mql4 y mostrando código de mql4 (y este hilo trata de las características y sutilezas de la programación en mql5), sino que además has escrito el bucle de forma incorrecta: tienes que empezar desde cero, de lo contrario siempre se perderá una orden.
 
Leo59:
¿Son las funciones OrdersTotal() diferentes en MQL4 y MQL5? El compilador parece ser el mismo ....
Sí, lo son.
 
Leo59:
¿Son las funciones OrdersTotal() diferentes en MQL4 y MQL5? El compilador parece ser el mismo ....

En cuanto a las funciones comerciales, hay diferencias. El MQL4 ya se ha mencionado anteriormente:

Mientras que en MQL5, OrdersTotal() devolverá el número de órdenes pendientes. Así, en MQL5, todo está sistematizado a un nivel superior: las chuletas están separadas, las moscas están separadas.
 
Artyom Trishkin:
Sí, diferente.
¿Y cuál es la diferencia?
 
Leo59:
¿Cuál es la diferencia?

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Peculiaridades de mql5, consejos y trucos

Vladimir Karputov, 2017.02.28 19:44

En cuanto a las funciones comerciales, hay diferencias. Ya ha mencionado el MQL4:

mientras que en MQL5 OrdersTotal() devolverá el número de órdenes pendientes. Así, en MQL5 todo se sistematiza a un nivel superior: chuletas separadas, moscas separadas.

 
Leo59:
¿Cuál es la diferencia?

Total de pedidos()

Devuelve el número de órdenes activas.

intPedidosTotal();

Valor devuelto

Valor de tipo int.

Nota

Las órdenes pendientes activas no deben confundirse con las posiciones, que también se muestran en la pestaña "Comercio" del panel "Caja de herramientas". Una orden es una instrucción para ejecutar una operación, mientras que una posición es el resultado de una o más operaciones.

Con la "compensación" de posiciones (ACCOUNT_MARGIN_MODE_RETAIL_NETTING y ACCOUNT_MARGIN_MODE_EXCHANGE) sólo se puede abrir una posición para cada símbolo en cualquier momento y es el resultado de una o más operaciones. Las posiciones y las órdenes pendientes activas, que también se muestran en la pestaña "Comercio" del panel "Caja de herramientas", no deben confundirse entre sí.

En caso de representación independiente de las posiciones (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) se pueden abrir varias posiciones para cada símbolo simultáneamente.


PosicionesTotal()

Devuelve el número de posiciones abiertas.

intTotalPosiciones();

Valor devuelto

Valor de tipo int.

Nota

Con la "compensación" de posiciones (ACCOUNT_MARGIN_MODE_RETAIL_NETTING y ACCOUNT_MARGIN_MODE_EXCHANGE) sólo se puede abrir una posición para cada símbolo en cualquier momento que resulte de una o más operaciones. Las posiciones y las órdenes pendientes activas, que también se muestran en la pestaña "Comercio" del panel "Caja de herramientas", no deben confundirse entre sí.

En caso de representación independiente de las posiciones (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) se pueden abrir varias posiciones para cada símbolo simultáneamente.


Razón de la queja: