Советники: Торговая стратегия по RSI и Bollinger Bands

 

Торговая стратегия по RSI и Bollinger Bands:

Хорошая стратегия по RSI и Bollinger Bands.

Author: Юрий

 

с настройками в SET файле ничего не работает, по крайне мере в ДЦ где 5 цифр.

подскажите что поменять надо, а то сильно заинетерсовал уверенный рост синей линии на картинке :)))

 
Bigboom:

с настройками в SET файле ничего не работает, по крайне мере в ДЦ где 5 цифр.

подскажите что поменять надо, а то сильно заинетерсовал уверенный рост синей линии на картинке :)))

Читайте в журнале там написано как настроить советник на 5 знаков. 

 

Зделок мало не густо. Депозитище нужно не огроный чтоб прочувствовать. А так респект вроде работает ) +10

 

ай да молодцы, давно хотел реализовать эту идею на автомате.

 

Подскажите, может кто сталкивался почему при попытке протестить возникает:

: OrderSend()- Ошибка OP_SELL. op -0.10500000 sl -0.05500000 tp -0.24000000 4107

: OrderSend error 4107


 
fortrader.ru писал(а):
Bigboom:

с настройками в SET файле ничего не работает, по крайне мере в ДЦ где 5 цифр.

подскажите что поменять надо, а то сильно заинетерсовал уверенный рост синей линии на картинке :)))

Читайте в журнале там написано как настроить советник на 5 знаков.

5 знаков настроено уже- см. в настройках mn=10 для 5 знаков, как и оптимизированный вариант для евро. Почему нельзя было ответить просто, а не отсылать скачивать длинный пустопорожний журнал? А вот график "чудесной" работы за 2009г. Ох уж энти "боллЕнджоры".


И зачем это нужно?

 

Сет для 4H предназначается. 2009 год:

 

 

вы можете написать советника по моему индикатору?

 
//+------------------------------------------------------------------+
//|                                    FT_BollingerBands+RSI+SAR.mq4 |
//|                            FORTRADER.RU, Юрий, ftyuriy@gmail.com |
//|   http://FORTRADER.RU, торговля по болленджеру, параболику и RSI |
//+------------------------------------------------------------------+
/*Разработано для 51 выпуска журнала FORTRADER.Ru. 
Отчеты: http://finfile.ru/index.php/files/get/ZpUthihnKs/test2100809.rar
Сет файлы: http://finfile.ru/index.php/files/get/0BF1iPGVQJ/eurusd4h.set
Обсуждение: http://fxnow.ru/group_discussion_view.php?group_id=49&grouptopic_id=409&grouppost_id=3439#post_3439
Архив журнала: http://www.fortrader.ru/arhiv.php
51 выпуск: http://www.fortrader.ru/
*/
//1.1 добавлена проверка на существующий ордер по указанной цене
#property copyright "FORTRADER.RU, Юрий, ftyuriy@gmail.com"
#property link      "http://FORTRADER.RU, торговля по болленджеру, параболику и RSI"
double upfractal;
double dwfractal;
int bars;
int start()
  {
  if(Bars!=bars)
  {bars=Bars;
  Pattern();
  SarTrailingStop();
  }
   return(0);
  }
