ищу готовый советник на 2 машках для подбора наилучших настроек через тестер
советник должен работать по принципу:
ма1 пересекает ма2 снизу вверх - покупка
ма1 пересекает ма2 сверху вниз - продажа
ничего другого на данный момент не нужно
коды найденные в интернет меня не устраивают
требуется код от человека понимающего в программировании и заинтересованного в дальнейшем развитии темы
заказывать что-то через фриланс нет желания так как интересует общение с людьми ранее работавшими по данной теме
ищу готовый советник на 2 машках для подбора наилучших настроек через тестер
советник должен работать по принципу:
ма1 пересекает ма2 снизу вверх - покупка
ма1 пересекает ма2 сверху вниз - продажа
ничего другого на данный момент не нужно
коды найденные в интернет меня не устраивают
требуется код от человека понимающего в программировании и заинтересованного в дальнейшем развитии темы
заказывать что-то через фриланс нет желания так как интересует общение с людьми ранее работавшими по данной теме
Вот, вычистил всё. Параметры для Std и MA задаются в массивах:
По 10 значений в каждом массиве. Например, если std будет 0.001, то будет выбран мувинг с периодом 20, а второй мувинг будет произведением первого на MAmultiplier, по умолчанию 2. И так далее, для каждого значения std. Затем сигнал при пересечении 1-го и 2-го мувингов на втором и на первом баре, нулевой убрал т.к. будет много ложных сигналов. Подбирайте параметры с удовольствием. Можно значения массивов вынести во внешние переменные и подбирать через оптимизатор, вариантов много.
DevLevels devation_set={0.001,0.0009,0.0008,0.0007,0.0006,0.0005,0.0004,0.0003,0.0002,0.0000}; Массив значений старндартного отклонения MALevels ma_set={20,18,16,14,12,10,8,6,4,2}; массив значений мувингов, которые меняются в зависимости от текущего значения std
Весь код:
//+------------------------------------------------------------------+ //| AdaptiveMA.mq4 | //| dmitrievsky | //| https://www.mql5.com/ru/users/dmitrievsky| //+------------------------------------------------------------------+ #property version "1.00" #property strict int MAperiod; int MA2period; input int MAmultiplier=2; double devation; input double MaximumRisk=0.1; double Lots=0.01; input double LotsMultiplier=3; input int OrderMagic=745823; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ struct DevLevels { double d1,d2,d3,d4,d5,d6,d7,d8,d9,d10; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ struct MALevels { int m1,m2,m3,m4,m5,m6,m7,m8,m9,m10; }; DevLevels devation_set={0.001,0.0009,0.0008,0.0007,0.0006,0.0005,0.0004,0.0003,0.0002,0.0000}; MALevels ma_set={20,18,16,14,12,10,8,6,4,2}; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { CalculateMA(); TradeFunction(); CloseOrders(); //--- } //+------------------------------------------------------------------+ void TradeFunction() { double Loots=LotsOptimized(); if(MAsignals()==0) { if(CountOrders(0)==0 && CountOrders(1)==0) { if(OrderSend(Symbol(),OP_BUY,Loots,Ask,2,0,0,NULL,OrderMagic,0,Green)==false) GetLastError(); } } if(MAsignals()==1) { if(CountOrders(1)==0 && CountOrders(0)==0) { if(OrderSend(Symbol(),OP_SELL,Loots,Bid,2,0,0,NULL,OrderMagic,0,Green)==false) GetLastError(); } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseOrders() { for(int b=OrdersTotal()-1; b>=0; b--) { if(OrderSelect(b,SELECT_BY_POS)==true) { if(MAsignals()==0)if(OrderType()==1 && OrderMagicNumber()==OrderMagic) {if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Red) == false) GetLastError();} if(MAsignals()==1)if(OrderType()==0 && OrderMagicNumber()==OrderMagic) {if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,Red) == false) GetLastError();} } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int MAsignals() { int signal=2; if(iMA(NULL,0,MAperiod,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,MA2period,0,MODE_SMA,PRICE_CLOSE,0) && iMA(NULL,0,MAperiod,0,MODE_SMA,PRICE_CLOSE,1)<iMA(NULL,0,MA2period,0,MODE_SMA,PRICE_CLOSE,1)) signal=0; if(iMA(NULL,0,MAperiod,0,MODE_SMA,PRICE_CLOSE,0)<iMA(NULL,0,MA2period,0,MODE_SMA,PRICE_CLOSE,0) && iMA(NULL,0,MAperiod,0,MODE_SMA,PRICE_CLOSE,1)>iMA(NULL,0,MA2period,0,MODE_SMA,PRICE_CLOSE,1)) signal=1; return(signal); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CalculateMA() { devation=iStdDev(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0); if(devation>=devation_set.d10) { MAperiod=ma_set.m10; if(devation>=devation_set.d9) { MAperiod=ma_set.m9; if(devation>=devation_set.d8) { MAperiod=ma_set.m8; if(devation>=devation_set.d7) { MAperiod=ma_set.m7; if(devation>=devation_set.d6) { MAperiod=ma_set.m6; if(devation>=devation_set.d5) { MAperiod=ma_set.m5; if(devation>=devation_set.d4) { MAperiod=ma_set.m4; if(devation>=devation_set.d3) { MAperiod=ma_set.m3; if(devation>=devation_set.d2) { MAperiod=ma_set.m2; if(devation>=devation_set.d1) { MAperiod=ma_set.m1; } } } } } } } } } } MA2period=MAperiod*MAmultiplier; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; double risk=MaximumRisk; if(risk>0.12) risk=0.12; lot=NormalizeDouble(AccountBalance()*risk/1000.0,2); if(lot<0.01) lot=0.01; if(lot>25) lot=25; return(lot); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int CountOrders(int a) { int result=0; for(int k=0; k<OrdersTotal(); k++) { if(OrderSelect(k,SELECT_BY_POS)==true) { if(OrderType()==a && OrderMagicNumber()==OrderMagic) {result++;} else {} } } return(result); } //+------------------------------------------------------------------+
Результат за 2 мес на м15:
А че, для ребейта пойдет)
Maxim Dmitrievsky:
...Весь код...
Сделала лот статичным - за этот год eur/usd:
на M5 - 28 непрерывных проигрышей,
на H1 - 10 непрерывных проигрышей.
Уменьшить бы количество непрерывных проигрышей, то можно ставить мартин.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ищу готовый советник на 2 машках для подбора наилучших настроек через тестер
советник должен работать по принципу:
ма1 пересекает ма2 снизу вверх - покупка
ма1 пересекает ма2 сверху вниз - продажа
ничего другого на данный момент не нужно
коды найденные в интернет меня не устраивают
требуется код от человека понимающего в программировании и заинтересованного в дальнейшем развитии темы
заказывать что-то через фриланс нет желания так как интересует общение с людьми ранее работавшими по данной теме