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

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

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

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

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

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

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

  • 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 Сообщений: 16537 - Андрей

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

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

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

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

  • 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 Сообщений: 16537 - Андрей

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

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

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


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

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

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

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

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

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