extern int rsiperiod=8;
extern int bbperiod=14;
extern int bbotcl=1;
extern int SL=50;
extern int TP=135;
int err;
extern int MG=564651;
extern double Lots=0.1;
extern int mn=10;
extern int otstup=105;
extern int rsiup=30;
extern int rsidw=70;
int okbuy,oksell;
 int Pattern()
 {
   double op,sl,tp;
   double rsi[101]; 
   double irsi;  
   double fractal;
   ArraySetAsSeries(rsi,true);
   for(int i=100; i>=0; i--)  
   {
   rsi[i]=iRSI(NULL,0,rsiperiod,PRICE_CLOSE,i);
   if(i==1){irsi=rsi[i];}
   }
   
   double bbup=iBandsOnArray(rsi,0,bbperiod,bbotcl,0,MODE_UPPER,1);
   double bblow=iBandsOnArray(rsi,0,bbperiod,bbotcl,0,MODE_LOWER,1); 
   
   fractal=iFractals(NULL, 0, MODE_UPPER, 3);
   if(fractal!=0)  upfractal=iFractals(NULL, 0, MODE_UPPER, 3); 
   fractal=iFractals(NULL, 0, MODE_LOWER, 3);
   if(fractal!=0)  dwfractal=iFractals(NULL, 0, MODE_LOWER, 3); 
   
   op=upfractal+otstup*Point*mn;if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
      
   if(irsi>bbup && Close[1]<upfractal && okbuy==0 && ChOrder(0,op)==0) {
   err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FT_BollingerBands",MG,0,Red);
   if(err<0){Print("OrderSend()-  Ошибка OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   okbuy=1;
   }
   
   if(irsi<rsiup){
   _DeleteOrder(1);
   okbuy=0;
   }
   
   /*Продажи*/
   
   op=dwfractal-otstup*Point*mn;if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
      
   if(irsi<bblow && Close[1]>dwfractal && oksell==0 && ChOrder(1,op)==0) {
   err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FT_BollingerBands",MG,0,Red);
   if(err<0){Print("OrderSend()-  Ошибка OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   oksell=1;
   }
   
   if(irsi>rsidw){
   _DeleteOrder(0);
   oksell=0;
   }
   
 //  Print("bbup "+bbup+" dwfractal "+dwfractal+" upfractal "+upfractal);
  
 
 return(0);
 }
 
  //проверяет есть ли открытые ордера
int ChOrder(int type, double price) 
{//подробное описание: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100
   int i;bool col=false;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
            if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==MG && price==OrderOpenPrice()){col=true;}
              if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==MG && price==OrderOpenPrice()){col=true;}
       }
    }   
return(col);
}
//удаляет отложенные стоп ордера
int _DeleteOrder(int type)
{
   for( int i=1; i<=OrdersTotal(); i++)          
   {
    if(OrderSelect(i-1,SELECT_BY_POS)==true) 
    {                                       
     if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG)
     {
      OrderDelete(OrderTicket()); 
     }//if
  
    if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG)
     {
      OrderDelete(OrderTicket()); 
     }//if
    }//if
   }
   return(0);
}
//Трейдинг стоп по параболику
extern double SARstep=0.003;
extern double SARmax=0.2;
extern int SarTrailingStop=1;
extern int TrailingStep=5;
int  SarTrailingStop()
{int i;bool err;
double sar=iSAR(NULL,0,SARstep,SARmax,1);
   for( i=1; i<=OrdersTotal(); i++)        
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true)
       {  
        if(SarTrailingStop>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MG)  
        {                
         if(sar>OrderStopLoss())
          {
           if((sar-OrderStopLoss())>=TrailingStep*Point*mn && (Ask-sar)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
           {
            Print("ТРЕЙЛИМ");
            err=OrderModify(OrderTicket(),OrderOpenPrice(),sar,OrderTakeProfit(),0,Green);
            if(err==false){return(-1);}
           }//if(Bid>=OrderStopLoss()
          }//if(Bid-OrderOpenPrice()
         }//if(BBUSize>0
        }//if(OrderSelect(i
           
       if(OrderSelect(i-1,SELECT_BY_POS)==true)
       {
        if(SarTrailingStop>0 && OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MG)  
        {        
         if(OrderStopLoss()>sar)
          {
           if((OrderStopLoss()-sar)>TrailingStep*Point*mn && (sar-Ask)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
           {
            Print("ТРЕЙЛИМ");
            err=OrderModify(OrderTicket(),OrderOpenPrice(),sar,OrderTakeProfit(),0,Green);
            if(err==false){return(-1);}
           }//if(Ask<=OrderStopLoss()
          }//if(OrderOpenPrice()
         }//if(BBUSize>0 
       }// if(OrderSelect
    }// for( i=1;
return(0);
}
Версия с проверкой на существующие ордера, помогает избежать дублирование ордера при перезагрузке советника.