Logo
Aenean Donec sed odio dui. Donec sed odio dui. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Curabitur blandit tempus porttitor ligula nibhes, molestie id vivers dapibus iaculis.

SpicePress Theme
Chestnut Road, California (USA)

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

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

Торговый робот «Ловец тренда 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).

Понравилась статья? Сохраните ссылку на неё у себя в соцсетях:

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Read also x