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

 

И пока мне нормально не объяснят, почему у меня по всем тикам происходит моментальный слив, при спреде в 2 пункта, я не успокоюсь.

 
Strategy Tester Report
Lucky_исходник
MetaQuotes-Demo (Build 210)

Символ EURGBP (Euro vs Great Britain Pound )
Период День (D1) 2007.01.02 00:00 - 2007.10.12 00:00 (2007.01.01 - 2007.10.15)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры Shift=2; Limit=15;
Баров в истории 2289 Смоделировано тиков 440045 Качество моделирования 90.00%
Ошибки рассогласования графиков 21
Начальный депозит 10000.00
Чистая прибыль 1096311760.61 Общая прибыль 1489111601.51 Общий убыток -392799840.90
Прибыльность 3.79 Матожидание выигрыша 78888.38
Абсолютная просадка 40.79 Максимальная просадка 75730896.08 (11.19%) Относительная просадка 70.22% (143359.54)
Всего сделок 13897 Короткие позиции (% выигравших) 6788 (96.35%) Длинные позиции (% выигравших) 7109 (95.81%)
Прибыльные сделки (% от всех) 13351 (96.07%) Убыточные сделки (% от всех) 546 (3.93%)
Самая большая прибыльная сделка 7764992.67 убыточная сделка -26553985.77
Средняя прибыльная сделка 111535.59 убыточная сделка -719413.63
Максимальное количество непрерывных выигрышей (прибыль) 366 (150007417.25) непрерывных проигрышей (убыток) 10 (-26157.47)
Максимальная непрерывная прибыль (число выигрышей) 259735421.77 (126) непрерывный убыток (число проигрышей) -55199100.13 (3)
Средний непрерывный выигрыш 42 непрерывный проигрыш 2
 
alexluzan:

И пока мне нормально не объяснят, почему у меня по всем тикам происходит моментальный слив, при спреде в 2 пункта, я не успокоюсь.


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

Также в реале он закрывается не всегда с профитом, т.к. ДЦ не успевает по первому тику совершить сделку и сделка иногда закрывается с 0.00 или с небольшим убытком, но может и с большим профитом. Именно для этого эксперта надо доработать (описано ниже).

 
Все хотят денег... (и я не исключение).. В общем тестировал этого советника пару дней-чуть голову не сломал-разные дц(почему-то разные истории) загрузил с Альпари минутки) тест в гору! но ! краем глаза заметил в отчетах х..ву тучу "ошибок разсогласования графиков"и при визуальном тесте он брал цены неизвестно как (на графиках реально их не было).. в общем если история загружина не корректно-миллионы.. история хорошая-х(мат)й. и к стати, даже если на демо счете пойдет профит не факт что он будет в реале т.к. время котирования демо 1-2 сек. а реала 5-15 и за это время наш 1 поинт прибыли превращается в 2 убытка... скажите что я не прав! Пожалуйста! так хочется миллионов.... :(
 
Stinger:
Все хотят денег... (и я не исключение).. В общем тестировал этого советника пару дней-чуть голову не сломал-разные дц(почему-то разные истории) загрузил с Альпари минутки) тест в гору! но ! краем глаза заметил в отчетах х..ву тучу "ошибок разсогласования графиков"и при визуальном тесте он брал цены неизвестно как (на графиках реально их не было).. в общем если история загружина не корректно-миллионы.. история хорошая-х(мат)й. и к стати, даже если на демо счете пойдет профит не факт что он будет в реале т.к. время котирования демо 1-2 сек. а реала 5-15 и за это время наш 1 поинт прибыли превращается в 2 убытка... скажите что я не прав! Пожалуйста! так хочется миллионов.... :(

Повторяю!


Это грааль.

Он может по разному работать на разных историях.

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

 

В общем.. Идея данного эксперта неплохая.

НО!

Как я вижу проблема в том, что он слишком рано закрывает сделку, зарабатывая часто по 1-2 пункта и потом разом сливает большее на лосях.

если тестить на КОНТРОЛЬНЫХ ТОЧКАХ, то он зарабатывает только по тому, что в этих контрольных точках данные о ценах открытия, закрытия, Hi и Low => он не может взять 1 поинт (нет данных) а берет что есть - 10-15 поинтов и выше....

т.к. по контрольным точкам все-таки идет в хороший профит - следовательна цена по которой закрывались сделки существовала.

Идея заключается в том чтобы привязать какой-нить индикатор на закрытие cделки (к примеру тот же самый стохастик.. или MACD) или добавить TrailingStop - тем самым не дать ему закрываться по минимуму.

Тогда правда смысл данного эксперта "брать по минимуму, но часто, а сливать конкретную сумму и не редко" немного поменяется ...

Люди - я не селён в MQL4 (могу конечно разобраться, но займет время), кому не трудно реализуйте пожалуйста этот вариант (лучше два - один с индикатором второй с TS) и кинте сюда код на тестирование - авось доведем до ума..

С уважением..

 
//+------------------------------------------------------------------+
//|                                                                  |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
 
double a, b; 
bool first=true; 
extern int Shift = 3; //Если дерг (в верх или в низ) в “интервале1” больше 3 ставит Sell или                   
                                                     //Buy, без ограничений их  количества
extern int Limit = 18;//Если убыток по ордеру >18, все-таки закрывает ордер, типа StopLoss
 
 
 
 
//---------------------------------------------------------------------------- 
int start()
{ 
  if (first) 
   {
      a=Ask; 
      b=Bid; 
      first=false; 
      return(0);
   }                                        //” Интервал 1”
 
  if (Ask-a>=Shift*Point) 
    {
    OrderSend(Symbol(),OP_SELL,GetLots(),Bid,3,0,0,"",0,0,CLR_NONE);
    } 
  if (b-Bid>=Shift*Point) 
    {
    OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,0,0,"",0,0,CLR_NONE);
    } 
 
  a=Ask;  
  b=Bid; 
  
  CloseAll(); 
return(0);} 
//----------------------------------------------------------------------------- 
void CloseAll()
{ 
  for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) 
  { 
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
    if (OrderSymbol() == Symbol()) 
    { 
      if ((OrderProfit()>0)) 
      { 
        if(OrderType()==OP_BUY)  OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); //Закрывает все ордера по 
                                                                                                                                  //которым есть прибыль 
 
        if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); 
      } 
      else 
      {                                    //Закрывает все ордера по которым убыток превысил 18, типа StopLoss
        if((OrderType()==OP_BUY)  && (((OrderOpenPrice()-Ask)/Point) > Limit)) 
          OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); 
        if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/Point) > Limit)) 
          OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); 
      } 
    } 
  } 
} 
 
 
 
