AM2
Андрей

 
Уровень 35

  Торгую в компаниях:


Группа "Торговые системы"

Рейтинг 660



Обрезай убытки и позволяй прибыли расти

С целью проверки справедливости распространенного в трейдерской среде утверждения «Обрезай убытки и позволяй прибыли расти» была разработана данная торговая система и написан советник.



Суть торговой системы в том, что по сигналу индикатора открываются сделки со стопом в направлении дневного тренда до тех пор пока не накапливаем необходимый профит в валюте. Одновременно может быть открыто не более 100 ордеров.

Советник оптимизировался по ценам открытия на паре EURUSD, ТФ Н1.


//+------------------------------------------------------------------+
//|                                                       BBands.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property description "BBands expert advisor"

//--- Inputs
extern double Lots         = 0.1;  // лот
extern double Profit       = 3000; // язь в рублях
extern int    StopLoss     = 5000; // лось
extern int    TakeProfit   = 0;    // язь
extern int    Slip         = 30;   // реквот
extern int    Magic        = 20;   // магик

extern string s="------------- Настройки BBands  -------------";
extern int    Length       = 20;   // период BB 
extern double Deviation    = 2;    // отклонение ВВ
extern string ss="------------- Настройки MA  -------------";
extern int    PeriodMA     = 20;   // период MA

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) profit+=OrderProfit()+OrderSwap()+OrderCommission();
           }
        }
     }
   return (profit);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
//--- get Ind
   double up=iBands(NULL,0,Length,Deviation,0,0,1,1);
   double dn=iBands(NULL,0,Length,Deviation,0,0,2,1);
   double ma=iMA(NULL,PERIOD_D1,PeriodMA,0,0,0,1);

//--- sell conditions
   if(Close[2]>up && Close[1]<up && Bid<ma)
     {
      PutOrder(1,Bid);
     }
//--- buy conditions
   if(Close[2]<dn && Close[1]>dn && Ask>ma)
     {
      PutOrder(0,Ask);
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool c=true;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY) c=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
            if(OrderType()==OP_SELL) c=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      if(CountTrades()<100) OpenPos();
      if(AllProfit()>Profit) CloseAll();
      t=Time[0];
     }

   Comment("\n ");
  }
//+------------------------------------------------------------------+



После оптимизации ТС с начала 2000-го года я выбрал параметры с наименьшей просадкой и максимальной прибылью.



Система дала нам примерно 620% прибыли за 15 лет. Это 41% в год, при просадке 48% за всю историю.



График роста баланса приведен ниже.



Если тестировать на всех тиках, результат будет тот же.



П.С. Как показали результаты оптимизации и тестирования данной ТС, утвержение «Обрезай убытки и позволяй прибыли расти» является верным.
Система трендовая, если у вас есть инсайд что пара будет длительное время расти или снижаться можете смело ее использовать, конечно же учитывая все риски.

Скачать советник можно по ссылке: www.opentraders.ru/downloads/1028/
  • +18
  • Просмотров: 8656
  • 3 февраля 2016, 02:49
  • AM2
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Торговые системы", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Мультитаймфреймовый индикатор "MTF"
Следующая запись в группе  
Советник "Hello Dual"
27 декабря 2015
28 февраля 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (13)

+
0
Научить бы ещё советник торговать во время флета )
avatar

  13  writelint00 Сообщений: 592 - writelint

  • 3 февраля 2016, 07:41
+
+3
Нужно делать систему два в одном как хед энд шолдерс :) 
avatar

  35  AM2 Автор Сообщений: 16388 - Андрей

  • 3 февраля 2016, 09:15
+
0
Есть флетовые совы правда которые в купе с этим все равно толку не дадут там будет накопление обьема с пробитием, ну либо простейший мартин который сожрет при тренде все. Любой сов добавляемый к другому несет с собой просадку которая неизбежна и которая при определенных условиях сложится между 2 совами и приведет к сливу. Я до сих пор в поиске подобной темы, думаю не я один.
avatar

  13  Buff Сообщений: 401 - Артем

  • 3 февраля 2016, 20:38
+
0
Самое главное что никак не могут найти строители «грааля» — это оптимальный (быстрый и безошибочный) переключатель между трендовой и флетовой режимами торговли :) 
Как только такой переключатель будет найден — написать советник дело техники…
avatar

  13  Fargo Сообщений: 495

  • 3 февраля 2016, 21:48
+
0
сложение двух сов не обязательно приводит к сливу. Риски надо минимизировать всегда и максимально.
avatar

  13  writelint00 Сообщений: 592 - writelint

  • 4 февраля 2016, 09:10
+
+2
Немного критики:
1. Визуально напоминает работу обычного усреднителя. Т.е. не видно обрезания убытков и накопления прибыли.
2. Начальное депо 10 тыс, максимальная просадка 18,1 тыс. Это слив, при попадании на такую просадку при начале работы, пока нет накопленной прибыли. *pardon* 
avatar

  13  Fargo Сообщений: 495

  • 3 февраля 2016, 21:44
+
0
Начальное депо 10 тыс, максимальная просадка 18,1 тыс. Это слив, при попадании на такую просадку при начале работы, пока нет накопленной прибыли.

Да (при условии, если результаты получены без пропорционального увеличения лота).
Но все равно АМ2 красавчик. Дает сырье, с которым можно поработать.
avatar

  45  Bishop Сообщений: 5811 - АЛЬФАХАМЕЦ-Машковод

  • 3 февраля 2016, 22:38
+
0
Но все равно АМ2 красавчик. Дает сырье, с которым можно поработать.

Я тоже плюсанул *good* 
avatar

  13  Fargo Сообщений: 495

  • 4 февраля 2016, 00:16
+
0
Большое спасибо.
avatar

  2  sumrak Сообщений: 1

  • 4 февраля 2016, 11:16
+
0
а где проверка есть просадка открытых ордеров больше чем общий профит по балансу, можно ли сделать, чтобы закрылись только прибыльные
Редактирован: 4 февраля 2016, 22:39
avatar

  16  cerber04 Сообщений: 409

  • 4 февраля 2016, 22:38
+
0
общий профит по балансу известен только в конце теста, а просадка открытых ордеров может быть на любом участке. Это не проверишь.
P.s. по хорошему, надо бы вообще каждую убыточную сделку рассматривать отдельно и принимать меры по минимизации потерь.
avatar

  13  writelint00 Сообщений: 592 - writelint

  • 5 февраля 2016, 07:06
+
0
А если сделать всё то же самое, но с качеством 90%, то график будет немножко другой))) Уважаемый, как вы вышли в точку безубыточности, то есть в прибыль? )) Может я не то, что то делал?





P.s. кстати, подскажите, как добрать оставшиеся 10% качества?
avatar

  13  writelint00 Сообщений: 592 - writelint

  • 6 февраля 2016, 20:57
+
0
а где проверка есть просадка открытых ордеров больше чем общий профит по балансу,

я имел в виду можно проверить сумму открытых ордеров, по отношению к балансу и свободным средствам?
avatar

  16  cerber04 Сообщений: 409

  • 19 февраля 2016, 00:40

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий