Доработка експерта BBands_Stop_v1

Здрасвуйте помогите переделать експерта BBands_Stop_v1 добавить нужно:
1.Мартингел умножения лота после убиточной сделки
2.Откривать только один ордер по сигналу, а то после срабативания профита например на покупку откривается опять на покупку.
BBands_Stop_v1.rar (7 Kb)
индикатор:
ExBB.zip (1 Kb)
Спасибо всем кто возмется за ето!
  • 0
  • Просмотров: 3785
  • 13 октября 2015, 15:30
  • makarchuk2020
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Следующая запись в моем блоге  
Помогите розшифровать активацию советника
07 апреля 2016

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

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

+
0
Чуть попозже разместите в столе заказов, тогда посмотрю.
avatar

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

  • 13 октября 2015, 22:00
+
0
Готово.




//+------------------------------------------------------------------+
//|                                                         ExBB.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "BBands expert advisor"

//--- Inputs
extern double Lots         = 0.1;  // лот
extern double MaxLot       = 5;    // максимальный лот
extern double KLot         = 2;    // умножение лота
extern int    StopLoss     = 500;  // лось
extern int    TakeProfit   = 500;  // язь
extern int    Slip         = 30;   // слипаж
//----
extern int    Length       = 20;   // период BB 
extern double Deviation    = 2;    // отклонение ВВ
extern int    Magic        = 20;   // магик

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
//--- get Ind
   double BBBlue=iCustom(Symbol(),0,"BBands_Stop_v1",Length,Deviation,0,1);
   double BBRed=iCustom(Symbol(),0,"BBands_Stop_v1",Length,Deviation,1,1);
//--- sell conditions
   if(BBRed>0 && (LastDealType()==1 || LastDealType()==0))
     {
      res=OrderSend(Symbol(),OP_SELL,Lot(),NormalizeDouble(Bid,Digits),
      Slip,NormalizeDouble(Bid+StopLoss*Point,Digits),
      NormalizeDouble(Bid-TakeProfit*Point,Digits),"",Magic ,0,Red);
      return;
     }
//--- buy conditions
   if(BBBlue>0 && (LastDealType()==2 || LastDealType()==0))
     {
      res=OrderSend(Symbol(),OP_BUY,Lot(),NormalizeDouble(Ask,Digits),
      Slip,NormalizeDouble(Ask-StopLoss*Point,Digits),
      NormalizeDouble(Ask+TakeProfit*Point,Digits),"",Magic ,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
//--- get Ind
   double BBBlue=iCustom(Symbol(),0,"BBands_Stop_v1",Length,Deviation,0,1);
   double BBRed=iCustom(Symbol(),0,"BBands_Stop_v1",Length,Deviation,1,1);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=Magic  || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(BBRed>0)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(BBBlue>0)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }  
//+------------------------------------------------------------------+
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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
  {
   int type=0;
   if(OrdersHistoryTotal()==0)
     {
      type=0;
     }
     
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         if(OrderType()==OP_BUY)
           {
            type=1;//buy  
           }
         if(OrderType()==OP_SELL)
           {
            type=2;//sell  
           }
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot;
   if(OrdersHistoryTotal()==0)
     {
      lot=Lots;
     }
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()>0)
        {
         lot=Lots;
        }
      if(OrderProfit()<=0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }  
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountTrades()<1) OpenPos();
   else ClosePos();
  }
//+------------------------------------------------------------------+

avatar

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

  • 14 октября 2015, 14:17
+
0
Большое спасибо. А можно еще реверс сигналов пиркрепить, если не трудно?
avatar

  2  makarchuk2020 Автор Сообщений: 12 - Andrey

  • 14 октября 2015, 17:01
+
0
Что для вас реверс?
avatar

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

  • 14 октября 2015, 17:31
+
0
сигнал на покупку а советник продает
avatar

  2  makarchuk2020 Автор Сообщений: 12 - Andrey

  • 14 октября 2015, 17:38
+
0
а, где архив с модификацией совы?
avatar

  20  Vladven Сообщений: 111

  • 9 декабря 2015, 17:04
+
+1
В MetaEditor нажимаете кнопку «Создать». Выбираете «Советник(шаблон)» -> Далее -> пишите имя ExBB: Experts\ExBB -> Далее -> Далее -> Готово
Убираете весь код, что появился. И заменяете на тот, что выше в комментарии
Нажимаете на кнопку «компилировать».
И все готово.
Редактирован: 9 декабря 2015, 17:42
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 9 декабря 2015, 17:42
+
0
почти так и сделал, спасибо за подробную инструкцию!
avatar

  20  Vladven Сообщений: 111

  • 11 декабря 2015, 20:45
+
0
попробовать-бы эту сову с тралом, т.к в флэте цена не достаёт профит, а в трэнде, далеко уходит за профит, можете прикрутить к сове трал?
avatar

  20  Vladven Сообщений: 111

  • 15 декабря 2015, 16:42
+
0
Оформляйте как заказ.
avatar

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

  • 15 декабря 2015, 17:23
+
0
условие один сигнал- одна сделка, не выполняется(алпари 5-ти знак) на 4-х знаке вроде работает правильно, проверял на разных ТФ, лупит ордера один за одним, на четырёх парах с разными магиками пробывал, может билд старый?
avatar

  20  Vladven Сообщений: 111

  • 10 марта 2016, 17:50
+
0
условие один сигнал- одна сделка, не выполняется(алпари 5-ти знак) на 4-х знаке вроде работает правильно, проверял на разных ТФ, лупит ордера один за одним, на четырёх парах с разными магиками пробывал, может билд старый?


Скидывайте задание в стол заказов посмотрю.
avatar

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

  • 10 марта 2016, 18:31
+
0
да, мне и так знать нравится, надо посмотреть
avatar

  20  Vladven Сообщений: 111

  • 10 марта 2016, 20:24

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