Bibliotheken: MT4Orders - Seite 90

 

warum macht metaquote alten Code unbrauchbar

2025.06.04 07:10:30.903 Terminal MetaTrader 5 x64 build 5062 gestartet für MetaQuotes Ltd.


MT4Orders.mqh

MT4Orders
MT4Orders
  • www.mql5.com
Parallel use of the MetaTrader 4 and MetaTrader 5 order systems.
 
Samuel Akinbowale #:

Warum wird alter Code durch Metaquote unbrauchbar?

 
fxsaber danke, jetzt funktioniert es
 
fxsaber #:

Ich danke Ihnen!

 
fxsaber #:

Bitte aktualisieren.

Vielen Dank! Jetzt ist alles in Ordnung

Dateien:
MT4Orders2.png  87 kb
 
wieder Fehler Bitte aktualisieren Sie auf die letzte funktionierende
Dateien:
Screenshot_1.png  117 kb
 
#define  MT4ORDERS_BYPASS_MAXTIME 1000000
#include <MT4Orders.mqh> // https://www.mql5.com/de/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 Ungültiger Zugriff auf Zeiger in "HashMap.mqh" (544.21)

Fehler gefunden: Bei der Definition des Makros MT4ORDERS_BYPASS_MAXTIME und dem Aufruf von OrderCommission(); wird die Funktion TRADESID am Ende des EAs aufgerufen, was einen Fehler verursacht.

Wenn Sie das Makro #define REPORT_TESTER oder das Makro MT4ORDERS_BYPASS_MAXTIME deaktivieren, verschwindet der Fehler. Es ist möglich, dass der Fehler im Bericht liegt, aber es ist nicht sicher.

 
hini #:

2025.07.04 19:08:24.215 2025.06.03 23:59:58 Ungültiger Zugriff auf Zeiger in "HashMap.mqh" (544.21)

Vielen Dank für den Fehlerbericht. Der Grund ist folgender.


Einfache Reproduktion des Fehlers, wenn Sie das folgende Skript auf einem Konto mit offenen Aufträgen ausführen.

#property script_show_inputs

input bool inFlag = true;

#define  MT4ORDERS_BYPASS_MAXTIME 1000000
#include <MT4Orders.mqh> // https://www.mql5.com/de/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() {}
 
// Liste ändern:
// 05.07.2025
// Fix: Compiler-Besonderheiten im ByPass-Modus werden berücksichtigt.