Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы - страница 21

 

Сейчас в Тестере лимитные ордера не проверяются на акцептирование на тике выставления/модификации.

Из-за этого при выставлении лимитника по текущей цене он не исполняется, что идет в разрез с рыночными правилами.


Будут ли изменения в Тестере по данной ситуации?

 

Тестер работает в 12 потоков уже 27 часов. Странная картина по памяти. Тут видно, что приложение не ест много памяти.


Тем более статус агентов более чем свободный.



Еще есть один инстанс, который уже закончил работу в 1 поток. Память в подкачке при этом выделена.


Закрыл отработавший инстанс:

Сразу 26 Гб освободились. Думаю, что потоки держат память в выделенном состоянии? Process Explorer как раз это и показывает. Каждый инстанс держит по 4Гб (кроме одного). При этом один вылетел (должно быть 12).


Проблема в том, что даже несмотря на неиспользование приватной памяти, когда файл подкачки полностью забит, тот же Хром начинает ругаться на нехватку памяти. При это ОЗУ наполовину свободна...


Второй вопрос такой. Почему при генетической оптимизации часто возникают ситуации, когда потоки простаивают и ждут завершения одного потока? Может имеет смысл их забить вычислением с предсказанием, определив различные результаты работы ожидаемого потока? Или же попробовать "встряхнуть" несколько параметров снова и поискать другие решения?

PS. Перевел агенты в disabled и потом снова активировал - память кушать престали. Но сдается мне, что кэш диска тоже заново начнут создавать при запуске?
 

Баг времени отмены отложенного ордера по событию нехватки денег.

Там нулевое время (выделено на скрине) вместо времени отмены.

Ну и состояние placed вместо canceled.

 

Сейчас для анализа ситуации на выделенном куске


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


Может это все заменить двойным щелчком по месту на графике, что выше?

 
fxsaber:

Может это все заменить двойным щелчком по месту на графике, что выше?

по моему это из области фантастики, очень нужная "фича" - поддерживаю !!!

 

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

Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы

fxsaber, 2019.10.14 23:32

в MT5 можно закрыть позицию и получить убыток (баланс до открытия меньше баланса после закрытия). Но при этом MT5-Тестер (Терминал не проверял) будет считать этот трейд прибыльным.

Набросал советник для воспроизведения

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

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  if (!OrderSelect(0, SELECT_BY_POS))
    OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  else if ((OrderProfit() > -OrderCommission()) &&
           (OrderProfit() < -OrderCommission() * 2) &&
           OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
    ExpertRemove();
}


Запускаем в Тестере с торгового сервера, где есть комиссия (запускал на этом: ForexTimeFXTM-Demo01).

Результат в картинках.


На скрине видно, что была одна BUY-позиция, которая закрылась с общим убытком - исходный баланс уменьшился.


И здесь в левом столбце выделено именно это, что советник получил убыток.

А теперь смотрим на выделенное во втором столбце. А там все замечательно: положительное мат. ожидание, 100% прибыльных трейдов!


Вот так и получается, что советник убыточный, а показатели, как у прибыльного. Отсюда же и перекосы в вычислении PF.


ЗЫ Написал пример за минуту. С ужасом думал, сколько же писать его же на чистом MQL5 или СБ. Кому не лень - попробуйте.

 

В Тестере во вкладке Обзор очень удобный список предыдущих действий с интерактивным фильтром.

В этом списке названия советников выводятся без пути. Из-за этого, когда есть два советника с одинаковым названием, но в разных папках, в списке не понять (и не отфильтровать), какой именно советник соответствует записи.


Возможно ли в этом списке предыдущих действий выводить названия советников с их путями от папки Experts?

Индикаторами не пользуюсь, но, наверное, целесообразно то же самое сделать и для них.

 
Тестер при подсчете количества трейдов учитывает обе стороны CloseBy-сделок. Отсюда неправильное количество трейдов, мат. ожидание и т.д.
 
Советник
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

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

int OnInit()
{
  return(OrderCloseBy(OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0), OrderSend(_Symbol, OP_SELL, 
2, Bid, 0, 0, 0)));
}


в отчете вызывает одни нули. Хотя торговля велась.


Почему = 1 - так же не понятно. В исходнике его нет.

 
fxsaber:
Советник


в отчете вызывает одни нули. Хотя торговля велась.


Почему OnTester == 1 - так же не понятно. В исходнике его нет.

В OnInit торговля точно ведётся? А как вы с вашим кодом собираетесь применять GetLastError? И ещё вопрос. Вы уверены в порядке вычисления аргументов функции?
Причина обращения: