Довести до ума

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yuriy Kuzmin
617
Yuriy Kuzmin  

Добрый день, уважаемые форумчане!

Нашел советника, который мне показался перспективным, но накинув его на разные графики обнаружил кучу костылей (не на всех парах работает и не всегда корректно открывает/удаляет ордера + трал косячный). 

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

Помогите поправить код. Сам пытался, но понял, что в этом деле полный ноль((

//+------------------------------------------------------------------+

extern int    MagicNumber = 123456;
extern double min_lot = 0.01;
extern double max_lot = 10;
extern double risk = 50;         //процент используемых свободных средств
extern double DIF = 0.0011;      //отступ для выставления ордеров
extern double SL = 0.0025;       //StopLoss
extern double TP = 0.0025;       //TakeProfit
extern double TS = 0.00015;      //TrailingStop
extern double DTS = 0.0009;      //Минимальный профит для включения TrailingStop

//-- GlobalVariable
//double lot;
double pdb;
double pds;
string sym;
bool   exposed=false;

double calc_lot (string _sym){        //Calculate Lot size
   double _templ;
   _templ = AccountFreeMargin()*(risk/100)/(MarketInfo(_sym, MODE_BID)*1000);
   _templ = NormalizeDouble (_templ, 3);
   if (_templ < min_lot) _templ = min_lot;
   if (_templ > max_lot) _templ = max_lot;
   return (_templ);
}

void DeleteOrder (){                   // Delete Open Stop Orders
   int _total=OrdersTotal();
   for(int _pos=0;_pos<_total;_pos++){
      OrderSelect(_pos, SELECT_BY_POS, MODE_TRADES);
      if (OrderType()>1 && OrderMagicNumber() == MagicNumber)
         OrderDelete(OrderTicket());          
   }
}

int OpenOrderBuy (string _sym, double _lot, double _DIF, double _SL, double _TP){
   double _max, _prb;
   _max = iHigh(_sym,PERIOD_D1,1);
   _prb = NormalizeDouble(_max,6)+_DIF;
   return (OrderSend(_sym, OP_BUYSTOP, _lot, _prb, 5, _prb-_SL, _prb+_TP, "" ,MagicNumber, 0, Red));
}

int OpenOrderSell (string _sym, double _lot, double _DIF, double _SL, double _TP){
   double _min, _prs;
   _min = iLow(_sym,PERIOD_D1,1);
   _prs = NormalizeDouble(_min,6)-_DIF;
   return (OrderSend(_sym, OP_SELLSTOP, _lot, _prs, 5, _prs+_SL, _prs-_TP, "" ,MagicNumber, 0, Red));
}

int start(){
   sym = Symbol();
   if (Hour()==0 && exposed == false){
     double lot = calc_lot(sym);
     DeleteOrder();
     OpenOrderBuy (sym, lot, DIF, SL, TP);
     OpenOrderSell (sym, lot, DIF, SL, TP);
     exposed = true;
   }
   if (Hour()==23) exposed = false;
   int total=OrdersTotal();
   for(int pos=0;pos<total;pos++){
      OrderSelect(pos, SELECT_BY_POS, MODE_TRADES);
      if (OrderType()==0 && OrderMagicNumber() == MagicNumber){     //ордера на покупку
         if (OrderOpenPrice()<(Bid-DTS)){
            double db = Bid - OrderOpenPrice();
            double tslb = Bid - OrderStopLoss();
            if (tslb>TS && db>TS){
               OrderModify(OrderTicket(),OrderOpenPrice(),(Bid-TS),OrderTakeProfit(),0,Blue);
            }
         }
      }
      if (OrderType()==1 && OrderMagicNumber() == MagicNumber){     //ордера на продажу
         if (OrderOpenPrice()>(Ask-DTS)){
            double ds = OrderOpenPrice()-Ask;
            double tsls = OrderStopLoss()-Ask;
            if (tsls>TS && ds>TS){
               OrderModify(OrderTicket(),OrderOpenPrice(),(Ask+TS),OrderTakeProfit(),0,Blue);
            }
         }
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
Alexey Viktorov
28139
Alexey Viktorov  
Yuriy Kuzmin:

Добрый день, уважаемые форумчане!

Нашел советника, который мне показался перспективным, но накинув его на разные графики обнаружил кучу костылей (не на всех парах работает и не всегда корректно открывает/удаляет ордера + трал косячный). 

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

Помогите поправить код. Сам пытался, но понял, что в этом деле полный ноль((

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

Yuriy Kuzmin
617
Yuriy Kuzmin  
Alexey Viktorov:

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

на тестах при оптимизации показывает НЕПЛОХОЙ результат. Но только на евре/долларе.

FXwin
753
FXwin  
Yuriy Kuzmin:

не на всех парах работает и не всегда корректно открывает/удаляет ордера + трал косячный 

Пробуй, работает на всех парах.

Файлы:
Ind.mq4 7 kb
Yuriy Kuzmin
617
Yuriy Kuzmin  
FXwin:

Пробуй, работает на всех парах.

Супер! Спасибо!

Открывает везде - проверил.

Но эта гадина теперь стопы и тейки ставит на уровне открытия ордера...))) 

Konstantin Erin
2161
Konstantin Erin  
Yuriy Kuzmin:  на тестах при оптимизации показывает НЕПЛОХОЙ результат. Но только на евре/долларе.

Нашел перспективную стратегию. Скачал с маркета около 50 демонстрационных версий по этой тематике. Выбрал один - увеличивал депозит за 1 день 11 января 2017 года в тысячи раз. Изучил отчет и укрепился в выбранном направлении. Написал десяток своих вариантов - один прилагаю - оцените перспективность. Депозит задавайте 100$ и даты в 2017 году. Там параметр ММ = при превышении определенной величины депозита прекращает торговлю и выходит.

Один вариант в тестере за 1 указанный день из 40 долларов делает миллион. В тестере за 2018 год сделал из 40 долларов 7 миллионов и заткнулся на полпути - мало памяти.

Поставил на ECN демо - за день почти удваивает. Ставлю на ECN реал того же брокера и одновременно на на ECN демо. На реале спред в 2 раза меньше. Сравниваем результаты за четверг 29 марта 2018 года

    Тиковые графики разные...

На демо 182 сделки +18.08 - 8.93 = +9.15 прибыли      На реале 167 сделок +13.07 - 20.67 = -7.60 убыток. Может был день плохой?

Файлы:
-3-007.ex4 14 kb
Vitaly Muzichenko
14119
Vitaly Muzichenko  
STARIJ:

Нашел перспективную стратегию. Скачал с маркета около 50 демонстрационных версий по этой тематике. Выбрал один - увеличивал депозит за 1 день 11 января 2017 года в тысячи раз. Изучил отчет и укрепился в выбранном направлении. Написал десяток своих вариантов - один прилагаю - оцените перспективность. Депозит задавайте 100$ и даты в 2017 году. Там параметр ММ = при его превышении определенной величины депозита прекращает торговлю и выходит.

Один вариант в тестере за 1 указанный день из 40 долларов делает миллион. В тестере за 2018 год сделал из 40 долларов 7 миллионов и заткнулся на полпути - мало памяти.

Поставил на ECN демо - за день почти удваивает. Ставлю на ECN реал того же брокера и одновременно на на ECN демо. На реале спред в 2 раза меньше. Сравниваем результаты за четверг 29 марта 2018 года

    Тиковые графики разные...

На демо 182 сделки +18.08 - 8.93 = +9.15 прибыли      На реале 167 сделок +13.07 - 20.67 = -7.60 убыток. Может был день плохой?

Нужно не на ЕCN проверять, а на STP или NDD, где нет комиссии, а только спред

Konstantin Erin
2161
Konstantin Erin  
Vitaly Muzichenko:   Нужно не на ЕCN проверять, а на STP или NDD, где нет комиссии, а только спред
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий