Советники: 20/200 expert v 4.2 AntS - страница 3

 
Доторговались!!!

 
RON:
Доторговались!!! 

 

Уважаемый РОН нивкоем случии не используйте этого робота на реале. Он Вам всё сольёт. Тем кто неумеет правельно соотносить размер лота в зависимости от депозита учитывая просадку, я могу только посачуствовать.

 
Просто грааль какой то :)))
Отигрываться после убыточной сделки 6 кратным лотом ИМХО плохая идея. Весь расчёт на то что подрят 2 убыточных сделок не будет. Потому что вторая убыточная сделка будет с 6 кратным лотом, а значит от депозита почти ничего не останется.
Кроме того при прикреплении советника  первая сделка идёт с 6 кратным лотом, а если так совпало что она оказалась убыточной то она опять же съедает почти весь депозит. Кроме того советник не терпит конкурентов на этом счёте. То есть других советников  или работы в ручную. Если даже вручную открылся и сделка получилась убыточной то советник будет пытаться отыграться и следующая сделка, в случае неудачи сольёт депозит.

Для упражнения мозгов попытался разобраться и переписал советника. Но на реал не советую ставить, а если и ставить то BigLotSize ставить 1, то есть не умножать лоп после проигрыша. Но в таком случае потребуется переоптимизация.
//+------------------------------------------------------------------+
//|                                                       20/200.mq4 |
//|                                                             Ugar |
//|                                                     Ugar68@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Ugar"
#property link      "Ugar68@bk.ru"
#define magic 20080311
//---- input parameters
extern 
int       TP_Buy=39;      // Уровень тейкпрофит в пунктах для длинной позиции
extern 
int       SL_Buy=147;     // уровень стоплосс в пунктах для длинной позиции
extern 
int       TP_Sell=32;     // Уровень тейкпрофит в пунктах для короткой позиции
extern 
int       SL_Sell=267;    // уровень стоплосс в пунктах для короткой позиции
//extern 
int       TradeTime=18;   // Время входа в рынок
extern 
int       t1=6;           // Номер начальной свечи для определения направления
extern 
int       t2=2;           // Номер конечной свечи для определения направления
extern 
int       Delta_Buy=6;    // размер фильтра для открытия длинной позиции
extern 
int       Delta_Sell=21;  // размер фильтра для открытия короткой позиции
extern 
double    Lot=0.1;        // Размер фиксированного лота, если 0 то работаем по MM_Percent
extern 
double    MM_Percent=0.274;   // Лот процент от депозита
extern 
int       BigLotSize=6;   // Множитель лота после убыточной сделки
//extern 
int       MaxOpenTime=50;  // Максимальное время жизни ордера в сутках
//extern 
int       Orders=1;       // Сколько разрешается открывать позиций
 
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if(!GlobalVariableCheck("OpenOrderTime"))
   GlobalVariableSet("OpenOrderTime",0);   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   //GlobalVariableDel("OpenOrderTime");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double lot, PriceClose;
   bool trade=true;
   int total,ticket;
   double HistoryOpenOrderTime;
   
   datetime CurrentHour=TimeHour(TimeCurrent());//текущее время в часах
   datetime CurrentMinute=TimeMinute(TimeCurrent());//текущее время в минутах
   Comment("Текущее время сервера ",CurrentHour,":",CurrentMinute);
    
   //проверяю настало ли время для открытия позиций
   if(CurrentHour >= TradeTime && CurrentHour < (TradeTime+1))
      {
      HistoryOpenOrderTime=GlobalVariableGet("OpenOrderTime");
      //Print("HistoryOpenOrderTime=",HistoryOpenOrderTime);
      double step=MarketInfo(Symbol(),MODE_LOTSTEP);//Шаг изменения лота
      double LotMin=MarketInfo(Symbol(),MODE_MINLOT);//Минимальный лот
      double LotMax=MarketInfo(Symbol(),MODE_MAXLOT);//Максимальный лот
      if(Lot==0)lot =MathCeil(AccountBalance()/step*MM_Percent/10000)*step;
      else lot=Lot;
      double BigLot=lot*BigLotSize;
      if(lot<LotMin)Print("Слишком маленикий лот получился :(");
      if(lot>LotMax)
         {
         lot=LotMax;
         Print("Лот слишком большой, ограничели максимальным");
         }
         
      if(BigLot>LotMax)
         {
         BigLot=LotMax;
         Print("Биглот слишком большой, ограничели максимальным");
         }
         
      //Считаю открытые позиции этого советника
      for(int i=0;i<OrdersTotal();i++)
         {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
         total++;
         //если ордер открыт егодня то запрещаю открывать ещё.
         if((OrderOpenTime()+3600)>TimeCurrent())trade=false;
         //Проверяю время жизни сделки
         if((OrderOpenTime()+MaxOpenTime*86400)<TimeCurrent())
            {
            if(OrderType()==OP_BUY)PriceClose=Bid;
            if(OrderType()==OP_SELL)PriceClose=Ask;
            if(OrderClose(OrderTicket(),OrderLots(),PriceClose,3,Yellow))total--;
            
            }
         continue;
         }
      //Проверяю допустмо ли открывать ещё позиции по количеству, 
      //а так же настало ли время для торговли
      if(total<Orders)
         {
         //Если есть инфоармация об исторических ордерах этого советника
         if(HistoryOpenOrderTime!=0)
            {
            //Ищу последнюю закрытую позицию
            for(int h=0;h<OrdersHistoryTotal();h++)
               {
               OrderSelect(h,SELECT_BY_POS,MODE_HISTORY);
               if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
               //если это не последний исторический ордер этого советника то ищем следующий
               if(HistoryOpenOrderTime!=OrderOpenTime())continue;
               //если это последний исторический ордер этого советника
               else
                  {
                  //если ордер был открыт егодня то запрещаю открывать ещё.
                  if((OrderOpenTime()+3600)>TimeCurrent())trade=false;
                  //Выясняю прибыльный он был или убыточный
                  //Если убыточный...
                  if(OrderType()==OP_BUY && OrderOpenPrice()>=OrderClosePrice())
                     {
                     //то лот для открытия следующей позиции будет биглотом
                     lot=BigLot;
                     //lot=MathCeil(lot/step*(SL_Buy/TP_Buy+2)*step);
                     } 
                  if(OrderType()==OP_SELL && OrderOpenPrice()<=OrderClosePrice())
                     {
                     //то лот для открытия следующей позиции будет биглотом
                     lot=BigLot;
                     //lot=MathCeil(lot/step*(SL_Sell/TP_Sell+1)*step);
                     }
                  //else lot=Lot;
                  }
               }
            }
            
         if (trade==true)
            {
         
            //Проверяю условия для открытия длинной позиции
            if ((Open[t2]-Open[t1])>Delta_Buy*Point)
               {
               ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,5,Bid-SL_Buy*Point,
                Ask+TP_Buy*Point,NULL,magic,0,Green);
               //Если ордер открылся
               if(ticket>0)
                  {
                  OrderSelect(ticket,SELECT_BY_TICKET);
                  GlobalVariableSet("OpenOrderTime",OrderOpenTime());
                  }
               else Print("Error opening Buy order : ",GetLastError());
               }
            if((Open[t1]-Open[t2])>Delta_Sell*Point)
               {
               ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,5,Ask+SL_Sell*Point,
                Bid-TP_Sell*Point,NULL,magic,0,Red);
               //Если ордер открылся
               if(ticket>0)
                  {
                  OrderSelect(ticket,SELECT_BY_TICKET);
                  GlobalVariableSet("OpenOrderTime",OrderOpenTime());
                  }
               else Print("Error opening Buy order : ",GetLastError());
               }
            }
         }
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
Изначално автор Smirnov Pavel (www.autoforex.ru) работает без BigLotSize. И параметры оптимизации для работы без BigLotSize можно взять из его советника.
 

Что я могу сказать. При работе с этим советником нужно просто осозновать что у него большая просадка. Нужно осозновать риски. Тоесть если по тестам он показывает просадку 600 долларов, при торговле 0.01 лотом. То это озночает, что при торговле на реале вам необходимо иметь депозит как минимум в 1200 долларов, для торговли тем же 0.01 лотом. И лишь когда вы накопите 2400 долларов вы можете поставить лот в 0.02. А что такое лот 0.01 Это заработок всего лишь 4 доллара со зделки. Почему я и писал что у робота очень маленький заработок. И при правельной оптимизации у робота на всей истории всего 3 - 4 раза случается так что подряд идут 2 проигрышные сделки. Поэтому отыгрываться повышенным лотом просто необходимо и не нужно этого бояться нужно лишь это предусматривать выставляя лот.! Робот очень хорош Горазда лучше всяких нейро сетей. Но нужно уметь им пользоваться. И иметь депозит 10000 - 12000 долларов. Тогда с одной ставки вы будете иметь уже 40 долларов. А это уже не плохо.

 
Советник не плох. Требует доработки. Первое, что я сделал, это поставил увеличение лота не в 6 раз - это просто безумие. ДУмаю удвоения более, чем достаточно. Потом, поставил работу только от покупки, думаю все понимают почему. Оптимизировав, умешьшил стоп-лосс. Добавил возможность работы одновременно с другими советниками. В общем, получилось очень даже не плохо. Пока стоит на микро, может через пару недель пойдет на основной счет.
 
