Помогите пожалуйста

 

Доброе время суток!

Вот решился взяться за советник на Индикаторах ББ и МА но вот возникла проблема... В советнике нету TP и SL чтобы можно было самому выставлять, а там в полном автомате сам закрывает как бы этого не хотелось бы... Пожалуйста помогите новичку с данным советником. Если не затруднит возможно какие-то советы дадите для трендовой торговли или Контро-трендовой для данного советника. Я имел введу по сигналам или каких не будь модификаций внедрить в советник. 

Файлы:
BB.mq4  7 kb
 
willrik:  Вот решился взяться за советник на Индикаторах ББ и МА ...
За основу взят Moving Average.mq4 ? Но там сейчас ВМЕСТО void start() используется void OnTick() - это более современно. И то вместо IsTradeAllowed()==false считаю более изящным да и кратким !IsTradeAllowed(). А трал есть, судя по параметру input double TrailingStop  =30; в MACD Sample.mq4, который рядом с Moving Average.mq4 в дистрибутиве терминала...
 
STARIJ:
За основу взят Moving Average.mq4 ? Но там сейчас ВМЕСТО void start() используется void OnTick() - это более современно. И то вместо IsTradeAllowed()==false считаю более изящным да и кратким !IsTradeAllowed(). А трал есть, судя по параметру input double TrailingStop  =30; в MACD Sample.mq4, который рядом с Moving Average.mq4 в дистрибутиве терминала...
Вам естественно виднее... вот и прошу помощи чтобы сделать боли менее советник для пользование на торгах. 
 

Переделал немного советник в своем стиле, добавил выставление стопов и отключение закрытие по сигналу

Файлы:
BB.mq4  14 kb
 

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

 

//+------------------------------------------------------------------+
//|                                                           BB.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link      "https://www.mql5.com/ru/users/sergey1294"
#property version   "1.00"
#property strict

input int             MagicNumber  =20110315;  // Номер копии
input int             MAPeriod     =20;        // Период МА
input ENUM_TIMEFRAMES TimeFrameMA  =PERIOD_D1; // Тайм Фрейм МА
input int             BBPeriod     =20;        // Период ВВ
input double          BBDev        =2.0;       // Отклонение ВВ
input double          Lot          =0.01;      // Объем
input int             StopLoss     =300;       // Стоп Лосс (Пипс)
input int             TakeProfit   =500;       // Тейк Профит (Пипс)
input int             Slippage     =10;        // Проскальзование (Пипс)
input bool            CloseSignal  = false;    // закрытие по сигналу ( false - выкл, true - вкл)
input string          CommentOrder ="BB";      //Комментарий к ордеру
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(TotalOrder()==0)OrderOpen(GetSignalOpen());
   else
     {
      ModifySL(StopLoss);
      ModifyTP(TakeProfit);
      if(CloseSignal)OrderClose(GetSignalClose());
     }
  }
//+------------------------------------------------------------------+
int GetSignalOpen()
  {
   double bbh=iBands(NULL,0,BBPeriod,BBDev,0,PRICE_CLOSE,MODE_UPPER,0);
   double bbl=iBands(NULL,0,BBPeriod,BBDev,0,PRICE_CLOSE,MODE_LOWER,0);
   double ma=iMA(NULL,TimeFrameMA,MAPeriod,0,MODE_SMA,PRICE_CLOSE,0);
   double ma1=iMA(NULL,TimeFrameMA,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);

   if(Ask<bbl && ma>ma1) return(OP_BUY);
   if(Bid>bbh && ma<ma1) return(OP_SELL);
   return(WRONG_VALUE);
  }
//+------------------------------------------------------------------+
int GetSignalClose()
  {
   double bbh=iBands(NULL,0,BBPeriod,BBDev,0,PRICE_CLOSE,MODE_UPPER,0);
   double bbl=iBands(NULL,0,BBPeriod,BBDev,0,PRICE_CLOSE,MODE_LOWER,0);

   if(Bid>bbh)return(OP_BUY);
   if(Ask<bbl)return(OP_SELL);
   return(WRONG_VALUE);
  }
//+------------------------------------------------------------------+
void OrderOpen(int type)
  {
   double price_open=0.0;
   if(type==WRONG_VALUE)return;
   if(!IsTradeAllowed())return;

   if(type==OP_BUY)price_open = NormalizeDouble(Ask,_Digits);
   if(type==OP_SELL)price_open = NormalizeDouble(Bid,_Digits);

   int ticket=OrderSend(_Symbol,type,Lot,price_open,Slippage,0,0,CommentOrder,MagicNumber);
   if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OrderClose(int type)
  {
   double price_close=0.0;
   if(type==WRONG_VALUE)return;
   if(!IsTradeAllowed())return;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=MagicNumber)continue;
      if(OrderSymbol()!=_Symbol)continue;
      if(OrderType()!=type)continue;
      if(type==OP_BUY)price_close=NormalizeDouble(Bid,_Digits);
      if(type==OP_SELL)price_close=NormalizeDouble(Ask,_Digits);
      bool res=OrderClose(OrderTicket(),OrderLots(),price_close,Slippage);
      if(!res)Print("Ошибка закрытия ордера № - ",GetLastError());
     }
  }
//+------------------------------------------------------------------+
int TotalOrder()
  {
   int value=0;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=MagicNumber)continue;
      if(OrderType()>1)continue;
      value++;
     }
   return(value);
  }
//+------------------------------------------------------------------+
void ModifySL(double sl)
  {
   if(sl<=0)return;
   double price_sl=0.0;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=MagicNumber)continue;
      if(OrderSymbol()!=_Symbol)continue;
      if(OrderType()>1)continue;
      if(OrderStopLoss()==0)
        {
         if(OrderType()==OP_BUY)price_sl=NormalizeDouble(OrderOpenPrice()-sl*_Point,_Digits);
         if(OrderType()==OP_SELL)price_sl=NormalizeDouble(OrderOpenPrice()+sl*_Point,_Digits);
         if(price_sl<=0)continue;
         bool res=OrderModify(OrderTicket(),OrderOpenPrice(),price_sl,OrderTakeProfit(),0);
         if(!res)Print("Ошибка модификации стоп лосса ордера № - ",GetLastError());
        }
     }
  }
//+------------------------------------------------------------------+
void ModifyTP(double tp)
  {
   if(tp<=0)return;
   double price_tp=0.0;
   int total=OrdersTotal();
   for(int i=total-1; i>=0; i--)
     {
      if(!OrderSelect(i,SELECT_BY_POS))continue;
      if(OrderMagicNumber()!=MagicNumber)continue;
      if(OrderSymbol()!=_Symbol)continue;
      if(OrderType()>1)continue;
      if(OrderTakeProfit()==0)
        {
         if(OrderType()==OP_BUY)price_tp=NormalizeDouble(OrderOpenPrice()+tp*_Point,_Digits);
         if(OrderType()==OP_SELL)price_tp=NormalizeDouble(OrderOpenPrice()-tp*_Point,_Digits);
         if(price_tp<=0)continue;
         bool res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),price_tp,0);
         if(!res)Print("Ошибка модификации тейк профита ордера № - ",GetLastError());
        }
     }
  }
//+------------------------------------------------------------------+

 ...

Файлы:
BB.mq4  14 kb
 

Sergey Gritsay, Спасибо Вам за помощь! 

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