Советники: Lucky - страница 12

 
Версия 1.3а часто не закрывает прибыльные позиции, вчера 5 пунктов прибыли висело в течении минуты, пришлось закрыть руками. Это на демо счете. Может в коде ошибка какая?
 
Stinger:

Вот отчет за последние 12 часов на демо счету.. виден большой лось о окотором я писал ранее...(если нужно выложу деталку)

Serg_ASV, если не сложно кинь результат трудов своих(Lucky_ASV_1.3multi) мне на почту psms@mail.ru - поставлю на отдельный демо счет. Спасиб. Как у тебя дела на реале?

Если не трудно можно и мне тоже советника Lucky_ASV_1.3multi сюда
stace2003@hot.ee
 
//+------------------------------------------------------------------+
//|             Lucky_ASV_1.3multi                                     |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+ :p
 
extern int     sl1     = 15;
extern int     sl2     = 16;
extern int     sl3     = 12;
extern int     sl4     = 16;
extern int     sl5     = 20;
// extern int     sl6     = 28;
// extern int     sl7     = 28;
extern int   TakeProfit1 = 2;
extern int   TakeProfit2 = 2;
extern int   TakeProfit3 = 3;
extern int   TakeProfit4 = 5;
extern int   TakeProfit5 = 3;
extern double x2 = 2;
extern double x3 = 4;
extern double x4 = 6;
extern double x5 = 10;
// extern double  TakeProfit6 = 2;
// extern double  TakeProfit7 = 2;
 
/*--------WeekEndStop--------*/
extern int     WED1      = 5;    // Day of begin (sunday)
extern int     WEH1      = 22;   // Hour of begin
extern int     WED2      = 1;    // Day of end (monday)
extern int     WEH2      = 2;    // hour of end
/*--------WeekEndStop--------*/
//----------------------------------------------------------------------------
bool           first     = true; 
double         MaxLot    = 20;
double         MinLot    = 0.1;
//---------------------------------------------------------------------------- 
int TradingTime,WE; double a, b; 
 