ArTrader:

Советник не плох. Требует доработки. Первое, что я сделал, это поставил увеличение лота не в 6 раз - это просто безумие. ДУмаю удвоения более, чем достаточно. Потом, поставил работу только от покупки, думаю все понимают почему. Оптимизировав, умешьшил стоп-лосс. Добавил возможность работы одновременно с другими советниками. В общем, получилось очень даже не плохо. Пока стоит на микро, может через пару недель пойдет на основной счет.

На самом деле сколько ставить BigLot зависит от уровня безбашенности каждого отдельного человека. Например мои тесты показали что 7 даёт гораздо лучшие результаты чем 6, но только если нет подряд убыточных сделок. По этому не понятно почему BigLot не включен во внешние переменные.
По поводу доработки для одновременной работы с другими советниками это естественно.
Ещё в советнике жуткая таблица для выбора лота. На самом деле это не совсем правильно. Всё это укладывается в % от депозита и можно описать гораздо проще. Кроме того у разных ДЦ разные условия по поводу выбора лота. Например в Alpari micro минимальный лот 0.01 и шаг изменения лота 0.01, но максимальный лот 1. Значит при попытке открыть позицию более 1 лота терминал не даст этого сделать. А в некоторых ДЦ шаг 0.1 и открыть позицию не в этом шаге не удасца.
Я попытался исправить всё это в ниже приведённом советнике, но не проверял.
Кстати сам его переоптимизировал и поставил на демо с DigLot=1 :)

Всем удачи и попутного тренда.
 

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

Система "20/200 pips" в ее первоначальном варианте - это лучшая отправная точка в для исследований.

Советую не зацикливаться на Мартингейле, как способе увеличения прибыльности системы. Как показал первый чемпионат (2006 г.) на котором я использовал Мартингейл, т.к. был уверен, что подряд двух проигрышей не будет, но они произошли в самом начале чемпионата уничтожив депозит.

Все когда-нибудь происходит в первый раз. Система "20/200 pips" снова показала себя достаточно устойчивой и надежной результаты теста смотрите здесь: http://www.autoforex.ru/lab/20_200_outofsample/20_200_outofsample.php. Как видите не все так гладко, как казалось на первый взгляд.

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

Мартингейл может увеличить доходность системы, но при этом увеличивает и степень риска. Правильно сказал AntS, что нельзя пользоваться мартингейлом, если не понимаешь и не принимаешь того, к чему это может привести.

 
ArTrader:

Советник не плох. Требует доработки. Первое, что я сделал, это поставил увеличение лота не в 6 раз - это просто безумие. ДУмаю удвоения более, чем достаточно. Потом, поставил работу только от покупки, думаю все понимают почему. Оптимизировав, умешьшил стоп-лосс. Добавил возможность работы одновременно с другими советниками. В общем, получилось очень даже не плохо. Пока стоит на микро, может через пару недель пойдет на основной счет.


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

 
ArTrader:

Советник не плох. Требует доработки. Первое, что я сделал, это поставил увеличение лота не в 6 раз - это просто безумие. ДУмаю удвоения более, чем достаточно. Потом, поставил работу только от покупки, думаю все понимают почему. Оптимизировав, умешьшил стоп-лосс. Добавил возможность работы одновременно с другими советниками. В общем, получилось очень даже не плохо. Пока стоит на микро, может через пару недель пойдет на основной счет.
zdravstvuite ArTraider!a kakie u vas optimalnie stop-lossi poluchilis pri optimizacii?
 

Советник "20/200 pips" третьей версии, тот который использовался AntS для создания своего варианта дал достаточно большую просадку на тесте "out-of-sample", поэтому будьте внимательны в использовании оптимизатора. Очень легко с его помощью испортить работающий советник. Что, наверное, и произошло с третьей версией советника. Лучше всего использовать первую, самую надежную версию.