Обсуждение статьи "Наивный байесовский классификатор для сигналов набора индикаторов"

 

Опубликована статья Наивный байесовский классификатор для сигналов набора индикаторов:

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

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

Очевидно, что некоторые индикаторы, среди которых и многие из списка стандартных, имеют много общего. В качестве наглядной иллюстрации на рисунке 2 приведены некоторые из встроенных индикаторов.


Группы подобных стандартных индикаторов

Рис. 2 Группы подобных стандартных индикаторов

Автор: Stanislav Korotky

 

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


Смотрю fmtprnt2.mqh, warning-ов много. Почему решили такой шаблонный стиль делать?

    template<typename T>
    CFormatOut *operator<<(const T v)
    {
      if(typename(v) == "int" || typename(v) == "uint"
      || typename(v) == "long" || typename(v) == "ulong"
      || typename(v) == "short" || typename(v) == "ushort")

Ведь для каждого типа можно было бы прописать свой вариант оператора и избежать соответствующих предупреждений компилятора.


ЗЫ Похоже, понял. Библа писалась, когда язык еще не позволял.

 
fxsaber:

Смотрю fmtprnt2.mqh, warning-ов много. Почему решили такой шаблонный стиль делать?

Ведь для каждого типа можно было бы прописать свой вариант оператора и избежать соответствующих предупреждений компилятора.

ЗЫ Похоже, понял. Библа писалась, когда язык еще не позволял.

Можно уточнить идею? В общем-то, этот файл не самый-самый по числу предупреждений. Кое-что действительно можно подчистить.

Если речь о функциях с конкретными типами, на самом деле всегда хочется одним шаблоном все единообразно описать, а не копипейстить варианты с разными типами, ибо зачем тогда шаблоны?

 
Stanislav Korotky:

Можно уточнить идею? В общем-то, этот файл не самый-самый по числу предупреждений. Кое-что действительно можно подчистить.

Если речь о функциях с конкретными типами, на самом деле всегда хочется одним шаблоном все единообразно описать, а не копипейстить варианты с разными типами, ибо зачем тогда шаблоны?

Выше ссылку дал. Там Enum получается идентифицировать.
 

Правильно ли понимаю формулу: P(H|E) = P(E|H) * P(H) / P(E) (1), делая вычисления следующим образом:

P(H|E) = K2 * (1 / K1)

В данном случае рассматриваю индикатор для покупок, если выше ноля, то покупаю.

K2 =это результат деления(отношение) количество баров, где индикатор выше ноля и сделка была прибыльной / общее количество баров

K1 =это отношение количество баров, где индикатор выше ноля / общее количество баров

 
forexman77:

Правильно ли понимаю формулу: P(H|E) = P(E|H) * P(H) / P(E) (1), делая вычисления следующим образом:

P(H|E) = K2 * (1 / K1)

В данном случае рассматриваю индикатор для покупок, если выше ноля, то покупаю.

K2 =это результат деления(отношение) количество баров, где индикатор выше ноля и сделка была прибыльной / общее количество баров

K1 =это отношение количество баров, где индикатор выше ноля / общее количество баров

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


Да, результат при таком подходе, что привел будет смазываться. Лучше наверное заменю индикатор выше ноля, на бар где было пересечение индикатора нулевой отметки.

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

 
интересно, ведь формула байеса позволяет рассчитать вероятность события в зависимости от вероятности другого, связанного, события и индикаторы (по крайней мере приведённые в статье) это та же цена, только вид сбоку. То есть не является ли это попыткой рассчитать вероятность падения бутерброда маслом вниз в зависимости от того, какой стороной он упадёт на пол ?
 
fxsaber:

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

Я попробую пересказать своими словами более просто:

1. Пусть есть три стратегии:

  • стратегия Strat_A на основе индикатора А с вероятностью выигрышной сделки P(Win|A) =0.63
  • стратегия Strat_B на основе индикатора B с вероятностью выигрышной сделки P(Win|B) =0.58
  • стратегия Strat_C на основе индикатора C с вероятностью выигрышной сделки P(Win|C) =0.57

2. Все три индикатора A, B и C не кореллируют между собой - то есть подают сигналы на вход в рынок независимо друг от друга

3. Требуется рассчитать теоретический процент выигрышных сделок для стратегии Start_ABC, при которой вход в рынок происходит только в том случае, если все три индикатора показывают вход в одном направлении одновременно.

Тогда P(Win|ABC) = P(Win|A)* P(Win|B)* P(Win|C) /[ P(Win|A)* P(Win|B)* P(Win|C) - (1 - P(Win|A))*(1 - P(Win|B))*(1 - P(Win|C)) ]


Верно, @Stanislav Korotky ?

 
Rashid Umarov:

Я попробую пересказать своими словами более просто:

Верно, @Stanislav Korotky ?

Да, я вроде почти так и излагал ;-)

 
Stanislav Korotky:

Да, я вроде почти так и излагал ;-)

Тогда напрашивается тема еще одной статьи -  как найти независимые между собой индикаторы автоматически?

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

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