mihhail777
Михаил

 
Уровень 10


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Прошу написать советник на основе индикатора WPR для МТ4

Прошу написать советник на основе индикатора WPR для МТ4

wpr ma — mtf.mq4 (0 Kb)

вот линк yadi.sk/d/G4fFzghgxJXP2

Фильтр – обычная МА из МТ4

Все как бы на рисунке:



Вход на селл:
1. После желтого появилось красное
2. Свеча закрывается ниже МА
3. Вход на открытии следующей свечи

Вход на бай – все наоборот.

В работе всегда только один ордер.

Выход три варианта: или, или, или – одновременно, что первое сработает
1. Цвет поменялся на желтый (если в настройках 0 – условие не работает)
2. В пунктах прибыли (если в настройках 0 – условие не работает)
3. В % прибыли от депо (если в настройках 0 – условие не работает)

Если сделка закрылась в минус, то следующая сделка открывается, предыдущая сделку умножить на коэффициент, коэффициент вынести в настройки советника

Объем лота 2 варианта:
1. обычный лот
2. % от депозита

Возможность включения и выключения фильтра по МА – 0 не включен / 1 включен

Все настройки индикаторов, пожалуйста, вынести в настройки советника.

Заранее спасибо
  • +1
  • Просмотров: 4429
  • 21 октября 2016, 13:41
  • mihhail777
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Робот по Super Arrow Indicator
Следующая запись в группе  
Усреднитель по времени
21 октября 2016
21 октября 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (11)

+
0
Неплохо выглядит, интересно, что получится)
avatar

  4  seronn Сообщений: 26

  • 21 октября 2016, 14:13
+
0
на скрине да. в реале он будет запаздывать и открываться позже.
avatar

  17  vis Сообщений: 200 - ♫♪♫♪

  • 21 октября 2016, 14:46
+
0
жесткое утверждение, наверно проверенное жизнью :)  радует, что уже началось обсуждение, хотя подтверждение на изготовление пока нету ;) 
avatar

  10  mihhail777 Автор Сообщений: 159 - Михаил

  • 21 октября 2016, 15:06
+
0
В выходные посмотрю, а может сегодня даже начну.
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 21 октября 2016, 17:04
+
0
*bravo* 
avatar

  10  mihhail777 Автор Сообщений: 159 - Михаил

  • 21 октября 2016, 17:55
+
0
Все есть:




//+------------------------------------------------------------------+
//|                                                       Marple.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 1;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern double Risk       = 0;        // риск в % от депо
extern int StopLoss      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int Slip          = 30;       // реквот
extern bool MAFilter     = true;     // МА фильтр
extern bool CloseSig     = true;     // закрытие по сигналу
extern int ClosePro      = 5;        // закрытие по проценту от депо
extern int MAPeriod      = 12;       // период МА
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик

extern string IndName      = "wpr ma - mtf";
extern string TimeFrame    = "Current time frame";
extern int    WprPeriod    = 16;
extern int    MaPeriod     = 8;
extern int    WprLineWidth = 2;
extern int    MaLineWidth  = 1;
extern bool   Interpolate  = true;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   if(Risk>0) lot=AccountBalance()*100/(100000*Risk);// 10000*100/100000/Risk

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);
   double lime = iCustom(NULL,0,IndName,TimeFrame,WprPeriod,MaPeriod,0,Shift);
   double red  = iCustom(NULL,0,IndName,TimeFrame,WprPeriod,MaPeriod,3,Shift);
   bool buy  = red>lime;
   bool sell = red==lime;

   if(MAFilter)
     {
      buy  = red>lime && Close[1]>ma;
      sell = red==lime && Close[1]<ma;
     }

   if(buy)
     {
      PutOrder(0,Ask);
     }

   if(sell)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ProcentProfit()
  {
   double pr=0;
   double bal=AccountBalance();
   double eq=AccountEquity();
   pr=(eq-bal)*100/bal;//(11000-10000)*100/10000
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double lime = iCustom(NULL,0,IndName,TimeFrame,WprPeriod,MaPeriod,0,Shift);
   double red  = iCustom(NULL,0,IndName,TimeFrame,WprPeriod,MaPeriod,3,Shift);
//---
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(red==lime)
                 {
                  CloseAll();
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(red>lime)
                 {
                  CloseAll();
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==OP_SELL)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double lime=iCustom(NULL,0,IndName,TimeFrame,WprPeriod,MaPeriod,0,Shift);
   double red=iCustom(NULL,0,IndName,TimeFrame,WprPeriod,MaPeriod,3,Shift);

   if(t!=Time[0])
     {
      if(CountTrades()<1)
        {
         OpenPos();
        }
      if(CloseSig) ClosePos();
      t=Time[0];
     }
   if(ProcentProfit()>ClosePro) CloseAll();

   Comment("\n lime: ",lime,
           "\n red: ",red,
           "\n Procent Profit: ",ProcentProfit());
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 21 октября 2016, 18:57
+
0
по картинке видны сразу ошибки: нет зеленой — нету бай



По видимому нужно поставить только 1 ордер в работе. Он наверно подумал, что был сигнал, мы вше МА — вот он и зашел сразу на следующей свече после закрытия — добавим ограничение, что только один вход после пересечения (смены цвета)- но это второй вход… а первый не понимаю почему он зашел — условие не выполнено — нет зеленого цвета
Редактирован: 21 октября 2016, 20:57
avatar

  10  mihhail777 Автор Сообщений: 159 - Михаил

  • 21 октября 2016, 20:53
+
+1
по картинке видны сразу ошибки: нет зеленой — нету бай


Рисует. Если смотреть онлайн, есть зеленый. Смену цвета еще добавлю.
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 21 октября 2016, 21:48
+
0
вот блин, а мной не было замечено. если можно добавить в настройки на какой свече входить после изменения цвета и тогда будет все ок.
avatar

  10  mihhail777 Автор Сообщений: 159 - Михаил

  • 22 октября 2016, 09:27
+
0
Да, рисует гадина )))
Редактирован: 22 октября 2016, 14:35
avatar

  22  poker Сообщений: 849

  • 22 октября 2016, 14:35
+
0
Сделал вход на пересечении, на какой свече есть: www.opentraders.ru/downloads/1367/

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 22 октября 2016, 16:12

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий