/* +------------------------------------+ | TRUE_SCALPER | +------------------------------------+ Theory of operation Based on MA3 of Bar[1] being higher or lower than MA7 of Bar[1] AND RSI2 of Bar[2] transitioning to RSI of Bar[1] ProfitMade and StopLosses are optimized per pair TIME FRAME ========== Place on 5 minute chart PAIRS ===== As optimized. It will NOT work well on every pair ENTRY LONG ========== MA3(Bar[1]) is greater than MA7(Bar[1]) by at least 1 pip RSI(2-period Bar[2]) less than RSI_Neg and RSI Bar[1] greater than RSI_Pos2 ENTRY SHORT =========== MA3(Bar[1]) is less than than MA7(Bar[1]) by at least 1 pip RSI(2-period Bar[2]) greater than RSI_Pos and RSI Bar[1] less than RSI_Neg2 EXIT ==== ProfitMade or TP/SL if internet fails or computer crashed MONEY MANAGEMENT ================ -none- RISK MANAGEMENT =============== -none- FAILURE MANAGEMENT ================== Fairly complete, as most failures will be resolved on the next tick. Comments written to log VERSION HISTORY =============== v2a - This is the one used successfully by Jean-François (if you call TP of 9 and SL of 175 a 'success') Ron converted from MT3 to MT4 and released into the wild. Designed for M5 but I attached it to M15 and it worked fine. long if EMA3>EMA7:::EMA3RSI_Pos && RSI2RSI_Neg2) {RSINEG=true;} OrdersPerSymbol=0; for(cnt=OrdersTotal();cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if( OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { OrdersPerSymbol++; } } if((OrdersPerSymbol < NumberOfOrders) && TradeAllowed) { //ENTRY LONG (buy, Ask) if(MAFast>(MASlow+p) && RSINEG) { //Ask(buy, long) SL=Ask-(StopLoss*p); TP=Ask+(TakeProfit*p); OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,TradeComment,MagicNumber,White); gle=GetLastError(); if(gle==0) { Print ("BUY Ask=",Ask," bartick=",bartick); bartick=0; TradeAllowed=false; } else { Print ("BUY -----ERROR----- Ask=",Ask," MAFast=",MAFast," MASlow=",MASlow," RSI=",RSI," gle=",gle," bartick=",bartick); } return(0); } //ENTRY SHORT (sell, Bid) if(MAFast<(MASlow-p) && RSIPOS) { SL=Bid+(StopLoss*p); TP=Bid-(TakeProfit*p); OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,TradeComment,MagicNumber,Red); gle=GetLastError(); if(gle==0) { Print ("SELL Bid=",Bid," bartick=",bartick); bartick=0; TradeAllowed=false; } else { Print ("SELL -----ERROR----- Bid=",Bid," MAFast=",MAFast," MASlow=",MASlow," RSI=",RSI," gle=",gle," bartick=",bartick); } return(0); } } //if // CLOSE order if profit target made for(cnt=0;cnt ProfitMade*p ) { OrderClose(OrderTicket(),Lots,Bid,Slippage,White); gle=GetLastError(); if(gle==0) { Print ("BUYCLOSE Bid=",Bid," bartick=",bartick); bartick=0; } else { Print ("BUY CLOSE -----ERROR----- Bid=",Bid," MAFast=",MAFast," MASlow=",MASlow," RSI=",RSI," gle=",gle," bartick=",bartick); } return(0); } } // if BUY if(OrderType()==OP_SELL) { // did we make our desired SELL profit? if(OrderOpenPrice()-Ask > (ProfitMade*p) ) { OrderClose(OrderTicket(),Lots,Ask,Slippage,Red); if(gle==0) { Print ("SELLCLOSE Ask=",Ask," bartick=",bartick); bartick=0; } else { Print ("SELL CLOSE -----ERROR----- Ask=",Ask," MAFast=",MAFast," MASlow=",MASlow," RSI=",RSI," gle=",gle," bartick=",bartick); } return(0); } } //if SELL } // if(OrderSymbol) } // for } // start()