FT_FOZZI_RSIuMA4BB

Author: Copyright � 2009, FORTRADER.RU. �������� �� ��������� FOZZI.
Orders Execution
It Closes Orders by itself It automatically opens orders when conditions are reachedChecks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Relative strength indexMoving average indicator
0 Views
0 Downloads
0 Favorites
FT_FOZZI_RSIuMA4BB
//+------------------------------------------------------------------+
//| FT_FOZZI_RSI+MA+BB.mq4.mq4
//| Copyright © 2009, FORTRADER.RU. Ñîâåòíèê ïî ñòðàòåãèè FOZZI.
//| http://www.fortrader.ru | http://forexsystems.ru/sistemy-ozhidayuschie-realizacii/10910-foezzi.html | Èññëåäîâàíèå äëÿ 55 âûïóñêà æóðíàëà FORTRADER.RU
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, FORTRADER.RU. Ñîâåòíèê ïî ñòðàòåãèè FOZZI."
#property link      "http://www.fortrader.ru | http://forexsystems.ru/sistemy-ozhidayuschie-realizacii/10910-foezzi.html | Èññëåäîâàíèå äëÿ 55 âûïóñêà æóðíàëà FORTRADER.RU"

extern int maper=8;

extern int rsiperiod=8;
extern int bbperiod=20;
extern int bbotcl=2;

extern int SL        =5;
extern int TP        =0;

extern int MG=564651;
extern double Lots=0.1;
extern int mn=1;

extern int bbur=45;

extern int trailingenable=1;


int f1,f2;
double opb,ops;
int start()
  {int i; double op,sl,tp;int err1;
  
  if(trailingenable==1){TrailingStop();}
  
   double rsi[101]; 
   double irsi;  
   ArraySetAsSeries(rsi,true);
   for( i=100; i>=0; i--)  
   {
   rsi[i]=iRSI(NULL,0,rsiperiod,PRICE_CLOSE,i);
   if(i==1){irsi=rsi[i];}
   }
   
   double ma[101]; 
   double ima;  
   ArraySetAsSeries(ma,true);
   for( i=100; i>=0; i--)  
   {
   ma[i]=iMAOnArray(rsi,0,maper,0,MODE_SMA,i);
   if(i==1){ima=ma[i];}
   }
   
   double bbmain =iBandsOnArray(ma,0,bbperiod,bbotcl,0,MODE_MAIN,1);
   double pma    =iMAOnArray(rsi,0,maper,0,MODE_SMA,1);
   double prsi   =iRSI(NULL,0,rsiperiod,PRICE_CLOSE,1);
   
   if(prsi>pma){f1=1;}
   if(f1==1 && prsi<pma && pma>bbmain && ChPos(0)==0)
   {f1=0;
   _OrderClose(1);
    op=Bid;if(SL>0){sl=MaximumMinimum(1,SL);}if(TP>0){tp=Bid-TP*Point*mn;}
    opb=op;
    err1=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"8 FORTRADER.RU",MG,0,Red);
    if(err1<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   if(Bid<(opb-bbur*Point*mn)){_StopToBB(0);}
   
   if(prsi<pma){f2=1;}
   if(f2==1 && prsi>pma && pma<bbmain && ChPos(1)==0)
   {f2=0;
   _OrderClose(0);
      op=Ask;if(SL>0){sl=MaximumMinimum(0,SL);}if(TP>0){tp=Ask+TP*Point*mn;}
      ops=op;
      err1=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"8 FORTRADER.RU",MG,0,Red);
      if(err1<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   if(Ask>(ops+bbur*Point*mn)){_StopToBB(1);}

   Print("bbmain "+bbmain+" pma "+pma+" prsi "+prsi);

   return(0);
  }
  
double _StopToBB(int type)
{
 int err;
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG && OrderStopLoss()<OrderOpenPrice())
         {
          err=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
          if(err<0){Print("_StopToBB()-  Îøèáêà OrderModify.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
         }
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG && OrderStopLoss()>OrderOpenPrice())
         {
          err=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
          if(err<0){Print("_StopToBB()-  Îøèáêà OrderModify.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
         }
        }
     }

return(0);
}

 //ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type) 
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100

   int i;int col;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==MG){col=1;}
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==MG){col=1;}
       }
    }   
return(col);
}
  
double MaximumMinimum(int type,int barsearch)
{ int x=0,stop=0;double minmax;
 
  if(type==0)
   {
   while(stop==0)
    {
    minmax =Low[iLowest(NULL,0,MODE_LOW,barsearch,x)];
    if(minmax>Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)])
     {
      minmax =Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)];
      x=x+barsearch;
     }
     else {stop=1;return(minmax);}
    }//while(stop
   }//if(type
   
   if(type==1)
   {
   while(stop==0)
    {
    minmax =High[iHighest(NULL,0,MODE_HIGH,barsearch,x)];
    if(minmax<High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)])
      {
       minmax =High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)];
       x=x+barsearch;
       }
       else{stop=1;return(minmax);}
     }// while(sto
   }//if(type
return(0);  
}        


extern int TrailingStop=25;
extern int TrailingStep=5;

int  TrailingStop()
{int i;bool err;

   for( i=1; i<=OrdersTotal(); i++)        
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true)
       {  
        if(TrailingStop>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol())  
        {                
         if(Bid-OrderOpenPrice()>=TrailingStop*Point*mn && TrailingStop>0 && (Bid-Point*TrailingStop*mn)>OrderStopLoss())
          {
           if(((Bid-Point*TrailingStop*mn)-OrderStopLoss())>=TrailingStep*Point*mn)
           {
            Print("ÒÐÅÉËÈÌ");
            err=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop*mn,OrderTakeProfit(),0,Green);
            if(err==false){return(-1);}
            GlobalVariableSet(DoubleToStr(OrderTicket(),0),Bid);
           }//if(Bid>=OrderStopLoss()
          }//if(Bid-OrderOpenPrice()
         }//if(BBUSize>0
        }//if(OrderSelect(i
           
       if(OrderSelect(i-1,SELECT_BY_POS)==true)
       {
        if(OrderType()==OP_SELL && OrderSymbol()==Symbol() )  
        {        
         if(OrderOpenPrice()-Ask>=TrailingStop*Point*mn && TrailingStop>0 && OrderStopLoss()>(Ask+TrailingStop*Point*mn))
          {
           if((OrderStopLoss()-(Ask+TrailingStop*Point*mn))>TrailingStep*Point*mn)
           {
            Print("ÒÐÅÉËÈÌ");
            err=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point*mn,OrderTakeProfit(),0,Green);
            if(err==false){return(-1);}
           }//if(Ask<=OrderStopLoss()
          }//if(OrderOpenPrice()
         }//if(BBUSize>0 
       }// if(OrderSelect
    }// for( i=1;
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==1 && OrderMagicNumber()==MG)
         {
          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==0 && OrderMagicNumber()==MG)
         {
          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);
   }

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 ---