//+------------------------------------------------------------------+ //| 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 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;cnt0) { 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