Bibliotecas: MT4Orders - página 80

 
pcdeni #:

hasta ahora el uso de memoria no parece ser menor.

Necesito datos para reproducir el problema. Código lacónico y acceso de inversión a la cuenta de trading donde se produce el problema. Quizás en mensajes privados.

Por curiosidad, ¿dónde se define OrderSwap()? No lo encuentro en el código.

MT4_ORDERFUNCTION(Swap, double, ::PositionGetDouble(POSITION_SWAP), 0, true)
 
Hola, tengo un problema extraño. He estado usando esta biblioteca desde hace algún tiempo, quiero decir GRACIAS ENORMES , su increíble ayuda,

Así que nunca tuve ningún problema con la inclusión de esta biblioteca / código en EAs durante años.

Ahora, cuando estoy compilando MT5 EA, devuelve 3 errores de este código, todos ellos son básicamente alrededor de 1 línea: ( ver código abajo )
'=' - token inesperado MT4Orders.mqh 192 25
')' - token inesperado MT4Orders.mqh 192 68
'*=' - nombre esperado MT4Orders.mqh 194 13

en mi EA también estoy incluyendo:

#include <stderror.mqh>
#include <stdlib_mq5.mqh>
#import"kernel32.dll"

¿Tiene alguna idea de lo que podría estar pasando aquí ?

Biblioteca solo compila sin errores, sin problemas, como de costumbre. Sólo al intentar compilar EA, arroja esos errores.

#define  ORDER_SELECT (-2)

   static int GetDigits( double Price )
  {
    int Res = 0;

    while ((bool)(Price = ::NormalizeDouble(Price - (int)Price, 8)))   // <- LÍNEA 192 así que esto es aparentemente un problema "= :: "
    {
      Price *= 10; // LINE 194

      Res++;
    }

    return(Res);
  }

He encontrado algo sospechoso en mi EA :
union Price
  {
   uchar             buffer[8];
   double            close;
  };

¿Así que el nombre del Precio de la unión sobrescribe el nombre del Precio en la función GetDigits ? este podría ser el problema ?
 
Filip Valkovic #:
He encontrado algo sospechoso en mi EA :
por lo que este nombre de Precio de unión sobrescribe el nombre de Precio en la función GetDigits ? esto podría ser el problema ?

Esta es la razón.

 
Por favor, ayúdenme a identificar un error en el cálculo de comisiones. Para ello, ejecute este script en cualquier cuenta de trading disponible.
// Cálculo y comparación de la comisión/swap/ganancia total a través de MT4/MT5-Style.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tiempo máximo (en µs) de espera para la sincronización del entorno comercial
#include <MT4Orders.mqh>

#define  TOSTRING(A) (#A + " = " + DoubleToString(A, 2))
#define  PRINT(A, B) Print(TOSTRING(A) + ", " + TOSTRING(B) + ", " + (string)!NormalizeDouble((A) - (B), 2))

// Estilo MT4
void Calc_MT4( double &Commission, double &Swap, double &Profit )
{
  Commission = 0;
  Swap = 0;
  Profit = 0;
  
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL))
    {
      Commission += OrderCommission();
      Swap += OrderSwap();
      Profit += OrderProfit();
    }
}

// Estilo MT5
void Calc_MT5( double &Commission, double &Swap, double &Profit )
{
  Commission = 0;
  Swap = 0;
  Profit = 0;
  
  if (HistorySelect(0, INT_MAX))  
    for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
    {
      const ulong Ticket = HistoryDealGetTicket(i);
      
      if (HistoryDealGetInteger(Ticket, DEAL_TYPE) <= DEAL_TYPE_SELL)
      {
        Commission += HistoryDealGetDouble(Ticket, DEAL_COMMISSION);
        Swap += HistoryDealGetDouble(Ticket, DEAL_SWAP);
        Profit += HistoryDealGetDouble(Ticket, DEAL_PROFIT);
      }
    }
}

void OnStart()
{
  if (PositionsTotal())
    MessageBox("The script works when there are no open positions.");
  else
  {
    double Commission_MT4, Swap_MT4, Profit_MT4;
    double Commission_MT5, Swap_MT5, Profit_MT5;
    
    Calc_MT4(Commission_MT4, Swap_MT4, Profit_MT4); // Estilo MT4
    Calc_MT5(Commission_MT5, Swap_MT5, Profit_MT5); // Estilo MT5
    
    PRINT(Commission_MT4, Commission_MT5);
    PRINT(Swap_MT4, Swap_MT5);
    PRINT(Profit_MT4, Profit_MT5);
  }
}


Producirá algo como esto.

Commission_MT4 = -15591.12, Commission_MT5 = -15591.12, true
Swap_MT4 = -5948.77, Swap_MT5 = -5948.77, true
Profit_MT4 = 34851.13, Profit_MT5 = 34851.13, true


En caso de que haya algo falso en el espacio resaltado, hágamelo saber. Gracias.

 
2023.01.02 13:23:28.780 fxsaber_test (EURCHF,H1)        Commission_MT4 = -2875.33, Commission_MT5 = -2875.29, false
2023.01.02 13:23:28.835 fxsaber_test (EURCHF,H1)        Swap_MT4 = -1051.56, Swap_MT5 = -1051.56, true
2023.01.02 13:23:28.835 fxsaber_test (EURCHF,H1)        Profit_MT4 = 7198.08, Profit_MT5 = 7198.08, true
 
Enrique Dangeroux #:

¿Estás seguro de haber compilado con esa línea?

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

Bibliotecas: MT4Orders

fxsaber, 2023.01.02 12:24 pm.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tiempo máximo (en µs) de espera para la sincronización del entorno comercial
EX5 de telegrama da falso?
 
Compilado por copypaste 1:1, excepto por los puntos y comas que faltan después de Swap = 0.
 
fxsaber #:

¿EX5 de telegram va falso?

Esta es probablemente la forma más fiable de descartar el desajuste de la versión de origen.

 
Escribe a EX5 mensajes privados, no tengo acceso a telegram en este momento
 

Con la directiva #define MT4ORDERS_FASTHISTORY_OFF habilitada, no compila - genera muchos errores.

Anteriormente tuve que habilitar esta directiva porque algunas funcionalidades (discutidas aquí ) usadas en el artículo no están disponibles sin ella. Si la funcionalidad sigue siendo reducida, es conveniente corregirlo.

Библиотеки: MT4Orders - Попробуйте отключить этот медленный режим. Выделенная ссылка отвечает за игнорирование закрытых позиций по CloseBy, а поиск соответствующего выхода
Библиотеки: MT4Orders - Попробуйте отключить этот медленный режим. Выделенная ссылка отвечает за игнорирование закрытых позиций по CloseBy, а поиск соответствующего выхода
  • 2019.09.27
  • www.mql5.com
что такой простой код не работал корректно в MT5 со старой версией библиотеки. Было бы очень желательно указать как минимум в шапке комменатриев исходника. а поиск соответствующего выхода как раз обложен условной компиляцией на MT4ORDERS