//-------------------------------------------------------------------------- 
 
 
 
double GetLots() //Определяет размер лота
{ 
 
return (NormalizeDouble(AccountFreeMargin()/10000,1)); 
  
} 
//-------------------------------------------------------------------------

Такое впечатление, что многие просто не поняли, что это за бяка. Мне так кажется, без дополнительных технических индикаторов, эта штука не может работать в принципе. Нет на определенных интервалах может, или на строго синусоидальных трендах, или вообще без спреда. Но слив заложен в самой концепции. Правда говорят "это исходник", ну это смотря какой смысл вкладывать в слово "исходник". Например, идеи Марксизма можно тоже считать исходником. Вопрос, что присходит при осуществлении? А ничего хорошего. Если в этот "исходник" вводить технический анализ, то зачем закрываться по минимуму? А если не закрываться по минимуму, то зачем реагировать на каждый "дерг"? Короче, идея бесплодна. Это хорошая иллюстрация к теории случайного выставления ордеров. Только вместо генератора случайных чисел используется не менее случайный "дерг" поступающий непосредственно с Forex.

 
Подскажите кто-нибудь, как поменять лот на 0.01. И что за GetLots?
 
hitmax:
Подскажите кто-нибудь, как поменять лот на 0.01. И что за GetLots?

return (NormalizeDouble(AccountFreeMargin()/10000,/*1*/2));
 

Доброго времени суток ВСЕМ!

Идея советника действительна проста до безобразия!

Играюсь с ним с того времени как он появился в Code Base.

Прочитав развернувшуюся дискурсию хотелось бы узнать:

А почему Вы утверждаете что он работает со спредом только в 2 пункта?

Мне кажется что его можно приспособить и для других параметров.

Для примера выкладываю немного мной доработаный код:

//+------------------------------------------------------------------+
//|                                                                  |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
 
double a, b; 
bool first=true; 
extern int Shift = 3; 
extern int Limit = 15;
extern int TP = 2;
 
 
 
 
//---------------------------------------------------------------------------- 
int start()
{ 
  if (first) 
   {
      a=Ask; 
      b=Bid; 
      first=false; 
      return(0);
   } 
 
  if (Ask-a>=Shift*Point) 
    {
    OrderSend(Symbol(),OP_SELL,GetLots(),Bid,3,0,0,"Lucky",0,0,CLR_NONE);
    } 
  if (b-Bid>=Shift*Point) 
    {
    OrderSend(Symbol(),OP_BUY,GetLots(),Ask,3,0,0,"Lucky",0,0,CLR_NONE);
    } 
 
  a=Ask;  
  b=Bid; 
  
  CloseAll(); 
return(0);} 
//----------------------------------------------------------------------------- 
void CloseAll() 
{ 
  for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) 
  { 
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
    if (OrderSymbol() == Symbol()) 
    { 
      if ((OrderProfit()>TP)) 
      { 
        if(OrderType()==OP_BUY)  OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); 
        if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); 
      } 
      else 
      { 
        if((OrderType()==OP_BUY)  && (((OrderOpenPrice()-Ask)/Point) > Limit)) 
          OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); 
        if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/Point) > Limit)) 
          OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); 
      } 
    } 
  } 
} 
 
 
 
//-------------------------------------------------------------------------- 
 
 
 
double GetLots() 
{ 
double lots;
lots = NormalizeDouble(AccountFreeMargin()/10000,1);
if (lots < 0.01) {lots = 0.01;};
if (lots > 10) {lots = 10;};
return (lots); 
 
  
} 
//-------------------------------------------------------------------------

Поясню по внесенным изменениям:

1. Введена переменная TP. Эта переменая отвечает за размер прибыли (для тех кто не хочет закрыватся по минимуму или для спредов больше 2)

2. Изменена функция GetLots. Теперь она может работать с маленькими начальными балансами, и в тоже время не позволяет выставлять ордера более 10 лотов.

Прошу тестировать и критиковать.

Причина обращения: