ell75

 
Уровень 7

  Торгую в компаниях:

  Моя торговля


График торгового счета ell75


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

Рейтинг 2089



РЕКОМЕНДУЮ



доработка к советнику МА

Здравствуйте. Прошу Вас доработать к советнику zakaz.opentraders.ru/24627.html чтобы советник открывал ТОЛЬКО ОДИН ордер при пересечении на этой свече. а то получается. так что сигнал поступил при пересечении машек, советник открыл ордер взял профит и пошёл лупасить ордера ещё, в убыток Drug_2MA_Exp2.rar (18 Kb). спасибо
  • +1
  • Просмотров: 3400
  • 14 мая 2015, 15:05
  • ell75
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник M-A
Следующая запись в группе  
Добавить советнику мартин
13 мая 2015
14 мая 2015

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

+
0
А где лупасит то? Есть сигнал торгует, нет молчит:

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 14 мая 2015, 16:00
+
0
нет.это если работать с т\п напиример в 10 пунктов. советник открыл ордер на этой свече при сигнале. например взял эти 10 пунктов, а сеча ещё ходит. вот после закрытия этого т\п, сеча то щё подаёт сигнал, вот он и дальше открывает. мне наверное это сложно обьяснить. возможно для советника сделать комеанду такую, при этой свече на этом сигнале пересечения открыть только ОДНИН ордер?
Редактирован: 14 мая 2015, 16:25
avatar

  7  ell75 Автор Сообщений: 195

  • 14 мая 2015, 16:10
+
+1
Готово:




//+------------------------------------------------------------------+
//|                                                Drug_2MA_Exp2.mq4 |
//|                                                              Oxy |
//|                                   http://oxy.opentraders.ru/bio/ |
//+------------------------------------------------------------------+
#property copyright "Oxy"
#property link      "http://oxy.opentraders.ru/bio/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum name_MA_method 
  {
   Simple,
   Exponential,
   Smoothed,
   Linear_Weighted,
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum name_MA_price 
  {
   CLOSE,
   OPEN,
   HIGH,
   LOW,
   MEDIAN,
   TYPICAL,
   WEIGHTED,
  };
//------- Внешние параметры -----------------------------------------+
input  string         name_MA1="______________MA_1________________"; // параметры MA 1
extern int            ma1_period        = 6;           // Период
extern int            ma1_shift         = 0;           // Сдвиг
extern name_MA_method ma1_method        = Exponential; // Метод MA
extern name_MA_price  ma1_applied_price = CLOSE;       // Применить к
input  string         name_MA2="______________MA_2________________"; // параметры MA 2
extern int            ma2_period        = 24;          // Период
extern int            ma2_shift         = 0;           // Сдвиг
extern name_MA_method ma2_method        = Exponential; // Метод MA
extern name_MA_price  ma2_applied_price = CLOSE;       // Применить к
input  string         expert="________Переменные_эксперта_______"; // переменные
extern double         Lot               = 0.1;         // Лот
extern int            StopLoss          = 400;         // Stop Loss, 0 - не ставим
extern int            TakeProfit        = 800;         // Take Profit, 0 - не ставим
extern int            Slippage          = 30;          // Проскальзывание цены
extern int            MagicNumber       = 577575;      // Идентификатор ордера
//------- Глобальные переменные советника -------------------------------------+
string   Symb;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!IsTradeAllowed()) { Print("Необходимо разрешить советнику торговать!");  return(INIT_FAILED);}
   Symb=Symbol();
   if(Lot<MarketInfo(Symb,MODE_MINLOT) || Lot>MarketInfo(Symb,MODE_MAXLOT)) { Print("Неправильно выставлен лот!"); return(INIT_FAILED);}
   if(StopLoss  !=0 && StopLoss  <MarketInfo(Symb, MODE_STOPLEVEL)) {Print("Неправильно выставлен Stop Loss!");   return(INIT_FAILED);}
   if(TakeProfit!=0 && TakeProfit<MarketInfo(Symb, MODE_STOPLEVEL)) {Print("Неправильно выставлен Take Profit!"); return(INIT_FAILED);}
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double iMA1_0 = iMA(Symb, 0, ma1_period, ma1_shift, method_MA(ma1_method), price_MA(ma1_applied_price), 0);
   double iMA1_1 = iMA(Symb, 0, ma1_period, ma1_shift, method_MA(ma1_method), price_MA(ma1_applied_price), 1);
   double iMA1_2 = iMA(Symb, 0, ma1_period, ma1_shift, method_MA(ma1_method), price_MA(ma1_applied_price), 2);
   double iMA2_0 = iMA(Symb, 0, ma2_period, ma2_shift, method_MA(ma2_method), price_MA(ma2_applied_price), 0);
   double iMA2_1 = iMA(Symb, 0, ma2_period, ma2_shift, method_MA(ma2_method), price_MA(ma2_applied_price), 1);
   double iMA2_2 = iMA(Symb, 0, ma2_period, ma2_shift, method_MA(ma2_method), price_MA(ma2_applied_price), 2);
   
   if(NewBar())
     {
      if(iMA1_0<iMA2_0 && iMA1_1<iMA2_1 && iMA1_2>iMA2_2) 
        { // sell
         closeOpenPos(0);
         if(HaveOpenPos()==false) SellPos_stepPoint(Lot,StopLoss,TakeProfit);
        }
      if(iMA1_0>iMA2_0 && iMA1_1>iMA2_1 && iMA1_2<iMA2_2) 
        { // buy
         closeOpenPos(1);
         if(HaveOpenPos()==false) BuyPos_stepPoint(Lot,StopLoss,TakeProfit);
        }
     }
  }
//+------------------------------------------------------------------+
bool HaveOpenPos(int ot=-1) 
  {
   int i,k=OrdersTotal();
   if(ot<0 || ot>1) ot=-1;
   for(i=k-1; i>=0; i--) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if(OrderSymbol()==Symb && OrderMagicNumber()==MagicNumber) 
           {
            if(ot==-1) 
              {
               if(OrderType()==0 || OrderType()==1) return (true);
                 } else {
               if(ot==OrderType()) return (true);
              }
           }
        }
     }
   return (false);
  }
//+------------------------------------------------------------------+
void closeOpenPos(int oCt=-1) 
  {
   int i,ot,k=OrdersTotal();

   for(i=k-1; i>=0; i--) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if(OrderSymbol()==Symb && OrderMagicNumber()==MagicNumber) 
           {
            ot=OrderType();
            if(ot==0 && (oCt==0 || oCt==-1))
              {
               RefreshRates();
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage)) Print("Не удалось закрыть ордер ",OrderTicket(),"!");
              }
            if(ot==1 && (oCt==1 || oCt==-1)) 
              {
               RefreshRates();
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage)) Print("Не удалось закрыть ордер ",OrderTicket(),"!");
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
bool BuyPos_stepPoint(double _lot,int _sl=0,int _tp=0,string _comment=NULL) 
  {
   double sl=0,tp=0;
   RefreshRates();
   if(_sl>0) sl=Ask-(double)_sl*Point;
   if(_tp>0) tp=Ask+(double)_tp*Point;
   if(!OrderSend(Symb,OP_BUY,NormalizeDouble(_lot,2),NormalizeDouble(Ask,Digits),Slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),_comment,MagicNumber)) 
     {
      Print("Не удалось OP_BUY!");
      return (false);
     }
   return (true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool SellPos_stepPoint(double _lot,int _sl=0,int _tp=0,string _comment=NULL) 
  {
   double sl=0,tp=0;
   RefreshRates();
   if(_sl>0) sl=Bid+(double)_sl*Point;
   if(_tp>0) tp=Bid-(double)_tp*Point;
   if(!OrderSend(Symb,OP_SELL,NormalizeDouble(_lot,2),NormalizeDouble(Bid,Digits),Slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),_comment,MagicNumber)) 
     {
      Print("Не удалось OP_SELL!");
      return (false);
     }
   return (true);
  }
//+------------------------------------------------------------------+
int method_MA(name_MA_method method) 
  {
   switch(method) 
     {
      case Simple:          return(0);
      case Exponential:     return(1);
      case Smoothed:        return(2);
      case Linear_Weighted: return(3);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int price_MA(name_MA_price applied_price) 
  {
   switch(applied_price) 
     {
      case CLOSE:     return(0);
      case OPEN:      return(1);
      case HIGH:      return(2);
      case LOW:       return(3);
      case MEDIAN:    return(4);
      case TYPICAL:   return(5);
      case WEIGHTED:  return(6);
     }
   return(0);
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar=0;
   datetime curbar=Time[0];
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return (true);
     }
   else
     {
      return(false);
     }
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 14 мая 2015, 16:27
+
0
ой. а можно как то ссылкой на скачку уже обновлённого советника? я не понимаю как у куда это в сунуть, извините.
avatar

  7  ell75 Автор Сообщений: 195

  • 14 мая 2015, 17:16
+
+1
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 14 мая 2015, 17:33
+
0
спасибо огромное Вам!
avatar

  7  ell75 Автор Сообщений: 195

  • 14 мая 2015, 18:10

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