7 Bar Extension Fade.01

Author: Copyright � 2007, fxid10t@yahoo.com
Price Data Components
Series array that contains close prices for each barSeries array that contains the lowest prices of each barSeries array that contains the highest prices of each barSeries array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
0 Views
0 Downloads
0 Favorites
7 Bar Extension Fade.01
//+------------------------------------------------------------------+
//| 7 Bar Extension Fade.mq4
//| Copyright © 2007, fxid10t@yahoo.com
//| http://www.fxstreet.com/education/
//+------------------------------------------------------------------+

/*Trading Strategy...
Seven Bar Extension Fade – Statistical Significance

Trading Rules

• Look for 7 consecutive bars of weakness (where each bar’s
  close is below the prior)
• Buy at the open of the next bar
• Place stop at the low of the seventh bar minus 10 pips
• First target is amount risked, move stop on remaining half to
  breakeven
• Second target is three times the amount risked

**Reverse for Short  */

#property copyright "Copyright © 2007, fxid10t@yahoo.com"
#property link      "http://www.fxstreet.com/education/"
#include <stdlib.mqh>

extern double Lots=0.1;
extern int    TradingPeriod=60;

string pairs[] = { "EURUSDm","USDJPYm","GBPUSDm","USDCHFm","EURCHFm","AUDUSDm","USDCADm",
                   "NZDUSDm","EURGBPm","EURJPYm","GBPJPYm","CHFJPYm","GBPCHFm","EURAUDm",
                   "EURCADm","AUDCADm","AUDJPYm","NZDJPYm","AUDNZDm" };
int periods[] = { 1,5,15,30,60,240,1440,10080,43200 };

string TradeSymbol, CommentHeader, CommentsPairs[];
int      TradePeriod;
int      Pair = -1;
int      PPeriod = -1;
int      b1,b2,s1,s2;
double   bid,ask,point,bSL1,bSL2,sSL1,sSL2,btp1,btp2,stp1,stp2;

int init(){
   if ( IsTesting() ) { if ( ArrayResize(pairs,1) != 0 )  pairs[0] = Symbol();   } 
   if ( IsTesting() ) { if ( ArrayResize(periods,1) != 0 )  periods[0] = Period(); }

return(0);  }

int deinit(){return(0);}

int start(){
//Select Pair from Array
Pair = (Pair+1) % ArraySize(pairs);
TradeSymbol = pairs[Pair];

//Assign Symbol Bid/Ask & point values
bid=MarketInfo(TradeSymbol,MODE_BID);
ask=MarketInfo(TradeSymbol,MODE_ASK);   
point=MarketInfo(TradeSymbol,MODE_POINT);

//Pair Chart Period Setup check loop
for(int p=0;p<9;p++) {
      PPeriod = (PPeriod+1) % ArraySize(periods);
      TradePeriod = periods[PPeriod];


   int cnt, ticket,total=OrdersTotal();
   if(TotalTradesThisSymbol(TradeSymbol)==0) {  b1=0;b2=0;s1=0;s2=0;   }
   if(TotalTradesThisSymbol(TradeSymbol)>0)  {
      for(cnt=0;cnt<total;cnt++) {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==TradeSymbol) {
         if(OrderMagicNumber()==21)  {b1=OrderTicket(); }
         if(OrderMagicNumber()==41)  {b2=OrderTicket(); }
         if(OrderMagicNumber()==11)  {s1=OrderTicket(); }
         if(OrderMagicNumber()==31)  {s2=OrderTicket(); }   }  }  }


//buy setup   
   if(   iClose(TradeSymbol,TradePeriod,1)<iClose(TradeSymbol,TradePeriod,2) &&
         iClose(TradeSymbol,TradePeriod,2)<iClose(TradeSymbol,TradePeriod,3) &&
         iClose(TradeSymbol,TradePeriod,3)<iClose(TradeSymbol,TradePeriod,4) &&
         iClose(TradeSymbol,TradePeriod,4)<iClose(TradeSymbol,TradePeriod,5) &&
         iClose(TradeSymbol,TradePeriod,5)<iClose(TradeSymbol,TradePeriod,6) &&
         iClose(TradeSymbol,TradePeriod,6)<iClose(TradeSymbol,TradePeriod,7) )  {
//buy execution        
      if(b1==0)   {
         bSL1=iLow(TradeSymbol,TradePeriod,1)-(ask-bid)-(10*point);  
         btp1=ask+(ask-(iLow(TradeSymbol,TradePeriod,1)-(ask-bid)-(10*point)));
         ticket=OrderSend(TradeSymbol,
                          OP_BUY,
                          Lots,
                          ask,
                          0,//slippage
                          bSL1,
                          btp1,
                          TradeSymbol+" "+TradePeriod+" 7 BEF 1st Long",
                          21,
                          0,//timedelete(),
                          Aqua);
                          if(ticket>0)   {
                              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                                    {  b1=ticket;  Print(ticket); }
                                 else Print("Error Opening BuyStop Order: ",GetLastError());
                                 return(0);  }  }
      if(b2==0)   {
         bSL2=iLow(TradeSymbol,TradePeriod,1)-(ask-bid)-(10*point);
         btp2=ask + NormalizeDouble( ((ask-(iLow(TradeSymbol,TradePeriod,1)-(ask-bid)-(10*point))*3)) , Digits);
         ticket=OrderSend(TradeSymbol,
                          OP_BUY,
                          Lots,
                          ask,
                          0,//slippage
                          bSL2,
                          btp2,
                          TradeSymbol+" "+TradePeriod+" 7 BEF 2nd Long",
                          41,
                          0,//timedelete(),
                          Aqua);
                          if(ticket>0)   {
                              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                                    {   b2=ticket; Print(ticket); }
                                 else Print("Error Opening BuyStop Order: ",GetLastError());
                                 return(0);  }  }  }
//Sell Setup
   if(   iClose(TradeSymbol,TradePeriod,1)>iClose(TradeSymbol,TradePeriod,2) &&
         iClose(TradeSymbol,TradePeriod,2)>iClose(TradeSymbol,TradePeriod,3) &&
         iClose(TradeSymbol,TradePeriod,3)>iClose(TradeSymbol,TradePeriod,4) &&
         iClose(TradeSymbol,TradePeriod,4)>iClose(TradeSymbol,TradePeriod,5) &&
         iClose(TradeSymbol,TradePeriod,5)>iClose(TradeSymbol,TradePeriod,6) &&
         iClose(TradeSymbol,TradePeriod,6)>iClose(TradeSymbol,TradePeriod,7) )  {
//Sell Execution
      if(s1==0)   {
         sSL1=iHigh(TradeSymbol,TradePeriod,1)+(ask-bid)+(10*point);
         stp1=bid-(iHigh(TradeSymbol,TradePeriod,1)+(ask-bid)+(10*point)-bid);
         ticket=OrderSend(TradeSymbol,
                          OP_SELL,
                          Lots,
                          bid,
                          0,
                          sSL1,
                          stp1,
                          TradeSymbol+" "+TradePeriod+" 7 BEF 1st Short",
                          11,
                          0,//timedelete(),
                          HotPink);
                          if(ticket>0)   {
                             if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                                {  s1=ticket;  Print(ticket); }
                                   else Print("Error Opening SellStop Order: ",GetLastError());
                                   return(0);  }  }
      if(s2==0)   {
         sSL2=iHigh(TradeSymbol,TradePeriod,1)+(ask-bid)+(10*point);
         stp2=bid-NormalizeDouble( (iHigh(TradeSymbol,TradePeriod,1)+(ask-bid)+(10*point)-bid)*3,Digits);
         ticket=OrderSend(TradeSymbol,
                          OP_SELL,
                          Lots,
                          bid,
                          0,
                          sSL2,
                          stp2,
                          TradeSymbol+" "+TradePeriod+" 7 BEF 2nd Short",
                          31,
                          0,//timedelete(),
                          HotPink);
                          if(ticket>0)   {
                              if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                                    {  s2=ticket;  Print(ticket); }
                                 else Print("Error Opening SellStop Order: ",GetLastError());
                                 return(0);  }  }  }

//Order Modify
   if(OrderSelect(b1,SELECT_BY_TICKET)==false)   {   
      if(OrderSelect(b2,SELECT_BY_TICKET)==true)   {
         double SL=OrderOpenPrice()+(1*point);
         OrderModify(b2,OrderOpenPrice(),OrderOpenPrice()+(1*point),OrderTakeProfit(),0,Blue); }   }
   
   if(OrderSelect(s1,SELECT_BY_TICKET)==false)   {   
      if(OrderSelect(s2,SELECT_BY_TICKET)==true)   {
      SL=OrderOpenPrice()-(1*point);
      OrderModify(s2,OrderOpenPrice(),OrderOpenPrice()-(1*point),OrderTakeProfit(),0,Red); } }
//end
//Print(TradeSymbol+", "+"Period "+TradePeriod);
Print(TradeSymbol," ",MarketInfo(TradeSymbol,13)," Last Tick: ",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS));
  }
return(0);}
//+------------------------------------------------------------------+
int TotalTradesThisSymbol(string TradeSymbol) {
   int i, TradesThisSymbol=0;
   for(i=0;i<OrdersTotal();i++)  {
      OrderSelect(i,SELECT_BY_POS);
      if(OrderSymbol()==TradeSymbol &&
        (OrderComment()==TradeSymbol+" "+TradePeriod+" 7 BEF 1st Long" ||
         OrderComment()==TradeSymbol+" "+TradePeriod+" 7 BEF 2nd Long" || 
         OrderComment()==TradeSymbol+" "+TradePeriod+" 7 BEF 1st Short" || 
         OrderComment()==TradeSymbol+" "+TradePeriod+" 7 BEF 2nd Short"))   {  TradesThisSymbol++;  }   }
return(TradesThisSymbol);  }//end TotalTradesThisSymbol

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