//+------------------------------------+ //| TRUE_SCALPER | //+------------------------------------+ // // This is the one used successfully by Jean-François // // Designed for M5 but I attached it to M15 and it worked fine. // long if EMA3>EMA7:::EMA30) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } if(lot<0.1) lot=0.1; return(lot); } void PrintComments() { Comment("Current Time: ",Hour(),":",Minute(),"\n",); } // Bar handling datetime bartime=0; int bartick=0; double CalcSlBuy() { return (MathMin((Low[Lowest(NULL,0,MODE_LOW,13,0)]-Spread),(Bid-(StopLoss*Point)))); } double CalcSlSell() { return (MathMin((High[Highest(NULL,0,MODE_HIGH,13,0)]+Spread),(Ask+(StopLoss*Point)))); } double CalcTpBuy() { return (MathMax((High[Highest(NULL,0,MODE_HIGH,13,0)]),(Ask+(TakeProfit*Point)))); } double CalcTpSell() { return (MathMax((Low[Lowest(NULL,0,MODE_LOW,13,0)]),(Bid-(TakeProfit*Point)))); } //+------------------------------------+ //| EA load code | //+------------------------------------+ int init() { // set up the symbol optimizations if (Symbol()=="GBPUSD") {TakeProfit=44; StopLoss=90; abandon=101;} if (Symbol()=="AUDUSD") {TakeProfit= 60; StopLoss= 23; abandon=103;} if (Symbol()=="EURAUD") {TakeProfit= 95; StopLoss=141; abandon=33;} if (Symbol()=="EURCHF") {TakeProfit= 81; StopLoss= 77; abandon=97;} if (Symbol()=="EURGBP") {TakeProfit= 11; StopLoss= 77; abandon=108;} if (Symbol()=="EURJPY") {TakeProfit= 38; StopLoss= 75; abandon=183;} if (Symbol()=="EURUSD") {TakeProfit=196; StopLoss= 22; abandon=103;} if (Symbol()=="GBPCHF") {TakeProfit= 79; StopLoss= 98; abandon=113;} if (Symbol()=="GBPJPY") {TakeProfit= 13; StopLoss= 98; abandon=117;} if (Symbol()=="GBPUSD") {TakeProfit= 55; StopLoss=100; abandon=69;} if (Symbol()=="USDCAD") {TakeProfit= 66; StopLoss= 76; abandon=106;} if (Symbol()=="USDCHF") {TakeProfit=117; StopLoss= 78; abandon=111;} if (Symbol()=="USDJPY") {TakeProfit= 53; StopLoss= 74; abandon=110;} } //+------------------------------------+ //| EA unload code | //+------------------------------------+ int deinit() { } //+------------------------------------+ //| EA main code | //+------------------------------------+ int start() { double p=Point(); int cnt=0; int OrdersPerSymbol=0; double bullMA3=0; double bearMA7=0; double RSI=0; bool RSIPOS=0; bool RSINEG=0; double TP; double SL; // Error checking & bar counting if(AccountFreeMargin()<(200*Lots)) {Print("-----NO MONEY"); return(0);} if(Bars<100) {Print("-----NO BARS "); return(0);} if(bartime!=Time[0]) {bartime=Time[0]; bartick++; } // 3-period moving average on Bar[1] bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1); // 7-period moving average on Bar[1] bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1); // 2-period moving average on Bar[2] RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2); // Determine what polarity RSI is in if(RSI>RSIPos) {RSIPOS=true; RSINEG=false;} if(RSI=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if( OrderSymbol()==Symbol() ) { OrdersPerSymbol++; } } // place new order based on direction // only if no other orders are open on this Symbol if(OrdersPerSymbol==0) { //ENTRY Ask(buy, long) if(bullMA3>(bearMA7+p) && RSINEG) { SL=CalcSlBuy();//Ask-(StopLoss*p); TP=CalcTpBuy();//Ask+(TakeProfit*p); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slippage,SL,TP,"TS v11-1.1",0,0,White); bartick=0; } //ENTRY Bid (sell, short) if(bullMA3<(bearMA7-p) && RSIPOS) { SL=CalcSlSell();//Bid+(StopLoss*p); TP=CalcTpSell();//Bid-(TakeProfit*p); OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slippage,SL,TP,"TS v11-1.1",0,0,Red); bartick=0; } } //if // have we run out of ticks for average time-to-profit? if(OrdersPerSymbol==1 && bartick==abandon) { if(OrderType()==OP_BUY) { // close losing BUY order to avoid more loss OrderClose(OrderTicket(),Lots,Bid,Slippage,White); // setup and trade new order SL=CalcSlBuy();//Bid+(StopLoss*p); TP=CalcTpBuy();//Bid-(TakeProfit*p); OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slippage,SL,TP,"TS v11-1.1",0,0,Red); // bump bartick to prevent multiple buys bartick++; } // if BUY if(OrderType()==OP_SELL) { // close losing SELL order to avoid more loss OrderClose(OrderTicket(),Lots,Ask,Slippage,Red); // setup and trade new order SL=CalcSlSell();//Ask-(StopLoss*p); TP=CalcTpSell();//Ask+(TakeProfit*p); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slippage,SL,TP,"TS v11-1.1",0,0,White); // bump bartick to prevent multiple buys bartick++; } //if SELL } //if OrdersPerSymbol for(cnt=0;cnt (ScalpProfit*Point) ) { OrderClose(OrderTicket(),Lots,Bid,0,White); return(0); } // if profit made } // if magic } // if Buy if(OrderType()==OP_SELL) { if (OrderMagicNumber()==0) { if( OrderOpenPrice()-Ask > (ScalpProfit*Point) ) { OrderClose(OrderTicket(),Lots,Ask,0,Red); return(0); } // if profit made } // if magic } //if Sell } // if Symbol } // for double btsl,stsl;int i; for(i = 0; i < OrdersTotal(); i++ ) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber()==0 && OrderSymbol()==Symbol()) { btsl=(Low[Lowest(NULL,0,MODE_LOW,10,0)]-Spread); stsl=(High[Highest(NULL,0,MODE_HIGH,10,0)]+Spread); if(OrderType()==OP_BUY && Bid>OrderOpenPrice() && btsl>OrderStopLoss()) { OrderModify(OrderTicket(), OrderOpenPrice(), btsl, OrderTakeProfit(), 0, LimeGreen); return(0); } if(OrderType()==OP_SELL && Ask