RIdayTrader

Конструктор торгового робота

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

Вот на рождение интереса и мотивацию этот пост и расчитан!

Сегодня я решил изложить свои основные принципы к подходу создания торговой системы. Но подход таким образом, что бы можно сразу переложить его в код, а не так: «вот тут похоже надо бы купить, а закрыться…. ну вот процента 3% получу от сделки а раньше даже и не ждите». Это пахнет несознательностью. Сразу разделим торговую систему на две части:

  • Risk менеджмент (РМ)
  • Money менеджмент (ММ)
Что мы вкладываем в этим понятия. РМ – стоит ли вообще входить в сделку. Что мы от нее ждем? На сколько вход в позицию именно сейчас будет успешен? ММ – если мы решили сейчас открыть позицию, то на какой объем? Какие условия должны наступить для увеличения объема а какие для сокращения? Думаю это всем понятно. Теперь основная мысль. Торгового робота можно сделать на любых индикаторах придерживаясь этих двух принципов. Что нам может помочь? Для начала определим, что у нас трендовая торговая стратегия. И мы будем искать начало тренда и дальше сопровождать его или выходить при неблагоприятных обстоятельствах. Будем искать индикаторы силы тренда и определения самого тренда. Сила тренда будет руководить нашим ММ. Если тренд сильный, то можно и увеличить объем. Если слабый, объем уменьшим или вообще не будем делать сделок. За что отвечает Риск менеджмент? Определение тренда нужно для открытия позиции. Собственно что делать сейчас:

  • Купить
  • Продать
Это наш Риск менеджмент – определение направления открытия позиции.

Теперь небольшой пример.

Для тренда возьмем одну SMA. Цена выше – покупаем. Ниже – продаем. Ничего хитрого. Так мы определили тренд.

Что с ММ? Берем индикатор указывающий СИЛУ тренда. Обращаю внимание — именно силу а не направление.
В общем этим индикатором может быть та же SMA, а точнее уровень ее наклона (на самом деле тут лучше использовать соответствующие индикаторы, но для примера и понимания логики этого достаточно).

С силе тренда мы привязываем торгуемый объем. Причем, если мы сможем выделить флэт, то объем желательно поставить на 0.
При нарастании силы тренда мы увеличиваем объем, и наоборот.

Что у нас вышло:

  • мы определили основной тренд: только long или только short.
  • мы понимаем, когда мы меняем объем торгов.
  • мы заходим не на пересечени ценой линии SMA, а тогда, когда позволяет это сделать ее наклон. Если наклон (сила тренда) и пересечение SMA оба достаточны для сделки — мы ее тут же делаем.
В общем то трендовый робот готов!
Поздравляю!

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

Окружите себя друзьями с общим интересом. На начальном этапе всегда нужно советоваться с опытными людьми, ибо мы уже совершили множество ошибок.
★56
27 комментариев
на главную и в избранное!
Тимофей Мартынов, хм… да ладно — это ж так наброски можно сказать. Не умаю что можно прям так вот с чистого листа загнать в терминал.

Правда если трендовую SMA заменить хотя бы на две SMA или на SAR, а силу тренда измерять ADX(и им же сам тренд к стати так же) то wellcome!
avatar
К сожалению, 80% сложностей возникает не в том, что здесь описано (все это интуитивно ясно и без особой формализации), а как раз, когда доходит до перевода сущностей (сила тренда, направление и т.д.) — в осязаемые инструменты торговли…
МА,ADX, etc — имеют склонность к запаздыванию. И тогда в лучшем случае удается встать далеко не в начало тренда, в худшем — попасть на разворот…

Есть какие-нибудь готовые реализации?
avatar
acula_fx, на самом деле ADX ведет себя достаточно хорошо
просто тренд лучше фильтровать не одним а как минимум двумя индикаторами
В том же ADX есть направление тренда — и если он совпадает с основным — то он сильный
avatar
Dimanite, еще небольшой вопросик (вдруг у Вас наработки на этот счет имеются). Знаете ли Вы механизм раннего определения тренда (путем доп. фильтрации или без неё) на трендовых и свинговых инструментах?
avatar
под SMA подразумевается Simple MovAvg?
avatar
shizafrenik, ну да… ну просто мувинг — ставь любую EMA например
avatar
протестировать на истории забыли )
и чувствую, что не обойдётся тут без подгонки.
а система реверсная, я так понимаю? )
Convertor, из сказанного вроде вытекает что реверсная. А реверсная трендовая система на флэте — самая раззорительная, по крайней мере из того что мне приходилось видеть.

Хотя, на трендовых инструментах — вполне.

Ув. Dimanite, пару слов бы о доп. фильтрации тренда и точках выхода, если можно.
avatar
acula_fx, тут на самом деле все не однозначно и сложно. Для очень сильной фильтраци будем брать разные графики с разным ТФ — на больших ТФ определяем тренд на малых уже вход. Плюс тут нужно индикатора три — не меньше — только для определения тренда
avatar
Convertor, я для подтверждения уточнил, просто не совсем согласен с SMA, склоняюсь к EMA ибо она подает гораздо меньше ложных сигналов чем SMA проверено и не однократно, разница ощутимая. SMA наводит панику при гэпах.
avatar
shizafrenik, это же для примера
avatar
Convertor, ну не совсем реверсная… мы же заранее определили где только лонг а где только шорт… так что она просто умная
avatar
Dimanite, есть какая-нибудь готовая реализация или просто статистика по этой (или подобной ей) умнице?
avatar
acula_fx, реализация то есть подобная ей, статистика? Тут ведь главное ММ плюс проскальзывание динамическое. Сложно статистику иметь
avatar
Dimanite, ок
avatar
Отлично, если хоть один трейдер новичок вникнет в эти слова, то всё не зря.
avatar
для меня главная проблема в создании самого робота, я совсем не дружу с програмированием. Не знаете где в сети есть люди которые пишут роботов по твоим идеям?
avatar
gq55, привет это я и есть. Обращайтесь.
avatar
Отлично! РМ я худо-бедно реализовал, теперь добавлю ММ!
avatar
Spiritschaser, супер :) Вот с ним бывает реально засада… поймешь на практике
avatar
Dimanite, статья отличная. РМ и ММ никогда не дадут слить депозит. У меня работает робот, но я пока не пользуюсь управлению рисками. Защитой у меня является диверсификация по инструментам, робот торгует по 5-ти наиболее ликвидным фьючерсам. Таймфрейм 5 минут, стратегия элементарная и она одна для всех бумаг, но с разными параметрами. Стопов нет, индикаторы быстро переворачиваются в направлении тренда. Пока за апрель +20%. Единственное я иногда сам закрываю очень прибыльные сделки. Для фильтрации флэта использую Fractal Adaptive Moving Average (FRAMA), но все еще в поисках оптимального его использования.
avatar
Кузькин Юрий, спасибо за инфу про FRAMA — посмотрю.
ну флет отфильтровать пожалуй можно ну не менее 3-мя индюками… иначе сложно
avatar
Dimanite, самая проблема, что флэт определяещь когда он уже настал. С короткими флэтами лучше не бороться, могут потеряться важные сигналы или отработаются очень поздно. Некоторые бумаги лучше вообще не фильтровать по флэту
avatar
коллеги, а где (в Квике или в МТ-4)есть Fractal Adaptive Moving Average (FRAMA)
И какие еще индикаторы или стратегии порекомендуете от флэта
avatar
k-09, я использую AmiBroker, формула в нем такая:
// 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 );
avatar

теги блога Werner Heisenberg

....все тэги



UPDONW
Новый дизайн