Обсуждение статьи "Полезные и экзотические приемы для автоматической торговли"

 

Опубликована статья Полезные и экзотические приемы для автоматической торговли:

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

На самом деле данную механику можно использовать не только на мартингейле, но и на любых других стратегиях, у которых имеется достаточно большая частота трейдов. В данном примере буду использовать показатель на основе просадки по балансу. Потому что все, что связано с балансом, считается проще. Разделим график баланса на растущие и падающие сегменты. Два соседних сегмента образуют полуволну. Количество полуволн стремится к бесконечности при стремлении количества сделок к бесконечности. Но нам хватит и конечной выборки для того, чтобы сделать мартингейл чуточку прибыльнее. Изображу мысли на схеме:

Balance waves

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

Для реализации нам понадобятся два дополнительных входных параметра для нашего мартингейла:

  • { DealsMinusToBreak } - количество убыточных сделок для предыдущего цикла, при котором сбрасываем стартовый лот цикла на стартовое значение
  • LotDecrease } - шаг уменьшения стартового лота цикла при появлении нового цикла в истории сделок

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

Автор: Evgeniy Ilin

 

традиционно полезно и толково.

наводит на правильные мысли

 

что-то все функции сошлись к классике

объём_в_рынке = K*exp(N*просадка_баланса)

или я по неправильной диагонали читал :-)

🤔

 
Maxim Kuznetsov:

что-то все функции сошлись к классике

объём_в_рынке = K*exp(N*просадка_баланса)

или я по неправильной диагонали читал :-)

🤔

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

 
Evgeniy Ilin:

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

знал бы где упасть - соломку подстелил :-)

это про то области повышенной/пониженной просадки баланса и рискованные участки..

они заранее не известны, только пост-фактум. А были-б известны, то метод "посидеть на заборе" зарулит всё :-) на более рискованных участках просто не торговать

 
Maxim Kuznetsov:

знал бы где упасть - соломку подстелил :-)

это про то области повышенной/пониженной просадки баланса и рискованные участки..

они заранее не известны, только пост-фактум. А были-б известны, то метод "посидеть на заборе" зарулит всё :-) на более рискованных участках просто не торговать

Все просто, за пониженной просадкой всегда следует повышенная и наоборот ) теперь можете соломку стелить )

 

really very useful. T o make profit by controlling lot instead of using fixed lot.

By the way, what is the testing Timeframe for the PartialClosing EA?

 
Zhongquan Jiang:

really very useful. T o make profit by controlling lot instead of using fixed lot.

By the way, what is the testing Timeframe for the PartialClosing EA?

Thanks! Partial closing backtest is 2000-2021 on M5  timeframe. But i think it must to be workeable on M1 or any higher timeframes. ) 

 
Evgeniy Ilin:

Все просто, за пониженной просадкой всегда следует повышенная и наоборот ) теперь можете соломку стелить )

на практике картинка из статьи должны иметь ещё пару точек, примерно таких 


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

 
Maxim Kuznetsov:

на практике картинка из статьи должны иметь ещё пару точек, примерно таких 


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

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

 

Скорее всего я не совсем понял смысл, но действительно ли должно быть именно так, а не наоборот (выделено)?

void PartialCloseType()//частично закрыть ордер
   {
   bool ord;
   double ValidLot;
   MqlTick TickS;
   SymbolInfoTick(_Symbol,TickS);
            
   for ( int i=0; i<OrdersTotal(); i++ )
      {
      ord=OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
                            
      if ( ord && OrderMagicNumber() == MagicF && OrderSymbol() == _Symbol )
         {
         if ( OrderType() == OP_BUY )
            {
            ValidLot=CalcCloseLots(OrderLots(),(Open[0]-Open[1])/_Point);
            if ( ValidLot > 0.0 ) ord=OrderClose(OrderTicket(),ValidLot,TickS.bid,MathAbs(SlippageMaxClose),Green);
            }
         if ( OrderType() == OP_SELL )
            {
            ValidLot=CalcCloseLots(OrderLots(),(Open[1]-Open[0])/_Point);
            if ( ValidLot > 0.0 ) ord=OrderClose(OrderTicket(),ValidLot,TickS.ask,MathAbs(SlippageMaxClose),Red);
            }         
         break;
         }
      }

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