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

 
Andrey Khatimlianskii:

Есть ли простой способ оставить рабочим свой OnTester после подключения БестИнтервал?

Это не помогает:

Возвращается все равно финальный баланс (а нужен свой сложный критерий, BESTINTERVAL_ONTESTER_FORMULA не решает проблемы).

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

double OnTester()
{
  Print("Hello World");
  
  return(123);
}

В логе увидите сработавший Print, т.е. OnTester выполнится. Но не более - его результат игнорируется.


Вам нужно это

#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#define BESTINTERVAL_ONTESTER_FORMULA MyOnTester()
#include <fxsaber\BestInterval\BestInterval.mqh> // Вычисление лучшего интервала торговли

input int Input = 0;

double MyOnTester()
{
  return(123);
}


Результат

pass 1 returned result 123.000000 in 0:00:00.468
pass 0 returned result 123.000000 in 0:00:00.469
 
Andrey Khatimlianskii:


ps: в последнем билде МТ5 много предупреждений "deprecated behavior, hidden method calling will be disabled in a future MQL compiler version" при компиляции.

Что бы это значило?

 
fxsaber:

Вам нужно это

Не работает с Amount of Delete Intervals = 0.

В проверках дошел до такого советника:

#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#define BESTINTERVAL_ONTESTER_FORMULA MyOnTester()
#include <fxsaber\BestInterval\BestInterval.mqh> // Вычисление лучшего интервала торговли

input int inputParam = 0;

double MyOnTester()
{
  return(inputParam*100);
}

При Amount of Delete Intervals = 0 возвращает стартовый баланс во всех проходах.

При Amount of Delete Intervals = 1 возвращает ожидаемые значения.

 
Andrey Khatimlianskii:

Не работает с Amount of Delete Intervals = 0.

В проверках дошел до такого советника:

При Amount of Delete Intervals = 0 возвращает стартовый баланс во всех проходах.

При Amount of Delete Intervals = 1 возвращает ожидаемые значения.

В строке 713

  if (!inBestInterval_Action && inAmountDeleteIntervals)

уберите второе условие.

 
fxsaber:

В строке 713

уберите второе условие.

Взлетело! Благодарю.

 

У себя в таких универсальных библиотеках инпут-параметры выношу в отдельный файл и оборачиваю ifdef-ом, чтобы можно было вставить их в нужное место, не следя за порядком подключения самих файлов библиотек (который может играть роль).

Может, есть другой, более элегантный, способ управления порядком инпутов?

 
Andrey Khatimlianskii:

Может, есть другой, более элегантный, способ управления порядком инпутов?

Такой косметикой как-то не заморачивался. Столько всего другого нужно сделать...

Хорошо бы хоть где обсуждать перспективные вещи. С этим почти полный молчок.

 
fxsaber:

Хорошо бы хоть где обсуждать перспективные вещи. С этим почти полный молчок.

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

Я всегда за обсуждение, но мало помогу в плане торговли, больше нацелен на технические вопросы.

 
Andrey Khatimlianskii:

Я всегда за обсуждение

При большом количестве сделок и выбрасываемых интервалов появляется интересный объект исследования.