int start()
   { 
   if (WEstop() == 0 )
      {
      if (first) 
         {
         a=Ask; 
         b=Bid; 
         first=false; 
         return(0);
         }
 
if (Ask-a>=1*Point) 
 {
      if (Ask-a>=2*Point && Ask-a<3*Point && Tradetime1() == 1 && AccountFreeMargin()>2100*GetLots1()) 
         {
         OrderSend(Symbol(),OP_SELL,GetLots1(),Bid,3,Ask + sl1 * Point,Bid-TakeProfit1*Point,"ASV",1,0,CLR_NONE);
         }
      if (Ask-a>=3*Point && Ask-a<4*Point && Tradetime2() == 1 && AccountFreeMargin()>2100*GetLots2()) 
         {
         OrderSend(Symbol(),OP_SELL,GetLots2(),Bid,3,Ask + sl2 * Point,Bid-TakeProfit2*Point,"ASV",2,0,CLR_NONE);
         }
      if (Ask-a>=4*Point && Ask-a<5*Point && Tradetime3() == 1 && AccountFreeMargin()>2100*GetLots3()) 
         {
         OrderSend(Symbol(),OP_SELL,GetLots3(),Bid,3,Ask + sl3 * Point,Bid-TakeProfit3*Point,"ASV",3,0,CLR_NONE);
         }
      if (Ask-a>=5*Point && Ask-a<6*Point && Tradetime4() == 1 && AccountFreeMargin()>2100*GetLots4()) 
         {
         OrderSend(Symbol(),OP_SELL,GetLots4(),Bid,3,Ask + sl4 * Point,Bid-TakeProfit4*Point,"ASV",4,0,CLR_NONE);
         }
      if (Ask-a>=6*Point  && Tradetime5() == 1 && AccountFreeMargin()>2100*GetLots5()) 
         {
         OrderSend(Symbol(),OP_SELL,GetLots5(),Bid,3,Ask + sl5 * Point,Bid-TakeProfit5*Point,"ASV",5,0,CLR_NONE);
         }
//      if (Ask-a==7*Point && Tradetime6() == 1 && AccountFreeMargin()>2100*GetLots6()) 
//         {
//         OrderSend(Symbol(),OP_SELL,GetLots6(),Bid,3,Ask + sl6 * Point,Bid-TakeProfit6*Point,"ASV",6,0,CLR_NONE);
//         }
//      if (Ask-a==8*Point && Tradetime7() == 1 && AccountFreeMargin()>2100*GetLots7()) 
//         {
//         OrderSend(Symbol(),OP_SELL,GetLots7(),Bid,3,Ask + sl7 * Point,Bid-TakeProfit7*Point,"ASV",7,0,CLR_NONE);
//         }         
     }
if (b-Bid>=1*Point)
      {
      if (b-Bid>=2*Point  && Ask-a<3*Point && Tradetime1() == 1 && AccountFreeMargin()>2100*GetLots1())
         {
         OrderSend(Symbol(),OP_BUY,GetLots1(),Ask,3,Bid - sl1 * Point,Ask+TakeProfit1*Point,"ASV",1,0,CLR_NONE);
         } 
      if (b-Bid>=3*Point  && Ask-a<4*Point && Tradetime2() == 1 && AccountFreeMargin()>2100*GetLots2())
         {
         OrderSend(Symbol(),OP_BUY,GetLots2(),Ask,3,Bid - sl2 * Point,Ask+TakeProfit2*Point,"ASV",2,0,CLR_NONE);
         } 
      if (b-Bid>=4*Point  && Ask-a<5*Point && Tradetime3() == 1 && AccountFreeMargin()>2100*GetLots3())
         {
         OrderSend(Symbol(),OP_BUY,GetLots3(),Ask,3,Bid - sl3 * Point,Ask+TakeProfit3*Point,"ASV",3,0,CLR_NONE);
         } 
      if (b-Bid>=5*Point  && Ask-a<6*Point && Tradetime4() == 1 && AccountFreeMargin()>2100*GetLots4())
         {
         OrderSend(Symbol(),OP_BUY,GetLots4(),Ask,3,Bid - sl4 * Point,Ask+TakeProfit4*Point,"ASV",4,0,CLR_NONE);
         } 
      if (b-Bid>=6*Point && Tradetime5() == 1 && AccountFreeMargin()>2100*GetLots5())
         {
         OrderSend(Symbol(),OP_BUY,GetLots5(),Ask,3,Bid - sl5 * Point,Ask+TakeProfit5*Point,"ASV",5,0,CLR_NONE);
         } 
 //     if (b-Bid==7*Point && Tradetime6() == 1 && AccountFreeMargin()>2100*GetLots6())
 //        {
 //        OrderSend(Symbol(),OP_BUY,GetLots6(),Ask,3,Bid - sl6 * Point,Ask+TakeProfit6*Point,"ASV",6,0,CLR_NONE);
 //        } 
 //     if (b-Bid==8*Point && Tradetime7() == 1 && AccountFreeMargin()>2100*GetLots7())
 //        {
 //        OrderSend(Symbol(),OP_BUY,GetLots7(),Ask,3,Bid - sl7 * Point,Ask+TakeProfit7*Point,"ASV",7,0,CLR_NONE);
 //        } 
       }
     }
   a=Ask;  
   b=Bid; 
  
   return(0);
   } 
 
//--------------------------------------------------------------------------
int WEstop()
   {
   WE=0;
   if (TimeHour(TimeCurrent()) > WEH1 && DayOfWeek() == WED1) WE=1;
   if (TimeHour(TimeCurrent()) < WEH2 && DayOfWeek() == WED2) WE=2;
   return(WE);
   }
//-------------------------------------------------------------------------- 
int Tradetime1()
   {
   TradingTime=0;
   if (TimeHour(TimeCurrent()) >= 18 || TimeHour(TimeCurrent())< 1)   TradingTime=1;
   return(TradingTime); 
   }
//-------------------------------------------------------------------------- 
int Tradetime2()
   {
   TradingTime=0;
   if (TimeHour(TimeCurrent()) >= 10 || TimeHour(TimeCurrent())< 6)   TradingTime=1;
   return(TradingTime); 
   }
//-------------------------------------------------------------------------- 
int Tradetime3()
   {
   TradingTime=0;
   if (TimeHour(TimeCurrent()) >= 7 || TimeHour(TimeCurrent())< 6)   TradingTime=1;
   return(TradingTime); 
   }
