Thursday, April 30, 2015

Бесплатная торговая стратегия MOSCOW.


Здравствуйте, товарищи трейдеры! Продолжаем учиться торговать на финансовых рынках, и сегодня расскажу совершенно бесплатно прибыльную торговую стратегию. Как уже говорил ранее, не считаю это каким-то сверх секретным знанием, поэтому делюсь своими наработками. Если вы устали от мартингейл советников, от роботов показывающих результаты только на демо счетах, тогда вам повезло! Бесплатная торговая стратегия MOSCOW – заслуживает включения в портфель серьёзных трейдеров! Хватит агитационных лозунгов, надо систему рассказывать.


бесплатная торговая стратегия


Как я узнал об этой стратегии? Если честно, то случайно. Я не пытался специально её разработать, не сидел часами перед графиком и не искал закономерности, можно сказать мне немного повезло. Дело было в начале этого года, когда я полностью проверял свои стратегии (рассказывал об этом в статье: «Что случилось с моими торговыми системами? Или где я пропадал?»). Чуть-чуть поэкспериментировал с кодом советника и получил новую стратегию. Вот как бывает, многие трейдеры не могут придумать, как им торговать, а у меня варианты сами находятся.


Хотя этот метод не самый прибыльный, да и просадки не малые, для одиночного применения не подойдёт, но для включения в портфель систем – самый раз! Или же каждый читатель может поэкспериментировать с параметрами, возможно, получится улучшить.

MOSCOW – название придуманное пять минут назад, следуя традициям интернета у стратегии обязательно должно быть громкое имя! А учитывая, что я поделюсь не единственной рабочей системой (обещал в статье: «Моя прибыльная торговая стратегия!»), буду называть их российскими городами на английском языке.

Система трендследящая, правила очень простые. Как и все трендовые стратегии похожа на остальные. Ниже приведу результаты и код советника на mql4 для тестирования.

Правила бесплатной торговой стратегии MOSCOW


Начну с открытия сделок. Рекомендую применять на таймфрейме D1, так как издержки оказываются в разы ниже, чем при более мелких таймфреймах (ВАЖНО: «Как форекс комиссия убивает ваш счёт?!»). Для следования нам потребуется индикатор Moving Average c периодом 14. Если текущий бар превышает максимум предыдущего (цена закрытия которого больше МА), то покупать. Продавать, если текущий бар опускается ниже минимума предыдущего (с ценой закрытия ниже МА). Если рассматривать конкретно ТФ D1, то покупка происходит при пробитии максимума предыдущего дня, а продажа при пробитии минимума предыдущего дня. Важно, чтобы цена закрытия предыдущего дня была выше/ниже МА. Вот такие простые правила открытия позиций.

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

Как выставить и переставлять стоп лосс? Тактика такая: для позиций на покупку из 5 последних баров не включая текущего выбирается тот, у которого самый низкий Low (то есть самое низкое значение, на которое опускалась цена). Именно на это значение мы и выставим стоп лосс. По мере появления новых баров повторить эти расчёты и переставить стоп, если требуется. То есть трейлинг стоп по минимуму за 5 баров.

Для сделок на продажу всё делаем с точностью до наоборот. Трейлинг стоп по максимуму за 5 баров.

Если ничего не забыл, то перейдём к результатам стратегии, которые я получил в ходе тестирования.

Результаты бесплатной торговой стратегии MOSCOW


Проводил тестирование в тестере мт4, начиная с 28.09.1998 года по настоящее время. Проводил на 4 валютных парах: EUR/USD, GBP/USD, AUD/USD, USD/JPY. Забегая вперёд скажу, что каждая из пар дала положительный результат.

EUR/USD

тест бесплатной торговой стратегии moscow

Самая трендовая валютная пара, результаты тестирования на ней лучше остальных. Прибыль составила примерно 69% при максимальной просадке27.54%. Хочу обратить ваше внимание на продолжительные просадки, их период 2-3 года, поэтому не советую применять её в одиночном виде, переждать такие просадки трудно психологически.

