FT_3BB_RSI_Stohastic_MA_1

Orders Execution
It Closes Orders by itself Checks for the total of open ordersIt automatically opens orders when conditions are reached
Indicators Used
Bollinger bands indicatorMoving average indicatorRelative strength indexStochastic oscillator
0 Views
0 Downloads
0 Favorites
FT_3BB_RSI_Stohastic_MA_1
//+------------------------------------------------------------------+
//| FT_3BB_RSI_Stohastic_MA.mq4.mq4
//| Copyright 2012, FORTRADER.RU, ftyuriy: http://forexsystems.ru/member.php?u=4
//| http://fortrader.ru
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, FORTRADER.RU, ftyuriy: http://forexsystems.ru/member.php?u=4"
#property link      "http://fortrader.ru, 72 âûïóñê"

//ïàðàìåòðû äëÿ îïòèìèçàöèè

extern string b="òèï âõîäà";
extern int enter=0; // 0 - ìåæäó æåëòîé è ãîëóáîé, 1 - ìåæäó ãîëóáîé è êðàñíîé

extern string b1="Ïàðàìåòðû BB";
extern int bolinger_per=140;
extern int bolinger_deviation_yellow=2;


 string b2="Äåëèòåëü BB";
 int yellow_blue_enter=2; // ïàðàìåòð äëÿ ïîèñêà ïîëîâèíû ðàññòîÿíèÿ ìåæäó æåëòîé è ñèíåé ëèíèè

extern string r1="Ôèëüòð ïî RSI";
extern int RSIFilter=0; //âêëþ÷àåì ôèëüòð ïî RSI
extern int rsi_period=8;
extern int rsi_ur=70; // àâòîìàòè÷åñêè âû÷èñëÿåòñÿ íèæíèé óðîâåíü 100-80.

extern string r2="Ôèëüòð ïî Stohastic";
extern int StohasticFilter=1; // âêëþ÷àåì ôèëüòð ïî Stohastic-ó
extern int stohastic_period=20;
extern int stohastic_ur=95; // àâòîìàòè÷åñêè âû÷èñëÿåòñÿ íèæíèé óðîâåíü 100-80.

//çàêðûòèå ïî îáðàòíîìó êàñàíèþ
extern string ñx="Çàêðûòèå ìåæäó ëèíèÿìè";
extern int close_type=2; // 0 - çàêðûâàåì ïî ñðåäíåé ëèíèè, 1 - çàêðûòü ìåæäó æåëòîé è ãîëóáîé, 2 - ìåæäó ãîëóáîé è êðàñíîé , 3 - çàêðûâàåì ïî yellow_line, 4 - çàêðûâàåì ïî blue_line, 5 - çàêðûâàåì ïî red_line.

//ñäâèã äëÿ òåñòà ïî òèêàì, äëÿ òèêîâ = 0;
extern string sf="Äëÿ òåñòà ïî òèêàì";
extern int shift=1;

extern string ç2="Ñòàíäàðòíûå ïàðàìåòðû";
extern int      EA_Magic=12354;  
extern double InpLots      =0.1; 
extern int    InpTakeProfit=200;  
extern int    InpStopLoss  =200;  

extern int onebuy=1;

int okbuy,oksell;
int start()
  {

   double STP = InpTakeProfit;
   double TKP = InpStopLoss;
   if(Digits==5 || Digits==3)
     {
      STP = STP*10;
      TKP = TKP*10;
     }  
 int bolinger_deviation_blue=bolinger_deviation_yellow+(bolinger_deviation_yellow/bolinger_deviation_yellow);
 int bolinger_deviation_red=bolinger_deviation_yellow*2;     
  
//---- ïîëó÷èì äàííûå èíäèêàòîðîâ
double bb_yellow_line_up=iBands(NULL,0,bolinger_per,bolinger_deviation_yellow,0,PRICE_CLOSE,MODE_UPPER,shift);
double bb_yellow_line_dw=iBands(NULL,0,bolinger_per,bolinger_deviation_yellow,0,PRICE_CLOSE,MODE_LOWER,shift);

double bb_blue_line_up=iBands(NULL,0,bolinger_per,bolinger_deviation_blue,0,PRICE_CLOSE,MODE_UPPER,shift);
double bb_blue_line_dw=iBands(NULL,0,bolinger_per,bolinger_deviation_blue,0,PRICE_CLOSE,MODE_LOWER,shift);

double bb_red_line_up=iBands(NULL,0,bolinger_per,bolinger_deviation_red,0,PRICE_CLOSE,MODE_UPPER,shift);
double bb_red_line_dw=iBands(NULL,0,bolinger_per,bolinger_deviation_red,0,PRICE_CLOSE,MODE_LOWER,shift);

double ma_line=iMA(NULL,0,bolinger_per,0,MODE_SMA,PRICE_CLOSE,shift+1);

if(RSIFilter) double rsi=iRSI(NULL,0,rsi_period,PRICE_CLOSE,shift);

if(StohasticFilter) double stohastic=iStochastic(NULL,0,stohastic_period,3,3,MODE_SMA,0,MODE_MAIN,shift);



//---- ðàññ÷èòàåì öåíîâîå çíà÷åíèå ïîëîâèíû ðàññòîÿíèÿ ìåæäó æåëòîé è ñèíèìè ëèíèÿìè âõîäà
double enterpriceBuy,enterpriceSell, priceclosebuy,proceclosesell; 

if(enter==0){//âõîä ìåæäó æåëòîé è ãîëóáîé
               enterpriceBuy =  bb_yellow_line_up+((bb_blue_line_up-bb_yellow_line_up)/2);
               enterpriceSell = bb_yellow_line_dw-((bb_yellow_line_dw-bb_blue_line_dw)/2);}

if(enter==1){//âõîä ìåæäó ãîëóáîé è êðàñíîé
               enterpriceBuy =  bb_blue_line_up+((bb_red_line_up-bb_blue_line_up)/2);
               enterpriceSell = bb_blue_line_dw-((bb_blue_line_dw-bb_red_line_dw)/2);}
               
if(enter==2){//âõîä ïî æåëòîé ëèíèè
               enterpriceBuy =  bb_yellow_line_up;
               enterpriceSell = bb_yellow_line_dw;}
                              
if(enter==3){//âõîä ïî ãîëóáîé ëèíèè
               enterpriceBuy =  bb_blue_line_up;
               enterpriceSell = bb_blue_line_up;}
               
if(enter==4){//âõîä ïî ãîëóáîé ëèíèè
               enterpriceBuy =  bb_red_line_up;
               enterpriceSell = bb_red_line_dw;}
               
                              
   //ðàññ÷èòàåì öåíû äëÿ çàêðûòèÿ ìåæäó ëèíèÿìè
   if((close_type==1 && enter==0) || (enter==1 && close_type==2) ){ //óðîâíè çàêðûòèÿ ìåæäó æåëòîé è ñèíåé
   priceclosebuy=enterpriceSell;
   proceclosesell=enterpriceBuy;
   }               
   else{
   priceclosebuy= bb_blue_line_dw-((bb_blue_line_dw-bb_red_line_dw)/2);
   proceclosesell=bb_blue_line_up+((bb_red_line_up-bb_blue_line_up)/2);
   }
            
if(onebuy){

if(Bid>=enterpriceBuy   && !ChPos(1) && RSIFilter==0  && StohasticFilter==0){OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && !ChPos(0) && RSIFilter==0  && StohasticFilter==0){OpenOrderOnMarket(0,TKP,STP);}

if(Bid>=enterpriceBuy   && !ChPos(1) && (RSIFilter==1 && rsi>=rsi_ur) && StohasticFilter==0)       {OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && !ChPos(0) && (RSIFilter==1 && rsi<=(100-rsi_ur) ) && StohasticFilter==0){OpenOrderOnMarket(0,TKP,STP);}

if(Bid>=enterpriceBuy   && !ChPos(1) && RSIFilter==0  && ( StohasticFilter==1 && stohastic>stohastic_ur))      {OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && !ChPos(0) && RSIFilter==0  && ( StohasticFilter==1 && stohastic<(100-stohastic_ur))){OpenOrderOnMarket(0,TKP,STP);}

if(Bid>=enterpriceBuy   && !ChPos(1) && (RSIFilter==1 && rsi>=rsi_ur) && (StohasticFilter==1 && stohastic>stohastic_ur) )              {OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && !ChPos(0) && (RSIFilter==1 && rsi<=(100-rsi_ur)) && (StohasticFilter==1 && stohastic<(100-stohastic_ur) ) ) {OpenOrderOnMarket(0,TKP,STP);}
}
else{

if(Bid>=ma_line){okbuy=0;}
if(Ask<=ma_line){oksell=0;}

if(Bid>=enterpriceBuy   && oksell==0 && RSIFilter==0  && StohasticFilter==0){oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && okbuy==0 && RSIFilter==0  && StohasticFilter==0){okbuy=1;OpenOrderOnMarket(0,TKP,STP);}

if(Bid>=enterpriceBuy   && oksell==0 && (RSIFilter==1 && rsi>=rsi_ur) && StohasticFilter==0)       {oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && okbuy==0 && (RSIFilter==1 && rsi<=(100-rsi_ur) ) && StohasticFilter==0){okbuy=1;OpenOrderOnMarket(0,TKP,STP);}

if(Bid>=enterpriceBuy   && oksell==0 && RSIFilter==0  && ( StohasticFilter==1 && stohastic>stohastic_ur))      {oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && okbuy==0 && RSIFilter==0  && ( StohasticFilter==1 && stohastic<(100-stohastic_ur))){okbuy=1;OpenOrderOnMarket(0,TKP,STP);}

if(Bid>=enterpriceBuy   && oksell==0 && (RSIFilter==1 && rsi>=rsi_ur) && (StohasticFilter==1 && stohastic>stohastic_ur) )              {oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell  && okbuy==0 && (RSIFilter==1 && rsi<=(100-rsi_ur)) && (StohasticFilter==1 && stohastic<(100-stohastic_ur) ) ) {okbuy=1;OpenOrderOnMarket(0,TKP,STP);}

}



//---- ââåäåì òðè óñëîÿ äëÿ çàêðûòèÿ, èëè ïî êðàñíîé èëè ïî æåëòîé èëè ïî ñèíåé ëèíèè

switch(close_type)
  {
   case 0:
      if(Bid>=ma_line){_OrderClose(0);}
      if(Ask<=ma_line){_OrderClose(1);}
      break;
   case 1:
    if(Bid>=proceclosesell){_OrderClose(0);}
    if(Ask<=priceclosebuy){_OrderClose(1);}    
    break;
   case 2:
    if(Bid>=proceclosesell){_OrderClose(0);}
    if(Ask<=priceclosebuy){_OrderClose(1);}  
    break;
   case 3:
    if(Bid>=bb_yellow_line_up){_OrderClose(0);}
    if(Ask<=bb_yellow_line_dw){_OrderClose(1);}  
    break;
   case 4:
    if(Bid>=bb_blue_line_up){_OrderClose(0);}
    if(Ask<=bb_blue_line_dw){_OrderClose(1);}  
    break;
   case 5:
    if(Bid>=bb_red_line_up){_OrderClose(0);}
    if(Ask<=bb_red_line_dw){_OrderClose(1);}  
      break;
   case 6:
    if(RSIFilter==1 && rsi>=rsi_ur)      {_OrderClose(0);}
    if(RSIFilter==1 && rsi<=(100-rsi_ur)){_OrderClose(1);}  
      break;
   case 7:
    if(StohasticFilter==1 && stohastic>stohastic_ur){_OrderClose(0);}
    if(StohasticFilter==1 && stohastic<(100-stohastic_ur)){_OrderClose(1);}  
      break;     
   default:
      break;
  }




//---- ââåäåì äâà óñëîâèÿ äëÿ âêëþ÷åíèÿ ôèëüòðîâ ïî RSI è ñòîõàñòèêó
   
   
   
//----
   return(0);
  }
  
  //Çàêðûâàåì âñå ïîçèöèè ïî òèïó