//-------------------------------------------------------------------------- 
int Tradetime4()
   {
   TradingTime=0;
   if (TimeHour(TimeCurrent()) >= 8 || TimeHour(TimeCurrent())< 5)   TradingTime=1;
   return(TradingTime); 
   }
//-------------------------------------------------------------------------- 
int Tradetime5()
   {
   TradingTime=0;
   if (TimeHour(TimeCurrent()) >= 9 || TimeHour(TimeCurrent())< 1)   TradingTime=1;
   return(TradingTime); 
   }
//-------------------------------------------------------------------------- 
//int Tradetime6()
//   {
//   TradingTime=0;
//   if (TimeHour(TimeCurrent()) >= OpenHour || TimeHour(TimeCurrent())< CloseHour)   TradingTime=1;
//   return(TradingTime); 
//   }
//-------------------------------------------------------------------------- 
//int Tradetime7()
//   {
//   TradingTime=0;
//   if (TimeHour(TimeCurrent()) >= OpenHour || TimeHour(TimeCurrent())< CloseHour)   TradingTime=1;
//   return(TradingTime); 
//   }
//-------------------------------------------------------------------------- 
double GetLots1() 
   { 
   double lots;
   lots = NormalizeDouble(AccountFreeMargin()/10000,1);
   if (lots < MinLot) lots = MinLot;
   if (lots > MaxLot) lots = MaxLot;     
   return (lots); 
   } 
//-------------------------------------------------------------------------
double GetLots2() 
   { 
   double lots;
   lots = NormalizeDouble(AccountFreeMargin()/10000,1)*x2;
   if (lots < MinLot) lots = MinLot;
   if (lots > MaxLot) lots = MaxLot;     
   return (lots); 
   } 
//-------------------------------------------------------------------------
double GetLots3() 
   { 
   double lots;
   lots = NormalizeDouble(AccountFreeMargin()/10000,1)*x3;
   if (lots < MinLot) lots = MinLot;
   if (lots > MaxLot) lots = MaxLot;     
   return (lots); 
   } 
//-------------------------------------------------------------------------
double GetLots4() 
   { 
   double lots;
   lots = NormalizeDouble(AccountFreeMargin()/10000,0)*x4;
   if (lots < MinLot) lots = MinLot;
   if (lots > MaxLot) lots = MaxLot;     
   return (lots); 
   } 
//-------------------------------------------------------------------------
double GetLots5() 
   { 
   double lots;
   lots = NormalizeDouble(AccountFreeMargin()/10000,0)*x5;
   if (lots < MinLot) lots = MinLot;
   if (lots > MaxLot) lots = MaxLot;     
   return (lots); 
   } 
//-------------------------------------------------------------------------
//double GetLots6() 
//   { 
//   double lots;
//   lots = NormalizeDouble(AccountFreeMargin()/10000,0)*6;
//   if (lots < MinLot) lots = MinLot;
//   if (lots > MaxLot) lots = MaxLot;     
//   return (lots); 
//   } 
//-------------------------------------------------------------------------
//double GetLots7() 
//   { 
//   double lots;
//   lots = NormalizeDouble(AccountFreeMargin()/10000,0)*10;
//   if (lots < MinLot) lots = MinLot;
//   if (lots > MaxLot) lots = MaxLot;     
//   return (lots); 
//   } 
//-------------------------------------------------------------------------

Это черновой вариант, сделанный за 30 минут, поэтому извините за внешний вид.

Предупреждаю, если ваш ДЦ не поддерживает стоплосс 2 - не мучайтесь.

 

Естественно данный вариант расчитан на более быстрый старт, а при достижении размера Лота = 20 работает как обычно, с поправкой только на ТР и СЛ для каждого скачка.

Посоветуйте кто-нибудь хороший индикатор для фильтрования.

Эксперт хорошо работает в канале, и дает убыток на пиках и смене тренда.

 

Serg_ASV, если не сложно кинь результат трудов своих(Lucky_ASV_1.3multi) мне на почту psms@mail.ru - поставлю на отдельный демо счет. Спасиб. Как у тебя дела на реале?


Жду зачисления денег на счет.
 

для примера за октябрь