GBP/USD

тест бесплатной торговой стратегии moscow

Прибыль около 52% при максимальной просадке 23.94%. Просадки такие же затяжные, прибыль делается за короткие сроки. Может быть, начинать применять её только во время продолжительной просадки, в расчёте на большую прибыль?

AUD/USD

тест бесплатной торговой стратегии moscow

Прибыль 17%, при максимальной просадке 36.37%.

USD/JPY

тест бесплатной торговой стратегии moscow

Прибыль 42%, при максимальной просадке 42.74%. Просадка практически всё время тестирования, вся прибыль получена за последние месяцы.

Вывод: по результатам тестирования на 4-х валютных парах, не советую применять бесплатную торговую стратегию в единственном виде, так как довольно велики просадки. Способна принести дополнительный доход, если использовать в портфеле торговых систем. Либо проведите тестирование на акциях и фьючерсах, подберите больше инструментов длядиверсификации.

Для улучшения результатов можно поэкспериментировать с профитом, сделать его фиксированным, например. Выложу код стратегии, сделать это будет нетрудно.

Код бесплатной торговой стратегии на mql4


Внимание! Код пригоден только для тестирования, для совершения реальных торговых операций он не подходит!











1int init()










2  {










3//----










4//----










5   return(0);










6  }










7//+------------------------------------------------------------------+










8//| expert deinitialization function                                 |










9//+------------------------------------------------------------------+










10int deinit()










11  {










12//----










13//----










14   return(0);










15  }










16//+------------------------------------------------------------------+










17//| expert start function                                            |










18//+------------------------------------------------------------------+










19int start()










20  {   










21    double risk;










22    double stoim;










23    double razmer_tika;










24    double min_lot;










25    double st_min_lot;










26    double stop_in_punkt;










27    int stop_in_tik;










28    double max_stoim_tika;










29    int x;










30    double lot;










31    double punkt;










32    double MA1;










33    static double p;










34    static double p1;










35    static double p2;










36    static double p3;










37//---------------------------------------------------------------------+










38MA1=iMA(NULL,0,14,0,MODE_SMA,PRICE_CLOSE,1);










39//---------------------------------------------------------------------+










40if((Close[1]>MA1)&&(Bid>=High[1])&&((p!=Open[1])))










41//--------+










42  {










43    risk=100000/500;                                       //риск=5%










44    stoim=MarketInfo(Symbol(),MODE_TICKVALUE);             //стоимость тика для 1 лота










45    razmer_tika=MarketInfo(Symbol(),MODE_TICKSIZE);










46    min_lot=MarketInfo(Symbol(),MODE_MINLOT);              //размер минимального лота(0,01)










47    st_min_lot=stoim*min_lot;                          //стоимость тика для минимального лота










48    stop_in_punkt=NormalizeDouble(Bid-Low[1],Digits);            //кол-во пунктов для стопа










49    stop_in_tik=stop_in_punkt/razmer_tika;             //нахожу размер стопа в тиках










50    max_stoim_tika=risk/stop_in_tik;                   //максимально допустимая стоимость тика










51    x=max_stoim_tika/st_min_lot;                          //нахожу доступную стоимость тика










52    lot=min_lot*x;                                       //лот сделки










53    punkt=MarketInfo(Symbol(),MODE_POINT);                                  










54    p=Open[1];










55    OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0);










56    }










57//-----------------------------------------------------------------------+










58if((Close[1]<MA1)&&(Bid<=Low[1])&&((p1!=Open[1])))










59//--------+










60  {










61    risk=100000/500;                                       //риск=5%










62    stoim=MarketInfo(Symbol(),MODE_TICKVALUE);             //стоимость тика для 1 лота










63    razmer_tika=MarketInfo(Symbol(),MODE_TICKSIZE);










64    min_lot=MarketInfo(Symbol(),MODE_MINLOT);              //размер минимального лота(0,01)










65    st_min_lot=stoim*min_lot;                          //стоимость тика для минимального лота










66    stop_in_punkt=NormalizeDouble(High[1]-Bid,Digits);            //кол-во пунктов для стопа










67    stop_in_tik=stop_in_punkt/razmer_tika;             //нахожу размер стопа в тиках










68    max_stoim_tika=risk/stop_in_tik;                   //максимально допустимая стоимость тика










69    x=max_stoim_tika/st_min_lot;                          //нахожу доступную стоимость тика










70    lot=min_lot*x;                                     //лот сделки










71    punkt=MarketInfo(Symbol(),MODE_POINT);










72     p1=Open[1];










73    OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,0);










74    }










75//-----------------------------------------------------------------------+










76for(int i=0;i<OrdersTotal();i++)










77if((OrderSelect(i,SELECT_BY_POS)==true)&&(OrderType()==OP_BUY)&&(p2!=Open[1]))










78   {










79    if((Low[1]<=Low[2])&&(Low[1]<=Low[3])&&(Low[1]<=Low[4])&&(Low[1]<=Low[5]))










80    OrderModify(OrderTicket(),OrderOpenPrice(),Low[1],0,0,Black);










81    if((Low[2]<=Low[1])&&(Low[2]<=Low[3])&&(Low[2]<=Low[4])&&(Low[2]<=Low[5]))










82    OrderModify(OrderTicket(),OrderOpenPrice(),Low[2],0,0,Black);










83    if((Low[3]<=Low[1])&&(Low[3]<=Low[2])&&(Low[3]<=Low[4])&&(Low[3]<=Low[5]))










84    OrderModify(OrderTicket(),OrderOpenPrice(),Low[3],0,0,Black);










85    if((Low[4]<=Low[1])&&(Low[4]<=Low[2])&&(Low[4]<=Low[3])&&(Low[4]<=Low[5]))










86    OrderModify(OrderTicket(),OrderOpenPrice(),Low[4],0,0,Black);










87    if((Low[5]<=Low[1])&&(Low[5]<=Low[2])&&(Low[5]<=Low[3])&&(Low[5]<=Low[4]))










88    OrderModify(OrderTicket(),OrderOpenPrice(),Low[5],0,0,Black);










89    }










90  p2=Open[1];










91for(int u=0;u<OrdersTotal();u++)










92if((OrderSelect(u,SELECT_BY_POS)==true)&&(OrderType()==OP_SELL)&&(p3!=Open[1]))










93   {










94    if((High[1]>=High[2])&&(High[1]>=High[3])&&(High[1]>=High[4])&&(High[1]>=High[5]))










95    OrderModify(OrderTicket(),OrderOpenPrice(),High[1],0,0,Black);










96    if((High[2]>=High[1])&&(High[2]>=High[3])&&(High[2]>=High[4])&&(High[2]>=High[5]))










97    OrderModify(OrderTicket(),OrderOpenPrice(),High[2],0,0,Black);










98    if((High[3]>=High[1])&&(High[3]>=High[2])&&(High[3]>=High[4])&&(High[3]>=High[5]))










99    OrderModify(OrderTicket(),OrderOpenPrice(),High[3],0,0,Black);










100    if((High[4]>=High[1])&&(High[4]>=High[2])&&(High[4]>=High[3])&&(High[4]>=High[5]))










101    OrderModify(OrderTicket(),OrderOpenPrice(),High[4],0,0,Black);










102    if((High[5]>=High[1])&&(High[5]>=High[2])&&(High[5]>=High[3])&&(High[5]>=High[4]))










103    OrderModify(OrderTicket(),OrderOpenPrice(),High[5],0,0,Black);










104    }










105   p3=Open[1];










106//----------------------------------------------------------------------+










107   return(0);










108  }










109//+---------------------------------------------------------------------+




Если по коду возникнут вопросы, задавайте в комментариях! Может быть, я где-то ошибку допустил, найдёте?

Будете тестировать с другими параметрами, не забудьте поделиться в комментариях результатами.

На этом статья о бесплатной торговой стратегии заканчивается. Кстати, есть отличный советник, который использует подобные точки входа, но уровни ордеров другие.