Profit = 55367.00 = 54785.00 + 582.00 (1.06%) - Amount of Delete Intervals = 20
00:00:00 - 02:29:28 : Profit = 8460.00 (15.28%), Total = 293 (88.74%), PF = 4.95, Mean = 28.87, DD = 298.00, RF = 28.39
02:34:20 - 03:06:49 : Profit = 763.00 (1.38%), Total = 74 (79.73%), PF = 1.64, Mean = 10.31, DD = 696.00, RF = 1.10
03:12:43 - 03:46:29 : Profit = 1067.00 (1.93%), Total = 76 (75.00%), PF = 2.07, Mean = 14.04, DD = 440.00, RF = 2.43
03:54:37 - 07:15:26 : Profit = 3641.00 (6.58%), Total = 327 (77.68%), PF = 1.66, Mean = 11.13, DD = 1183.00, RF = 3.08
07:30:54 - 09:16:59 : Profit = 2452.00 (4.43%), Total = 253 (79.45%), PF = 1.57, Mean = 9.69, DD = 877.00, RF = 2.80
09:34:03 - 09:42:17 : Profit = 865.00 (1.56%), Total = 42 (83.33%), PF = 3.03, Mean = 20.60, DD = 177.00, RF = 4.89
09:42:19 - 09:51:57 : Profit = 1389.00 (2.51%), Total = 51 (84.31%), PF = 4.99, Mean = 27.24, DD = 93.00, RF = 14.94
09:56:38 - 10:04:58 : Profit = 1351.00 (2.44%), Total = 75 (82.67%), PF = 2.52, Mean = 18.01, DD = 350.00, RF = 3.86
14:22:11 - 14:46:12 : Profit = 2167.00 (3.91%), Total = 110 (78.18%), PF = 3.33, Mean = 19.70, DD = 488.00, RF = 4.44
14:51:09 - 15:01:51 : Profit = 1511.00 (2.73%), Total = 69 (79.71%), PF = 2.68, Mean = 21.90, DD = 353.00, RF = 4.28
15:04:47 - 15:46:23 : Profit = 3605.00 (6.51%), Total = 297 (76.09%), PF = 1.75, Mean = 12.14, DD = 670.00, RF = 5.38
15:54:05 - 16:04:53 : Profit = 2051.00 (3.70%), Total = 103 (82.52%), PF = 2.65, Mean = 19.91, DD = 299.00, RF = 6.86
16:08:24 - 16:15:39 : Profit = 896.00 (1.62%), Total = 56 (78.57%), PF = 2.22, Mean = 16.00, DD = 167.00, RF = 5.37
16:21:19 - 16:44:18 : Profit = 2159.00 (3.90%), Total = 184 (79.89%), PF = 1.71, Mean = 11.73, DD = 352.00, RF = 6.13
16:54:29 - 17:01:09 : Profit = 1457.00 (2.63%), Total = 68 (82.35%), PF = 4.70, Mean = 21.43, DD = 118.00, RF = 12.35
17:10:30 - 17:30:56 : Profit = 2858.00 (5.16%), Total = 178 (78.09%), PF = 2.07, Mean = 16.06, DD = 431.00, RF = 6.63
17:41:23 - 17:51:28 : Profit = 989.00 (1.79%), Total = 88 (76.14%), PF = 1.65, Mean = 11.24, DD = 478.00, RF = 2.07
17:53:57 - 18:51:41 : Profit = 4399.00 (7.95%), Total = 449 (73.72%), PF = 1.53, Mean = 9.80, DD = 635.00, RF = 6.93
18:56:38 - 19:41:09 : Profit = 1646.00 (2.97%), Total = 181 (75.14%), PF = 1.51, Mean = 9.09, DD = 474.00, RF = 3.47
19:44:55 - 20:03:20 : Profit = 1492.00 (2.69%), Total = 70 (78.57%), PF = 3.25, Mean = 21.31, DD = 130.00, RF = 11.48
20:11:31 - 23:59:59 : Profit = 10149.00 (18.33%), Total = 659 (77.24%), PF = 2.12, Mean = 15.40, DD = 645.00, RF = 15.73
SUMMARY: 00:00:00 - 23:59:59 : Profit = 55367.00 (100.00%), Total = 3703 (78.50%), PF = 2.04, Mean = 14.95, DD = 1247.00, RF = 44.40

Нужно понять, как из этих данных определить хорошие куски торговли. Здесь должно быть сочетание приличного числа сделок в куске, серьезный прирост на единицу времени и т.д. Мне формализовать пока не удалось.


Задача ставится примерно так: при большом количестве выброшенных интервалов определить вероятно системные куски и только на их основе посчитать кастомный критерий Оптимизации.

Решение задачи позволит гораздо больше раскрывать потенциал ТС.

 
fxsaber:

 Мне формализовать пока не удалось.

тогда это задача для нейросети, подготовьте руками данные и обучите НС, потом в дальнейшем будете по обученной НС оценивать результаты

ЗЫ: если на пальцах, то как таблице умножения обучать НС https://www.mql5.com/ru/forum/8265/page2#comment_333746 (я, наверное, уже всех достал этим примером ))) ) - на входы подаете данные, выход Ваша некая оценка, пусть будет по 3-х бальной шкале: отлично, хорошо, неудовлетворительно - с такой задачей НС прекрасно справляется, но придется данные руками подготовить, вернее классифицировать, что по Вашему мнению является хорошим / плохим результатом