Bibliotecas: MT4Orders - página 87

 

Pido disculpas, no he leído todo el hilo. Para obtener el número de posiciones abiertas sin órdenes, ¿hay algún tipo de sobrecarga de OrdersTotal() o tengo que escribir ese código cada vez:

int GetOpenTradesCount()
{
    int count = 0;
    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // Seleccionar orden por posición
        {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) // Sólo cuenta las órdenes de mercado
            {
                count++;
            }
        }
    }
    return count;
}
 
mbjen posiciones abiertas sin órdenes, ¿hay algún tipo de sobrecarga de OrdersTotal() o hay que escribir un código similar cada vez:
#include <MT4Orders.mqh>

int GetOpenTradesCount1()
{
  return(PositionsTotal());
}

int GetOpenTradesCount2()
{
  return(OrdersTotal() - OrdersTotal(false));
}

Tu original es mejor en el sentido de que cuenta una orden MT5 para abrir una posición como una posición abierta. GetOpenTradesCount1 no lo hará.

Su variante de origen es mejor en que no contará la orden MT5 para cerrar una posición. Lo que GetOpenTradesCount2 no hará.

 
fxsaber #:

TotalPedidos(false)

'TotalPedidos' - parámetros incorrectos recuento

 
mbjen #:

TotalPedidos(false)

'TotalPedidos' - parámetros incorrectos recuento

#include <MT4Orders.mqh>
 
fxsaber #:
aa inclusión estaba abajo en el código. Gracias.
 
fxsaber #:

Su variante original es mejor en que cuenta la orden MT5 para abrir una posición como una posición abierta. Que GetOpenTradesCount1 no lo hará.

Su variante de origen es mejor en que no contará la orden MT5 para cerrar una posición. Lo que GetOpenTradesCount2 no hará.

y si la libreria Virtual tambien esta conectada, entonces falla en OrdersTotal(false)

 
// Lista de cambios:
// 26.03.2025
// Corrección: OrderType maneja mejor los tipos de transacciones de saldo.
// Corrección: En el modo ByPass cuando se trabaja con el historial de operaciones, se reduce el número de llamadas a HistorySelect.
// Añadir: La macro MT4ORDERS_LIBRARY activa el modo biblioteca: #import "MT4Orders.ex5".
 

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

Bibliotecas: MT4Orders

fxsaber, 2025.03.26 10:50 pm.

// Lista de cambios:
// 26.03.2025
// Corrección: OrderType maneja mejor los tipos de transacciones de saldo.
// Corrección: En el modo ByPass cuando se trabaja con el historial de operaciones, se reduce el número de llamadas a HistorySelect.
// Añadir: La macro MT4ORDERS_LIBRARY activa el modo biblioteca: #import "MT4Orders.ex5".

Hubo comentarios justos que la biblioteca provoca una grave ralentización de compilación. Es por eso que hemos añadido un modo de biblioteca completa alternativa en forma de EX5-biblioteca importada.


Velocidad de compilación.

Mediciones de la velocidad de compilación en MT4/5 (MT5 - optimización X64_Regular máxima) del siguiente script multiplataforma.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.

¿Cómo aprendiste MQL4/5?

fxsaber, 2024.12.03 14:30

#define  MT4ORDERS_LIBRARY // modo biblioteca: #importar "MT4Orders.ex5".
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006

bool Buy( const double Lots = 0.1, const string Symb = NULL, const string Comm = NULL )
{
  return(OrderSend(Symb, OP_BUY, Lots, SymbolInfoDouble(Symb, SYMBOL_ASK), 0, 0, 0, Comm) != -1);
}

bool Sell( const double Lots = 0.1, const string Symb = NULL, const string Comm = NULL )
{
  return(OrderSend(Symb, OP_SELL, Lots, SymbolInfoDouble(Symb, SYMBOL_BID), 0, 0, 0, Comm) != -1);
}

void OnStart()
{
  Buy();
  Sell();
}

