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

 
Igor Makanu:

протестировал MT4Orders относительно использования чистого MQL5 (без использования СБ ) https://www.mql5.com/ru/forum/357253/page4#comment_19593443

однозначно, ничего в  MT4Orders не тормозит, и работает отлично

Отдельные от MT4Orders снепшоты не на ровном месте писались. Но это реал. В Тестере сложно создать тормоза.

 

Эта библиотека просто великолепна!!! Так легко запускать код MT4 в MT5. Спасибо большое

У меня есть одна проблема: функция OrderTicket() не возвращает правильное число, когда сделка закрывается. Это настоящая проблема, чтобы следить за сделкой, когда она закрыта.

Например, сделка # 4584849 превращается в # 38484939 после закрытия.

Заранее спасибо за помощь

Это мой код в скрипте:

#include <MT4Orders1.mqh>
void OnStart()
  {
int n=OrdersTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
  Print("History");
  n=OrdersHistoryTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
}
 
Это не проблема. Закрытая позиция в MT5 имеет несколько тикетов. Все они будут работать через SELECT_BY_TICKET.
Возможно, вам нужна функция OrderTicketID().
[Удален]  
А как можно выключить все распринтовки и лишние расчеты (если таковые есть)? Не нашел в дефайнах
 
Maxim Dmitrievsky:
А как можно выключить все распринтовки и лишние расчеты (если таковые есть)? Не нашел в дефайнах

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2019.04.29 15:19

Если требуется не светить использование MT4Orders в своем продукте, можно либо резать соответствующие куски исходника библиотеки, либо поставить универсальную заглушку
// Через макросы обрубаем любые намеки о присутствии MT4Orders.
#define Alert PrintTmp
#define Print PrintTmp
  void PrintTmp( string ) {}
  
  #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
#undef Print
#undef Alert
[Удален]  
fxsaber:

спасибо

 
Нюанс отличия MT4 и MT5.
#include <MT4Orders.mqh>

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Открыли отложку и выбрали ее
    OrderPrint();                                                                                     // Распечатали ее данные
    
  OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0) // Открыли отложку, но не выбирали.
  OrderPrint();                                                   // MT4 вернет тот же результат, что до этого, MT5 - не обязательно.
}


Результат в MT5.

        #827589598 2021.01.13 01:21:17.832 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0
        #827589601 2021.01.13 01:21:17.895 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0 // В MT4 строка бы совпадала с предыдущей.


После торговых операций (в Терминале, не в Тестере) OrderLots(), OrderTicket() и другие значения могут быть изменены. Кто конвертит из MT4, учитывайте это.

 
fxsaber:

После торговых операций (в Терминале, не в Тестере) OrderLots(), OrderTicket() и другие значения могут быть изменены. Кто конвертит из MT4, учитывайте это.

Аналогично и после OrdersTotal.

#include <MT4Orders.mqh>

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Открыли отложку и выбрали ее
    OrderPrint();                                                                                     // Распечатали ее данные
    
  Sleep(10000); // Пауза.
  
  OrdersTotal();
  OrderPrint(); // MT4 вернет тот же результат, что до этого, MT5 - не обязательно.
}


Результат.

        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22112 0.00 0.00 0.00 0
        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22111 0.00 0.00 0.00 0
 
Уважаемый fxsaber скорее всего вопрос-баян, но мне придется его задать. Библа работает хорошо, но в тестере одна особенность появляется. В начале советник что-то очень усиленно молотит, не выдавая тики, то есть как только первый тик происходит что-то очень лютое там запускается и только спустя несколько минут тест начинает идти. Сейчас в MT5 зашел повесил на график сов он так же первый тик съел и одно ядро полностью загружено висит, принчу тики в лог они появляются с периодичностью в 2,5 минуты примерно ). И главное не понятно сколько он еще так будет насиловать терминал и закончит ли вообще). Сов нормально работает на четверке на пятом это не юзабельно в принципе. Ладно я отключил распринтовку, но это только лог очистило а с производительностью как быть то ? Да я использую и хистори тотал и ордер селект, иначе а смысл какой либу юзать. Тоесть потиковые роботы не поюзаешь, плюс эта штука лочит OnTick и соответственно все интерфейсы встают потому что MQL5 OnChartEvent повесила на OnTick, зачем не понятно. Вообще как то можно выключить все вот эт очто так издевается над терминалом или это в принципе не предусмотрено ? Очень хотелось вашу либу использовать в своем продукте, но пока не вижу как
 
И не принимайте близко к сердцу тон, я так всегда...