Интернет-журнал для трейдеров и инвесторов

Торговый робот «Ловец тренда 1»

Идея создания этого торгового робота пришла в тот момент, когда я рассматривал график цены EUR/USD, на котором происходили довольно сильные движения цены. Причем никаких видимых предпосылок (на основании технического анализа) к этому движению не было. Неплохую прибыль мог бы извлечь торговый робот, движущийся за ценой – подумал тогда я. Именно движущийся за ценой, просто вслед за ценой, без какого либо предварительного анализа и оценки вероятностей. Такой робот мог бы извлекать прибыль из любого ценового движения даже не подчиняющегося никаким законам и логике. Что греха таить, мысль о том, что движения рынка по своей природе абсолютно хаотичны, иногда приходит в голову. Особенно когда на основе тщательно проведенного технического анализа, дождавшись всех необходимых сигналов индикаторов, открываешь позиции, которые в итоге приносят убыток.

Цена никогда не стоит на месте, с большей или меньшей интенсивностью, но она всегда движется. Возьмите дневную свечу, на которой есть минимум и максимум цены за день, и, как правило, разница между этими двумя значениями довольно велика. А что если открывать позиции вслед за ценой. Например, цена проходит десять пунктов вверх, и мы открываем позицию вверх (с установленными ордерами стоп-лосс и тейк-профит по 10 пунктов). Далее если цена продолжает свое движение, то наша позиция закрывается с профитом в 10 пунктов, и мы открываем следующую длинную позицию. В итоге пока цена идет вверх она сопровождается длинными позициями, закрывающимися в профите. Когда же цена развернется вниз, то очередная наша длинная позиция закроется по стоп-лосс с небольшим убытком. И т.к. цена пошла вниз, мы вслед за ней таким же образом начинаем открывать короткие позиции, получая теперь профит с них.

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

Для того, чтобы попытаться нивелировать воздействие этих «ложных» колебаний я применил простой фильтр. Этот фильтр отслеживает последнюю цену покупки и последнюю цену продажи. Суть этого фильтра сводится к тому, чтобы не давать позиции открыться по цене ниже предыдущей для покупки и по цене выше предыдущей для продажи. Из-за этого фильтра короткие позиции открываются все ниже и ниже, а длинные – все выше и выше от начальной точки. А все колебания между ценой открытия последней длинной и последней короткой позиции попросту не учитываются (см. рис.1).

Схема работы торгового робота
Рисунок 1

Текст программы торгового робота (с комментариями) на языке MQL4 выглядит следующим образом:

#property copyright "Blokhin Oleg"
#property link      "azbukatreydera.ru"

int 
b,s,w,sl=100,tp=100;// sl и tp значения ордеров стоп-лосс и тейк-профит в пунктах

double
pos=1,v,n;// pos размер позиции

int start()                                   
{
// Задание цен на начальной точке (точке начала торговли)
//-------------
if(w==0)
{
v=Bid;
n=Bid;
w=1;// благодаря тому, что значение w поменялось на 1 этот блок 
    //срабатывает только один раз при запуске торгового робота
}
//-------------
if(OrdersTotal()==0)// если открытых ордеров нет
{
if(Bid<=v)// Если цена ниже предыдущей
          //открытие короткой позиции
          //----------
         {s=OrderSend(Symbol(),OP_SELL,pos,Bid,3,Bid+sl*Point,Bid-tp*Point,0);  
          v=Bid;
         }
          //----------

if(Bid>=n)// Если цена выше предыдущей
          //открытие длинной позиции
          //----------   
         {b=OrderSend(Symbol(),OP_BUY,pos,Ask,3,Ask-sl*Point,Ask+tp*Point,0);
          n=Bid;
         }
          //----------
}                    
     return;                                                          
}

Копируйте, пользуйтесь. Но не забывайте, что я делюсь в большей степени идеей, и эту программу перед применением рекомендуется, как минимум оптимизировать, подобрав оптимальные значения переменных sl и tp (стоп-лосс и тейк-профит), а как максимум, добавить еще несколько блоков.

И еще один момент. Этого робота лучше использовать в течении ограниченного временного периода (например одного торгового дня). Каждый следующий период его необходимо перезапускать. Это следует из специфики алгоритма программы (еще раз взгляните на рис.1).


Comments to Торговый робот «Ловец тренда 1»

  • Советник не совсем корректно торгует.

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

    Отсутствует постепенное “развёртывание”, прошу подкорректировать код.

    Иван 15.11.2018 01:22 Ответить
    • Как я уже сказал, в данном случае моей целью было лишь поделиться идеей. Для затравки я накидал представленный выше программный код советника. А что касается его доработки, то тут уж, как говорится, все карты Вам в руки.

      olegas 16.11.2018 17:21 Ответить
    • Иван, прочитайте полкниги “С++ за 21 день” и сможете корректировать код как пожелаете нужным.

      Тимур 04.02.2020 22:26 Ответить

Добавить комментарий

Ваш адрес email не будет опубликован.

Рубрики
Меню