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

 
Dmitry Fedoseev:

Кое какие рудименты по работе с историей обнаруживаются:

При каждом вызове OrdersHistoryTotal() выполняется пробежка трусцой по всей истории счета с кучей проверок.

Выделение в истории по индексу то же с пробежкой по всей истории.

Это не рудимент, а, к большому сожалению, необходимость.

Dmitry Fedoseev:
Какие же были тесты касающиеся работы с историей?

 Все не опишу, их было много. Проверялась история в различных искусственных ситуациях, а также история во время выполнения MT4-советников

if (MQLInfoInteger(MQL_VISUAL_MODE))
    Comment("Trade:" + OrdersToString() + "\nHistory:" + OrdersToString(MODE_HISTORY)); // в визуальном режиме тестера можно посмотреть
 

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

Советники: Spreader

fxsaber, 2016.09.03 11:18

Вы можете это проверить в MT5-тестере.

// Это MT5-советник, который позволяет запускать соответствующий
// MT4-советник в мультивалютном MT5(Hedge)-тестере (с реальными тиками)

// https://www.mql5.com/ru/code/16006
#include <MT4Orders.mqh>
#include <MQL4_to_MQL5.mqh>

//#include "Spreader_v1.mq4" // https://www.mql5.com/ru/code/9484
#include "Spreader_v2.mq4" // https://www.mql5.com/ru/code/9495

void OnTick()
{
  start();
}

Результат мультивалютного бэктеста с дефолтными настройками в режиме EURUSD M1 OHLC

 

 

 

 

 Подробности в файле отчета.


 
Здравствуйте! Можно пошаговое инструкцию или видео как взять любой MT4 эксперт и заставить тестироваться в MT5 платформе?
 
Nauris Zukas:
Здравствуйте! Можно пошаговое инструкцию или видео как взять любой MT4 эксперт и заставить тестироваться в MT5 платформе?
 

Автор создавал такую возможность для себя, поэтому намеренно не проводил подобную же идею перехода "одной строкой" для таймсерий, графических объектов, индикаторов и т.д.

Данная работа затрагивает только ордерную систему.

Работа по выделенному жирным 

MQL's OOP notes: Converting MetaTrader 4 indicators to MetaTrader 5
MQL's OOP notes: Converting MetaTrader 4 indicators to MetaTrader 5
  • 2016.09.28
  • //www.mql5.com/en/users/marketeer">
  • www.mql5.com
It has been a long time since MetaTrader 5 was released, but MQL products for MetaTrader 4 do still prevail on mql5.com site (both in the codebase, and in the market), and in the Internet in general....
 

Вот что обнаружил. В коде не работает OrderSelect. А что с переменной терминала МТ4 Ask? Она никак не эмулируется?

#include <mt4orders.mqh>

void OnStart()
{
    MqlTick last_tick;
    SymbolInfoTick(Symbol(),last_tick);
    double Ask = last_tick.ask;
    int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 10, 0, 0);
    if(ticket > 0)
        if(OrderSelect(ticket, SELECT_BY_TICKET))// не выбирает, хотя позиция открывается, ticket = 28912052. В терминале во вкладке "Торговля" Тикет = 38631303
        {
            double price = OrderOpenPrice();
            Print("price = ", DoubleToString(price, Digits()));
        }
}

 

ticket


 
Alexey Volchanskiy:

Вот что обнаружил. В коде не работает OrderSelect.

Да, OrderSend возвращает тикет не позиции, а ордера/сделки. Это эффект того, что библиотека писалась и проверялась только на оффлайн-тестере.

Думал, что никто все равно не пользуется, поэтому исправленный вариант не выкладывал (давно поправил). По той же причине не выкладывал вариант, который способен работать и на биржах.

А что с переменной терминала МТ4 Ask? Она никак не эмулируется?

Все, что не относится к ордерной языковой системе, вынесено отдельно
#include <MQL4_to_MQL5.mqh>
ЗЫ Исправленный вариант скинул в ЛС.
 
fxsaber:

Исправленный вариант скинул в ЛС.


А почему не обновить публикацию-то? Всем же надо.

 
Stanislav Korotky:

А почему не обновить публикацию-то? Всем же надо.

К сожалению, обновление публикаций в кодобазе происходит (модерируется) не так часто, как хотелось бы. 

 
Stanislav Korotky:

А почему не обновить публикацию-то? Всем же надо.

Во, а то fxsaber расстраивается, что я один эту ошибку заметил, значит, никому либа не нужна )) Просто народ у нас ну очень наблюдательный. 

Анекдот из жизни - вел вебинар, раз 10 повторил, что запись будет. В конце говорю еще раз, запись будет завтра, если есть вопросы - задавайте. А теперь угадайте первый вопрос ))) 

Причина обращения: