Есть ли закономерность в хаосе? Попробуем поискать! Машинное обучение на примере конкретной выборки. - страница 25

 
Forester #:

При ТП=СЛ будет около 50%. При ТП = 2*СЛ, будет 33% и т.д.
Всегда средняя прибыль с 1 сделки очень маленькая. Около 0,00005. Но и она уйдет на спред, проскальзывания, своп, которые не учтены в разметке учителя (спред учтен, но минимальный на бар, реальный будет выше).
И это Используя  ТП=СЛ=0,00400. Т.е. с риска в 400 получаем прибыль 5 пт, т.е. преимущество 1%.
Хотелось бы с движения 50 пт брать хотя бы 10, но там все варианты сливные.

Но это все с моими фичами и целевыми. Возможно есть варианты лучше.

Вот эта стратегия даёт на EURUSD с 2008 по 2023 год 43% прибыльных сделок, при этом TP/SL коэффициент в идеале 61,8, а для безубытка достаточно 39% прибыльных сделок. Я пока в цифрах не проверил, что выходит может и не прав где, и это конечно идеальные условия. Однако, тут есть перспектива для обучения, а значит можно вытащить больший процент за счет МО.

По поводу предикторов, из моей статьи взяли мои предикторы?   Они часто встречаются в моделях у меня, кроме прочих.

Добавил: Да, я не учел, что есть сделки прибыльные, но не закрытые по TP, а там будет прибыль меньше конечно.
 
Aleksey Vyazmikin #:

Вот эта стратегия даёт на EURUSD с 2008 по 2023 год 43% прибыльных сделок, при этом TP/SL коэффициент в идеале 61,8, а для безубытка достаточно 39% прибыльных сделок. Я пока в цифрах не проверил, что выходит может и не прав где, и это конечно идеальные условия. Однако, тут есть перспектива для обучения, а значит можно вытащить больший процент за счет МО.

По поводу предикторов, из моей статьи взяли мои предикторы?   Они часто встречаются в моделях у меня, кроме прочих.

Не очень понимаю, что у вас за стратегия. Похоже, что сигнал на вход 1 раз в день. Думаю это очень мало, чтобы говорить о стат. значимости результатов.
Ваши 5000+ предикторов по вашему датасету обучал. Больше тех же 5 пт не дают, так что думаю они не лучше моих простых дельт цен и зигзагов, которые тоже 5 пт дают.
Пока проверю др. идеи. Если ничего не дадут, то попробую ваши предикторы нагенерировать к своей модели.

 
Forester #:

Не очень понимаю, что у вас за стратегия. Похоже, что сигнал на вход 1 раз в день.

Стратегия такая:

На открытии дня рассчитываем ожидаемый предельный диапазон движения цены, для этого можно использовать ATR(3) на конец прошлого дня, я использую чуть другую формулу. Этот диапазон откладываем от начала открытия текущего дня (бара) - считаем что он 100%.

При достижении значимого уровня выше/ниже открытия(я остановился на 23,6 так как он часто таким и оказывается на разных инструментах по моим наблюдениям) открываем позицию с TP по следующему значимому уровню (я использую 61,8), а SL ставим на цену открытия дня.

Если закрылись по тейку, то опять входим при появлении сигнала. 

Закрывать лучше в конце дня (23:45) если не сработали тейки, но по факту я сейчас дожидаюсь TP/SL.

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

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

   if(N_Siganal==10)//сейчас работает на открытие позиции при пересечении +23,6/-23,6 iDelta D1
   {
      if(CountMarketOrder_OS==0 && CountMarketOrder_OB==0)
      {
         double Open=iOpen(Symbol(),PERIOD_CURRENT,0);
         double Open_S1=iOpen(Symbol(),PERIOD_CURRENT,1);
         double iDelta=iDeltaf(Symbol(),PERIOD_D1,3,1,0);
         double Open_Day=iOpen(Symbol(),PERIOD_D1,0);
         double iD_Day_Up=0.0;
         double iD_Day_Dn=0.0;
         bool Signal_Buy=false;
         bool Signal_Sell=false;

            iD_Day_Up=Open_Day+iDelta;
            iD_Day_Dn=Open_Day-iDelta;

            if(Open_S1<=iD_Day_Up && Open>iD_Day_Up)Signal_Buy=true;
            if(Open_S1>=iD_Day_Dn && Open<iD_Day_Dn)Signal_Sell=true;
            if(Signal_Buy==true || Signal_Sell==true)break;


         if(Signal_Buy==true || Signal_Sell==true)
         {
            Print("Основной сигнал:"," T_Zero=",TimeToString(T_Zero,TIME_DATE|TIME_MINUTES)," T_Signal=",TimeToString(T_Signal,TIME_DATE|TIME_MINUTES));
            if(T_Zero<T_Signal)
            {
               Signal_Buy=false;
               Signal_Sell=false;
               Print("Блокировка T_Zero<T_Signal - открыта виртуальная позиция");
            }
            else
            {
               if(Signal_Sell==true)SellNow=true;
               if(Signal_Buy==true)BuyNow=true;
            }
         }
      }
   }
Forester #:

Думаю это очень мало, чтобы говорить о стат. значимости результатов.

Данные брал с 2008 года. Да, данных мало, но это смотря как посмотреть, ведь если считать, что уровень 23,6 не случаен и пересечение его значимо для рынка, то это будет как бы похожие события, которые можно сопоставлять друг с другом, в отличии от той ситуации, когда генерируются входы на каждом баре - там много подобных событий, что только затрудняет обучение.

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

Forester #:

Ваши 5000+ предикторов по вашему датасету обучал. Больше тех же 5 пт не дают, так что думаю они не лучше моих простых дельт цен и зигзагов, которые тоже 5 пт дают.
Пока проверю др. идеи. Если ничего не дадут, то попробую ваши предикторы нагенерировать к своей модели.

Это про первую выборку или вторую выборку говорите? Если про первую, так у меня там у хороших вариантов был мат ожидания порядка 30 пунктов же.

Могу попробовать Вашу выборку пообучать на CatBoost, если выгрузите конечно.

 
Aleksey Vyazmikin #:

Стратегия такая:

На открытии дня рассчитываем ожидаемый предельный диапазон движения цены, для этого можно использовать ATR(3) на конец прошлого дня, я использую чуть другую формулу. Этот диапазон откладываем от начала открытия текущего дня (бара) - считаем что он 100%.

При достижении значимого уровня выше/ниже открытия(я остановился на 23,6 так как он часто таким и оказывается на разных инструментах по моим наблюдениям) открываем позицию с TP по следующему значимому уровню (я использую 61,8), а SL ставим на цену открытия дня.

Если закрылись по тейку, то опять входим при появлении сигнала. 

Закрывать лучше в конце дня (23:45) если не сработали тейки, но по факту я сейчас дожидаюсь TP/SL.

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

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

Данные брал с 2008 года. Да, данных мало, но это смотря как посмотреть, ведь если считать, что уровень 23,6 не случаен и пересечение его значимо для рынка, то это будет как бы похожие события, которые можно сопоставлять друг с другом

Теперь более менее понятна целевая.
У вас оценка результата в пунктах или просто выигрыш/проигрыш? Похоже, что второе. Лучше в пт. оценивать.

Чтобы модель дающая 75% не работала на самом деле 50/50.

Aleksey Vyazmikin #:
в отличии от той ситуации, когда генерируются входы на каждом баре - там много подобных событий, что только затрудняет обучение.

Хочу добавить прореживание- подобных баров, если цена не ушла на 100...1000 пт, то пропускать.

Aleksey Vyazmikin #:

Это про первую выборку или вторую выборку говорите? Если про первую, так у меня там у хороших вариантов был мат ожидания порядка 30 пунктов же.

Вторую на Н1.  Ну и по первой было не лучше, (но ее я меньше исследовал, не отбирал фичи например).

Aleksey Vyazmikin #:

Могу попробовать Вашу выборку пообучать на CatBoost, если выгрузите конечно.

Да у меня их сотни вариантов. И ни один не понравился, чтобы ставить в торговлю. Меняю ТП или СЛ или еще что-нибудь - вот и новый вариант. Так что нет смысла.

 
Forester #:

Теперь более менее понятна целевая.
У вас оценка результата в пунктах или просто выигрыш/проигрыш? Похоже, что второе. Лучше в пт. оценивать.

Чтобы модель дающая 75% не работала на самом деле 50/50.

У меня оценка в деньгах :) Плюс целевая, как и раньше было. Целевую можно сместить потом, если хочется больше пунктов.

В конкретной стратегии сейчас все по тейк профиту. Сделал рассчитываемый лот, по факту оказалось, что спред ухудшает пропорцию существенно, ну и ладно, зато будет стабильность без выбросов сверх прибыльных входов - риск везде почти одинаков. Если потом использовать отложки, то можно будет улучшить результат.

Forester #:

Хочу добавить прореживание- подобных баров, если цена не ушла на 100...1000 пт, то пропускать.

А потом оценивать на каждом баре, ну модель применять?

Forester #:

Вторую на Н1.  Ну и по первой было не лучше, (но ее я меньше исследовал, не отбирал фичи например).

Да у меня их сотни вариантов. И ни один не понравился, чтобы ставить в торговлю. Меняю ТП или СЛ или еще что-нибудь - вот и новый вариант. Так что нет смысла.

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

 
Aleksey Vyazmikin #:

А потом оценивать на каждом баре, ну модель применять?

Да, если прошло не менее ХХ пунктов, как при обучении. Но будут искажения - будут чаще работать только первые бары от 100 до 120 (200-220 и т.д.) если вверх и 999-979 (899-979).

Aleksey Vyazmikin #:
Я вообще к тому, что если будет одинаковый алгоритм создания выборки, то можно уже будет сравнить предикторы.


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

 

Доброе время суток!

Есть у меня один подход способный решить эту задачу, но желательно файлы выборки должны быть без предикторов. Т.е. 5000+ предикторов не надо, надо только сам график движения. Будет он состоять из OHLC или иметь одну переменную не важно. Однако имеющийся метод я опробовал на одной переменной из выборке, а именно на столбце 5584, который преобразовал в график по формуле D(i)=D(i-1)+ Target_100_Buy . По всем трём файлам получились вот такие графики:

1) train:

2) test:

3)exam:

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

Ну и собственно профит по каждой из выборок после обучения комитета нейросетей (всего их там 10 штук). Профит выражен в количестве пунктов, при спреде=0 и комиссии=0:

1) train: 

2) test:

3) exam:


Думаю результат в 60000+ пунктов вполне приемлемый.

Предлагаю топикстартеру сделать новые выборки, только самого "хаосного" сигнала.

К новому сигналу будет применён метод и показаны результаты, а также в определённом объёме рассказан подход.


С уважением, RomFil!


P.S. Будущее не известно, но метод его контроля всегда можно найти ... :)

 
RomFil #:

Доброе время суток!

Есть у меня один подход способный решить эту задачу, но желательно файлы выборки должны быть без предикторов. Т.е. 5000+ предикторов не надо, надо только сам график движения. Будет он состоять из OHLC или иметь одну переменную не важно. Однако имеющийся метод я опробовал на одной переменной из выборке, а именно на столбце 5584, который преобразовал в график по формуле D(i)=D(i-1)+ Target_100_Buy . По всем трём файлам получились вот такие графики:

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

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

5581 Auxiliary

5582 Auxiliary

5583 Label

5584 Auxiliary

5585 Auxiliary

 
Aleksey Vyazmikin #:

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

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

5581 Auxiliary

5582 Auxiliary

5583 Label

5584 Auxiliary

5585 Auxiliary

"Что я сделал?":

Выборка train имеет объём около 1ГБ. Загружать её в рабочее пространство достаточно длительная процедура. У меня i5-3570 c 24ГБ оперативы с быстрым SSD в Excel этот файл открывает несколько минут. Потому я решил, что её надо сократить. Разбираться в надписях для 5000+ столбцов мне стало лень. Я взял 5584 5586 столбец и на все строки применил сигнал, к примеру BUY (если честно не помню уже какой может и SELL). тем самым по этому столбцу сформирован график по указанной выше формуле. Т.е. на первом шаге было ноль, потом 0,00007, далее 0,00007-0,00002=0,00005, далее 0,00005+0,00007=0,00012 и т.д. Т.е. я из столбца 5584 5586 сформировал график движения без привязки, так сказать относительный график движения. Как будто это график Close, т.е. по завершению каждого шага графика цена актива изменяется на соответствующую величину.

P.S. Обманул на счёт номера столбца ... Брал самый последний 5586 (только что в экселе посмотрел) с сигналом SELL.

"... зачем новая выборка":

Чтобы на её примере показать и рассказать в определённом объёме про подход. Если назовёте номера столбцов где можно взять цены OHLC или просто Сlose, то этого будет достаточно.

Про остальное:

Данные из файлов выборок не используются вообще. На основе столбцов 5584 5586 из каждого файла сделан по описанному выше график. И уже к этим полученным графикам применяется подход.

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

С уважением, RomFil!

 
RomFil #:

Доброе время суток!

Есть у меня один подход способный решить эту задачу, но желательно файлы выборки должны быть без предикторов. Т.е. 5000+ предикторов не надо, надо только сам график движения. Будет он состоять из OHLC или иметь одну переменную не важно. Однако имеющийся метод я опробовал на одной переменной из выборке, а именно на столбце 5584, который преобразовал в график по формуле D(i)=D(i-1)+ Target_100_Buy . По всем трём файлам получились вот такие графики:

Повторяемости целевой функции обучаете? Например 20 раз была успешна, то и 21-й будет?
Сколько значений подаете на вход, как предикторы?
Вот простейшие целевые для buy и для sell c ТП/СЛ=50 пт

М5 за примерно 5 лет

Разметка на каждом М5 баре, т.е. скорее всего сделка от прошлого сигнала(5 мин назад) еще на завершилась. Не уверен, что правильно будет их складывать. Складывать было бы нормально для целевой, когда только 1 сделка в 1 момент времени - тут и 100 одновременно может быть не завершены в ночное время.

П.С. - у меня они не обучаемы. Всегда дают слив на моем наборе предикторов.

Файлы:
buy.csv  3516 kb
sell.csv  3516 kb
Причина обращения: