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

 
fxsaber:

На неттинге пипсовый режим врет.

Более того, BestInterval на неттинге только в одном специфическом случае (делал под себя) берет историю торгов правильно. Это связано с тем, что BestInterval формирует историю торгов через MT4Orders, а та умеет корректно показывать историю только для хеджа.

Т.е. если в чистый MQL5 советник для хеджа добавить
#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#include <fxsaber\BestInterval\BestInterval.mqh> // Вычисление лучшего интервала торговли

- работать не будет?

А библиотека MT4Orders будет работать, если советник MQL4 использует стандартные или пользовательские индикаторы?

 
Vasiliy Pushkaryov:
Т.е. если в чистый MQL5 советник для хеджа добавить

- работать не будет?

Будет работать полноценно, если перед BestInterval сделаете инклуд MT4Orders.

А библиотека MT4Orders будет работать, если советник MQL4 использует стандартные или пользовательские индикаторы?

Библиотека касается только торговых операций и их истории. Более того, может параллельно работать с СБ и прочими.

Так что индикаторы никак не влияют.

 
fxsaber:

Будет работать полноценно, если перед BestInterval сделаете инклуд MT4Orders.

Библиотека касается только торговых операций и их истории. Более того, может параллельно работать с СБ и прочими.

Так что индикаторы никак не влияют.

Понятно, спасибо, буду пробовать.
 
fxsaber:

BestInterval на неттинге только в одном специфическом случае (делал под себя) берет историю торгов правильно.

А что это за случай, если не секрет? Может у меня что похожее и получится запользовать без шаманства.

 
traveller00:

А что это за случай, если не секрет? Может у меня что похожее и получится запользовать без шаманства.

Переворотная ТС.

 
fxsaber:

Не могу ответить. Сам пока не знаю.

Сказать, что я доволен - явно преуменьшить... BestInterval теперь крут. А изменения минимальны. Как всегда, пример.


Вот круглосуточный проход.


Применяем классический BestInterval.

Profit = 8018.00 = 8018.00 + 0.00 (0.00%) - Amount of Delete Intervals = 0 (2019.09.14 - 2019.12.04)
00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09
SUMMARY: 00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09

Profit = 10721.00 = 8018.00 + 2703.00 (33.71%) - Amount of Delete Intervals = 1 (2019.09.14 - 2019.12.04), 13:00 - 08:00, CountHours = 18
00:00:00 - 08:03:48 : Profit = 3278.00 (30.58%), Total = 161 (79.50%), PF = 2.21, Mean = 20.36, DD = 518.00, RF = 6.33
13:07:59 - 23:59:59 : Profit = 7443.00 (69.42%), Total = 389 (74.55%), PF = 2.14, Mean = 19.13, DD = 417.00, RF = 17.85
SUMMARY: 00:00:00 - 23:59:59 : Profit = 10721.00 (100.00%), Total = 550 (76.00%), PF = 2.16, Mean = 19.49, DD = 536.00, RF = 20.00

Видим, что на треть увеличился профит, ну и другие показатели стали лучше.


Но хотелось гибкости. И вот она.

Profit = 8018.00 = 8018.00 + 0.00 (0.00%) - Amount of Delete Intervals = 0 (2019.09.14 - 2019.12.04)
00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09
SUMMARY: 00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09

Profit = 4868.00 = 8018.00 + -3150.00 (-39.29%) - Amount of Delete Intervals = 1 (2019.09.14 - 2019.12.04), 20:00 - 01:00, CountHours = 4
00:00:00 - 01:31:54 : Profit = 1067.00 (21.92%), Total = 32 (87.50%), PF = 4.63, Mean = 33.34, DD = 177.00, RF = 6.03
19:29:54 - 23:59:59 : Profit = 3801.00 (78.08%), Total = 118 (83.90%), PF = 5.53, Mean = 32.21, DD = 249.00, RF = 15.27
SUMMARY: 00:00:00 - 23:59:59 : Profit = 4868.00 (100.00%), Total = 150 (84.67%), PF = 5.29, Mean = 32.45, DD = 310.00, RF = 15.70


Профит не увеличился, а уменьшился! Но посмотрите на другие показатели. Вместо того, чтобы найти интервал с самым большими профитом и вероятностью подгонки, был найден гораздо более узкий интервал, но куда вкуснее, чем классика.


Новшество добавляется так

#define BESTINTERVAL_SLIPPAGE // Создание искусственного фильтра для вычисления BestInterval.


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

 
Так 150 сделок это ж куда более вероятная подгонка, не?
 
trader_number_one:
Так 150 сделок это ж куда более вероятная подгонка, не?

Количество сделок зависит от длины интервала.

 

Иногда запарывается удаление интервалов. А именно

const double Profit = dDeals[i].Profit + SlipPerLot * dDeals[i].Lots;

выдаёт NaN из-за того, что dDeals[i].Lots равно NaN при i=0.

Похоже, что ноги растут из функции int Set( const DEAL &dDeals[] ) где при Amount=0 не заполняется поле Lots. Или правильней сказать, что в void ToNull( void ) не зануляется Lots?

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

 
traveller00:

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

Да, на радостях выложил сразу, не проверив, как следует. Буду проверять, Спасибо.

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