int CloseAllPos(int type)
{//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=72
int buy=1; int sell=1;
int i,b=0;int ordertiket;
 
 if(type==1)
   {
   while(buy==1)
     {
        buy=0;
        for( i=0;i<OrdersTotal();i++)
         {
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() ){buy=1; OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);}
           }else{buy=0;}
         }  
         if(buy==0){return(0);}
      } 
   }
   
   if(type==0)
   {
      while(sell==1)
     {
        sell=0;
        for( i=0;i<OrdersTotal();i++)
         {
           if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ){sell=1;OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); }
           }else{sell=0;}
         }  
         
        if(sell==0){return(0);}
      } 
     }
   return(0);
   }
  
//Çàêðûâàåò ïîçèöþ ïî òèïó
int _OrderClose(int type)
   {//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99
   
   int err;
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==EA_Magic)
         {
          err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
          if(err<0){Print("OrderClose()-  Îøèáêà çàêðûòèÿ OP_BUY.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
         }
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==EA_Magic)
         {
          err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
          if(err<0){Print("OrderClose()-  Îøèáêà çàêðûòèÿ OP_SELL.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
         }
        }
       }
   return(0);
   }
  
  
 //ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type) 
{//ïîäðîáíîå îïèñàíèå: 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_BUY && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==EA_Magic){col=true;}
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==EA_Magic){col=true;}
       }
    }   
return(col);
}

int OpenOrderOnMarket(int type,int slpips,int tppips)
{double op,sl,tp;int err;
   
   if(type==0)
   {
   op=Ask;if(slpips>0){sl=op-slpips*Point;}if(tppips>0){tp=op+tppips*Point;}
   err=OrderSend(Symbol(),OP_BUY,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"72 FORTRADER.RU",EA_Magic,0,Red);
   if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   
   if(type==1)
   {
    op=Bid;if(slpips>0){sl=op+slpips*Point;}if(tppips>0){tp=op-tppips*Point;}
    err=OrderSend(Symbol(),OP_SELL,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"72 FORTRADER.RU",EA_Magic,0,Red);
    if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
return(0);
}
  
  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---