MT4_b1440 MT5_b4885 + MT4Orders MT5_b4885 + MT4Orders_library
90 mseg 5050 mseg 255 mseg
6,0 KBytes 125,4 KBytes 13,3 KBytes

El código en el nuevo modo se compila en MT5 con una velocidad similar a la de MT4. La velocidad de compilación es mayor que cuando se utiliza, por ejemplo, CTrade. Esto se debe a que todas las funciones de trading se importan por analogía, como ocurre en MT4 - el compilador no pierde tiempo con ellas.


Hay un impacto correspondiente en el tamaño de EX5.


Cómo habilitar.

Sólo tiene que crear un archivo MQL5\Libraries\MT4Orders.mq5 de dos líneas y compilarlo una vez.

#property library

// #define MT4ORDERS_BYPASS_MAXTIME 1000000 // Tiempo máximo (en µs) de espera para la sincronización del entorno de negociación.
//define MT4ORDERS_AUTO_VALIDATION // Las órdenes de operación se envían sólo en caso de comprobación correcta
// #define MT4ORDERS_ORDERS_SORT // Formación del historial de órdenes de MT4 ordenadas por hora de cierre/borrado.
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006


A continuación, en su código antes de habilitar MT4Orders, escriba una macro.

#define  MT4ORDERS_LIBRARY // modo biblioteca: #importar "MT4Orders.ex5".
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006


Y la biblioteca ya no afectará a la duración de la compilación.


Signos externos del modo.

Al iniciar su programa puede ver la presencia de la llamada MT4Orders en la pestaña Dependencias.

DLLs no se utilizan, código fuente abierto.

Учебник по MQL5: Расширенные средства языка / Разработка и подключение библиотек двоичных форматов / Создание ex5-библиотек и export функций
Учебник по MQL5: Расширенные средства языка / Разработка и подключение библиотек двоичных форматов / Создание ex5-библиотек и export функций
  • www.mql5.com
Для описания библиотеки следует добавить в исходный код главного (компилируемого) модуля директиву #property library (обычно, в начало файла)...
 
fxsaber #:

Hubo comentarios justos de que la biblioteca provoca una grave ralentización de la compilación. Por eso se añadió un modo alternativo de biblioteca completa en forma de biblioteca EX5 importada.


Velocidad de compilación.

Mediciones de la velocidad de compilación en MT4/5 (MT5 - optimización X64_Regular máxima) del siguiente script multiplataforma.


MT4_b1440 MT5_b4885 + MT4Orders MT5_b4885 + MT4Orders_library
90 mseg 5391 mseg 255 mseg

El código en el nuevo modo se compila en MT5 con una velocidad similar a la de MT4. La velocidad de compilación es mayor que cuando se utiliza, por ejemplo, CTrade. Debido a que todas las funciones de trading se importan por analogía, como ocurre en MT4 - el compilador no pierde tiempo en ellas.


Cómo habilitar.

Sólo tiene que crear el archivo MQL5\Libraries\MT4Orders.mq5 de dos líneas y compilarlo una vez.


Luego en tu código antes de habilitar MT4Orders, escribe una macro.


Y la biblioteca ya no afectará el tiempo de compilación.


Signos externos del modo.

Cuando ejecute su programa podrá ver la presencia de la llamada a MT4Orders en la pestaña Dependencias.

No se utilizan DLLs, código fuente abierto.

Es una opción pésima... un rastrillo en el suelo.

Con demasiada frecuencia ex5 se declara "obsoleto" - y las directivas #import también están sujetas a esto.

 
Maxim Kuznetsov #:

No es una buena opción. Es un rastrillo al viento.

Esta es una gran opción si necesitas compilación rápida. Escribe una línea - compilación rápida, quítala - compilación no rápida con compatibilidad total para el futuro.

SZY https://www.mql5.com/es/market/mt5/library
MQL5 Маркет: Библиотеки
MQL5 Маркет: Библиотеки
  • www.mql5.com
Маркет - магазин программ для MetaTrader 5 и MetaTrader 4