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

 
Sergey Chalyshev:

пока ничего не делал, пытаюсь скомпилировать этот код:

Этот код компилируется. Virtual и BestInterval вчера были обновлены. Возможно, у Вас старая версия.

без Virtual компилируется,

без BestInterval тоже компилируется,

вместе не хочет.

Библиотеки были полностью независимыми до обновления, поэтому возникал конфликт. Версии, что выложил вчера, этой проблемы не имеют.
 

Как это понимать?

2018.10.16 15:54:45.104 Core 1  2018.08.30 23:59:59   Amount of Delete Intervals = 0
2018.10.16 15:54:45.104 Core 1  2018.08.30 23:59:59   SUMMARY: 00:00:00 - 23:59:59 : Profit = 0.00, Total = 0, PF = Max, Mean = 0.00
2018.10.16 15:54:45.104 Core 1  final balance 2978.46 USD
2018.10.16 15:54:45.104 Core 1  OnTester result 0
Нет ещё одного входного параметра из Вашей библиотеки.

 
Sergey Pavlov:

Как это понимать?

Нет ещё одного входного параметра из Вашей библиотеки.

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

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

fxsaber, 2018.10.16 14:57

Virtual и BestInterval вчера были обновлены. Возможно, у Вас старая версия.

 
fxsaber:

Этот код компилируется. Virtual и BestInterval вчера были обновлены. Возможно, у Вас старая версия.

Спасибо!

Обновил Virtual, компилируется.

 
fxsaber:

Советник компилируется, интервалы для пропуска обсчитываются, файлик в Common появляется.

Этап 1.

Но параметр inBestInterval_Action в тестере отсутствует и не появляется ни с VIRTUAL_TESTER, ни без него.

Этап 2.

Соответственно выполнить тест с учетом выброшенных интервалов никак не получается.

Нужна помощь - что я делаю не так?

 
Mikola_2:

Советник компилируется, интервалы для пропуска обсчитываются, файлик в Common появляется.

Но параметр inBestInterval_Action в тестере отсутствует и не появляется ни с VIRTUAL_TESTER, ни без него.

Соответственно выполнить тест с учетом выброшенных интервалов никак не получается.

Нужна помощь - что я делаю не так?

VIRTUAL_TESTER нужен только для ускорения Оптимизации, либо реверса. Поэтому для работы с BestInterval он не прописывается

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

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

fxsaber, 2018.10.15 13:30

1. Берете любой советник и прописываете в его начало эти строки

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

#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/ru/code/22710


ЗЫ Хорошо, что в коде разобрались. Если библиотеки в таком же виде, что и в КБ, то причин не знаю. Возможно, забыли скомпилировать, когда убирали VIRTUAL_TESTER.

 

fxsaber:

ЗЫ Хорошо, что в коде разобрались. Если библиотеки в таком же виде, что и в КБ, то причин не знаю. Возможно, забыли скомпилировать, когда убирали VIRTUAL_TESTER.

Создал файл TesterEA_mq4.mq5 следующего содержания:

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/ru/code/22710
#include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>

Файл TesterEA.mq4 оригинальный, из КБ. Скомпилировал нормально.

MT4Orders, Virtual, BestInterval - свежие из КБ.

В EMA.mqh исправил (выскакивала ошибка деления на ноль):

EMA( const int period ) : Alpha(1.0 / period), Value(0)

на

EMA( const int period ) : Alpha(2.0 / (period+1.0)), Value(0)

Пробовал в BestInterval.mqh вместо

#ifndef VIRTUAL_TESTER
  sinput
#endif
bool inBestInterval_Action = false; // BestInterval Action

делать

//#ifndef VIRTUAL_TESTER
//  sinput
//#endif
sinput bool inBestInterval_Action = false; // BestInterval Action

переменная BestInterval Action в тестере появляется, при BestInterval Action=false в логе всё красиво, но при BestInterval Action=true тест идёт целиком и в логе ничего про интервалы не пишет...

А жалко...   :)

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
 
Mikola_2:

Создал файл TesterEA_mq4.mq5 следующего содержания:

Файл TesterEA.mq4 оригинальный, из КБ. Скомпилировал нормально.

MT4Orders, Virtual, BestInterval - свежие из КБ.

В EMA.mqh исправил (выскакивала ошибка деления на ноль):

EMA( const int period ) : Alpha(1.0 / period), Value(0)

на

EMA( const int period ) : Alpha(2.0 / (period+1.0)), Value(0)

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

Пробовал в BestInterval.mqh вместо

делать

переменная BestInterval Action в тестере появляется, при BestInterval Action=false в логе всё красиво, но при BestInterval Action=true тест идёт целиком и в логе ничего про интервалы не пишет...

А жалко...   :)


Для Action вот такой исходник

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

//#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/ru/code/22710

#include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>


При Action = true  в отчете Тестера должен получиться такой же профит, как был расчитан в логе при Action = false.

 
fxsaber:

Для Action вот такой исходник

При Action = true  в отчете Тестера должен получиться такой же профит, как был расчитан в логе при Action = false.

   Неа, не выходит каменный цветок...   :)   

   В таком виде при Action = true вообще перестаёт закрывать ордера и мигом всю маржу новыми ордерами выжирает (видимо что-то с CloseBy)...

   С отключенной Virtual.mqh всё работает, только Action интервалы игнорирует.

   А разобраться глубже в Вашем коде ещё та задачка...  Пожалуй, я пока пас.   ;)

 
Mikola_2:

   Неа, не выходит каменный цветок...   :)   

   В таком виде при Action = true вообще перестаёт закрывать ордера и мигом всю маржу новыми ордерами выжирает (видимо что-то с CloseBy)...

Не удивлюсь, если на Неттинге запускали. Там CloseBy не пашет.

   С отключенной Virtual.mqh всё работает, только Action интервалы игнорирует.

   А разобраться глубже в Вашем коде ещё та задачка...  Пожалуй, я пока пас.   ;)

Делайте на хедже. Для неттинга не заморачивался, т.к. MT4-советник не предполагался запускаться в таком режиме, конечно.


ЗЫ Алгоритм игнора плохих промежутков простой. ТС запускается в виртуальном окружении. Вычисляется там неттинг-позиция только тех открытых позиций, что подходят под расчетные промежутки. Далее идет в реальном окружении синхронизация своей неттинг-позиции с виртуальной. Делается это самым некрасивым для анализа, но простым для реализации способом - CloseBy.

Собственно, Reverse-режим реализован так же. Можно CloseBy-вариант переписать, чтобы и на Неттинг-счетах пахало. Не до этого было.

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