Низкий профит связан видимо с резкими колебаниями цены, при этом сделки в одном направлении съедают весь баланс, цена уходит в противоположную сторону и пока не сработают СЛ не открываются прибыльные сделки.

Этот факт надо как-то доработать, хотябы ограничивая количество сделок в одном направлении (не более 3-4)

Lucky v1.3
Strategy Tester Report
lll2
EGlobal-Server (Build 211)

Символ EURGBP (Euro vs Great Britain Pound )
Период 1 Час (H1) 2007.10.01 00:00 - 2007.10.31 23:00 (2007.10.01 - 2007.11.01)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры Shift=3; sl=10; TakeProfit=2; OpenHour=4; CloseHour=1; WED1=5; WEH1=22; WED2=1; WEH2=2;
Баров в истории 1549 Смоделировано тиков 50275 Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 4000.00
Чистая прибыль 1032.51 Общая прибыль 1606.70 Общий убыток -574.19
Прибыльность 2.80 Матожидание выигрыша 10.33
Абсолютная просадка 106.08 Максимальная просадка 232.98 (5.42%) Относительная просадка 5.42% (232.98)

и Lucky_ASV_1.3multi

Strategy Tester Report
Lucky_ASV_1.3multi
EGlobal-Server (Build 211)


Символ EURGBP (Euro vs Great Britain Pound )
Период 1 Час (H1) 2007.10.01 00:00 - 2007.10.31 23:00 (2007.10.01 - 2007.11.01)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры sl1=18; sl2=16; sl3=14; sl4=16; sl5=12; TakeProfit1=2; TakeProfit2=2; TakeProfit3=4; TakeProfit4=7; TakeProfit5=6; x2=2; x3=4; x4=6; x5=10; WED1=5; WEH1=22; WED2=1; WEH2=2;
Баров в истории 1549 Смоделировано тиков 50275 Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 4000.00
Чистая прибыль 4641.32 Общая прибыль 7138.84 Общий убыток -2497.52
Прибыльность 2.86 Матожидание выигрыша 18.94
Абсолютная просадка 366.23 Максимальная просадка 1181.90 (16.00%) Относительная просадка 16.00% (1181.90)
Всего сделок 245 Короткие позиции (% выигравших) 109 (95.41%) Длинные позиции (% выигравших) 136 (93.38%)

 
Думаю что 4 кратное преимущество это неплохо, но все равно надо дорабатывать
 
Serg_ASV:
WitoHOH:


Не думаю что это хорошая мысль.

После такого скачка цена может и откатится и получится здоровенный лось.

Вот если бы можно было ДО скочка поставить, а ПОСЛЕ снят навар. ...


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

Смотри пример с данной идеей - с 4000 до 100000 за 2 месяца на достаточно требовательной истории.

А если попробовать при БОЛЬШОМ скачке цены (ну скажем на 5-7 пунктов) ставить БОЛЬШОЙ ордер, но В ПРОТИВОПОЛОЖНОМ направлении?????
 
WitoHOH:
Serg_ASV:
WitoHOH:


Не думаю что это хорошая мысль.

После такого скачка цена может и откатится и получится здоровенный лось.

Вот если бы можно было ДО скочка поставить, а ПОСЛЕ снят навар. ...


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

Смотри пример с данной идеей - с 4000 до 100000 за 2 месяца на достаточно требовательной истории.

А если попробовать при БОЛЬШОМ скачке цены (ну скажем на 5-7 пунктов) ставить БОЛЬШОЙ ордер, но В ПРОТИВОПОЛОЖНОМ направлении?????

Думаю надо эксперементировать - на то и дан тестер.
 
Serg_ASV:
WitoHOH:
Serg_ASV:
WitoHOH:


Не думаю что это хорошая мысль.

После такого скачка цена может и откатится и получится здоровенный лось.

Вот если бы можно было ДО скочка поставить, а ПОСЛЕ снят навар. ...


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

Смотри пример с данной идеей - с 4000 до 100000 за 2 месяца на достаточно требовательной истории.

А если попробовать при БОЛЬШОМ скачке цены (ну скажем на 5-7 пунктов) ставить БОЛЬШОЙ ордер, но В ПРОТИВОПОЛОЖНОМ направлении?????

Думаю надо эксперементировать - на то и дан тестер.


Логично! :)

Завтра попробую реализовать.