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

Комментарии 2

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

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

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

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

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

Ваш e-mail не будет опубликован.

Все права защищены. Все материалы представленные на сайте являются интеллектуальной собственностью авторов. Полное или частичное копирование материалов запрещено без указания активной ссылки на источник (www.azbukatreydera.ru)


Материалы сайта "Азбука трейдера" носят исключительно информационный характер. Сайт не несёт ответственности за решения, принимаемые вами на их основе. Вся ответственность за последствия принятых вами решений лежит исключительно на вас. Начиная работу на финансовых рынках убедитесь в том, что вы обладаете достаточным уровнем подготовки и полностью осознаёте все связанные с этим риски