Библиотеки: MT4Orders - страница 90

 

почему metaquote делает старый код бесполезным

2025.06.04 07:10:30.903 Запущен терминал MetaTrader 5 x64 build 5062 для MetaQuotes Ltd.


MT4Orders.mqh

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

Почему метацитаты делают старый код бесполезным

 
fxsaber спасибо, теперь работает
 
fxsaber #:

Спасибо!

 
fxsaber #:

Обновите, пожалуйста.

Большое спасибо! Теперь все в порядке

Файлы:
MT4Orders2.png  87 kb
 
снова ошибки, пожалуйста, обновите до последней рабочей версии
Файлы:
Screenshot_1.png  117 kb
 
#define MT4ORDERS_BYPASS_MAXTIME 1000000
#include <MT4Orders.mqh> // https://www.mql5.com/ru/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 Неверный доступ к указателю в «HashMap.mqh» (544.21)

Нашел ошибку: при определении макроса MT4ORDERS_BYPASS_MAXTIME и вызове OrderCommission();, в конце работы советника вызывается функция TRADESID, что приводит к ошибке.

Если вы снимите галочку с макроса #define REPORT_TESTER или макроса MT4ORDERS_BYPASS_MAXTIME, ошибка исчезнет. Возможно, что ошибка в отчете, но это не точно.

 
hini #:

2025.07.04 19:08:24.215 2025.06.03 23:59:58 Неверный доступ к указателю в «HashMap.mqh» (544.21)

Спасибо за баг-репорт. Причина в этом.


Простое воспроизведение бага, если запустить следующий скрипт на счете, где есть открытые ордера.

#property script_show_inputs

input bool inFlag = true;

#define MT4ORDERS_BYPASS_MAXTIME 1000000
#include <MT4Orders.mqh> // https://www.mql5.com/ru/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() {}
 
// Список изменений:
// 05.07.2025
//   Fix: Учитываются особенности компилятора в ByPass-режиме.