Bibliotecas: MT4Orders - página 90

 
Samuel Akinbowale #:

¿por qué las metacitas inutilizan el código antiguo?

 
fxsaber gracias , ahora funciona
 
fxsaber #:

Gracias.

 
fxsaber #:

Actualización por favor.

muchas gracias! todo esta bien ahora

Archivos adjuntos:
MT4Orders2.png  87 kb
 
de nuevo errores por favor, actualice a la última de trabajo
Archivos adjuntos:
Screenshot_1.png  117 kb
 
#define  MT4ORDERS_BYPASS_MAXTIME 1000000
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006
#define  REPORT_TESTER 
#include < Report.mqh>

int OnInit ()
{
   return INIT_SUCCEEDED ;
}
void OnDeinit ( const int r) {

}

#define  Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID )
#define  Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnTick () {
   static const datetime BeginTime = TimeCurrent ();

   static const TICKET_TYPE Ticket3 = OrderSend ( _Symbol , OP_BUY, 1 , Ask, 0 , 0 , 0 );
   static const TICKET_TYPE Ticket4 = OrderSend ( _Symbol , OP_SELL, 1 , Bid, 0 , 0 , 0 );
   if ( OrdersTotal () && ( TimeCurrent () - BeginTime > 24 * 3600 )) {
    OrderCloseBy(Ticket3, Ticket4);
  }
   for ( int i = OrdersTotal (); i > 0 ; i--) {
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
     double comm = OrderCommission();
  }
}
//+------------------------------------------------------------------+

2025.07.04 19:08:24.215 2025.06.03 23:59:58 Acceso no válido a puntero en "HashMap.mqh" (544.21)

Se ha encontrado un error: al definir la macro MT4ORDERS_BYPASS_MAXTIME y llamar a OrderCommission();, se llama a la función TRADESID al final del EA, lo que provoca un error.

Si desmarca la macro #define REPORT_TESTER o la macro MT4ORDERS_BYPASS_MAXTIME, el error desaparece. Es posible que el error esté en el informe, pero no es seguro.

 
hini #:

2025.07.04 19:08:24.215 2025.06.03 23:59:58 Acceso no válido a puntero en "HashMap.mqh" (544.21)

Gracias por el informe de error. El motivo es el siguiente.


Reproducción sencilla del bug si ejecutas el siguiente script en una cuenta con órdenes abiertas.

#property script_show_inputs

input bool inFlag = true;

#define  MT4ORDERS_BYPASS_MAXTIME 1000000
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006

class A
{
public:  
  A() { if (OrderSelect(0, SELECT_BY_POS) && inFlag) OrderPrint(); }
  ~A() { OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY); }
} a;

void OnStart() {}
 
// Lista de cambios:
// 05.07.2025
// Corrección: Se tienen en cuenta las peculiaridades del compilador en el modo ByPass.
 
fxsaber #:
Gracias por el informe de errores. La razón es la siguiente.
Ya veo, mi entorno de prueba está en b5120, al menos b5120 ya tiene este problema.