Сразу скажу — стратегия трендовая.
И главное -
тут изложен принцип подхода к созданию своей торговой системы,
а не сама система. Пример который я привожу, в общем, имеет право на жизнь, но лучше использовать все таки что-то поинтереснее.
Вот на рождение интереса и мотивацию этот пост и расчитан!
Сегодня я решил изложить свои основные принципы к подходу создания торговой системы. Но подход таким образом, что бы можно сразу переложить его в код, а не так: «вот тут похоже надо бы купить, а закрыться…. ну вот процента 3% получу от сделки а раньше даже и не ждите». Это пахнет несознательностью. Сразу разделим торговую систему на две части:
- Risk менеджмент (РМ)
- Money менеджмент (ММ)
Что мы вкладываем в этим понятия. РМ – стоит ли вообще входить в сделку. Что мы от нее ждем? На сколько вход в позицию именно сейчас будет успешен? ММ – если мы решили сейчас открыть позицию, то на какой объем? Какие условия должны наступить для увеличения объема а какие для сокращения? Думаю это всем понятно. Теперь основная мысль. Торгового робота можно сделать на любых индикаторах придерживаясь этих двух принципов. Что нам может помочь? Для начала определим, что у нас трендовая торговая стратегия. И мы будем искать начало тренда и дальше сопровождать его или выходить при неблагоприятных обстоятельствах. Будем искать индикаторы силы тренда и определения самого тренда. Сила тренда будет руководить нашим ММ. Если тренд сильный, то можно и увеличить объем. Если слабый, объем уменьшим или вообще не будем делать сделок. За что отвечает Риск менеджмент? Определение тренда нужно для открытия позиции. Собственно что делать сейчас:
Это наш Риск менеджмент – определение направления открытия позиции.
Теперь небольшой пример.
Для тренда возьмем одну SMA. Цена выше – покупаем. Ниже – продаем. Ничего хитрого. Так мы определили тренд.
Что с ММ? Берем индикатор указывающий СИЛУ тренда. Обращаю внимание — именно силу а не направление.
В общем этим индикатором может быть та же SMA, а точнее уровень ее наклона (на самом деле тут лучше использовать соответствующие индикаторы, но для примера и понимания логики этого достаточно).
С силе тренда мы привязываем торгуемый объем. Причем, если мы сможем выделить флэт, то объем желательно поставить на 0.
При нарастании силы тренда мы увеличиваем объем, и наоборот.
Что у нас вышло:
- мы определили основной тренд: только long или только short.
- мы понимаем, когда мы меняем объем торгов.
- мы заходим не на пересечени ценой линии SMA, а тогда, когда позволяет это сделать ее наклон. Если наклон (сила тренда) и пересечение SMA оба достаточны для сделки — мы ее тут же делаем.
В общем то трендовый робот готов!
Поздравляю!
PS
эта статья была написана не как руководство к действию, а как мотивация с созданию своих собственных торговых систем, логика которых не такая уж и сложная.
Если у Вас уже есть идеи, или вы хотите их обсудить или уже хотите наконец переложить свою стратегию в цифровой код — свяжитесь со мной.
Окружите себя друзьями с общим интересом. На начальном этапе всегда нужно советоваться с опытными людьми, ибо мы уже совершили множество ошибок.
Правда если трендовую SMA заменить хотя бы на две SMA или на SAR, а силу тренда измерять ADX(и им же сам тренд к стати так же) то wellcome!
МА,ADX, etc — имеют склонность к запаздыванию. И тогда в лучшем случае удается встать далеко не в начало тренда, в худшем — попасть на разворот…
Есть какие-нибудь готовые реализации?
просто тренд лучше фильтровать не одним а как минимум двумя индикаторами
В том же ADX есть направление тренда — и если он совпадает с основным — то он сильный
и чувствую, что не обойдётся тут без подгонки.
а система реверсная, я так понимаю? )
Хотя, на трендовых инструментах — вполне.
Ув. Dimanite, пару слов бы о доп. фильтрации тренда и точках выхода, если можно.
ну флет отфильтровать пожалуй можно ну не менее 3-мя индюками… иначе сложно
И какие еще индикаторы или стратегии порекомендуете от флэта
// FRAMA — Fractal Adaptive Moving Average
Price = (H+L)/2;
N = Param( «N», 16, 2, 40, 2 ); // must be even
N3 = ( HHV( High, N ) — LLV( Low, N ) ) / N;
HH = HHV( High, N / 2 );
LL = LLV( Low, N / 2 );
N1 = ( HH — LL ) / ( N / 2 );
HH = HHV( Ref( High, — N/2 ), N/2 );
LL = LLV( Ref( Low, — N/2 ), N/ 2 );
N2 = ( HH — LL ) / ( N / 2 );
Dimen = IIf( N1 > 0 AND N2 > 0 AND N3 > 0, ( log( N1+N2) — log( N3 ) )/log( 2 ), Null );
alpha = exp( -4.6 * (Dimen -1 ) );
alpha = Min( Max( alpha, 0.01 ), 1 ); // bound to 0.01...1 range
Frama = AMA( Price, alpha );
Plot( Frama, «FRAMA(»+N+")", colorRed, styleThick );