/*-----------------------------+ | | | Shared by www.Aptrafx.com | | | +------------------------------*/ //+------------------------------------+ //| TRUE_SCALPER | //+------------------------------------+ // Designed for 5 but I attached it to 15 and it worked fine. // long if EMA3>EMA7:::EMA3<EMA7<0 // Code Adapted from Scalper EAs to use EMA and RSI and multiple currencies // variables declared here are GLOBAL in scope #property copyright "Jacob Yego" #property link "http://www.PointForex.com/" // generic user input extern double Lots=1.0; extern int MyPeriod=14; extern int TakeProfit=100; extern int StopLoss=0; extern int TrailingStop=5; extern int Slippage=2; extern int BuyLevel=0; extern int SellLevel=0; //Bar movement, must be 0 to cause 1st movement datetime newbar=0; //+------------------------------------+ //| Custom init (usually empty on EAs) | //|------------------------------------| // Called ONCE when EA is added to chart int init() { return(0); } //+------------------------------------+ //| Custom deinit(usually empty on EAs)| //+------------------------------------+ // Called ONCE when EA is removed from chart int deinit() { return(0); } //+------------------------------------+ //| EA main code | //+------------------------------------+ // Called EACH TICK and possibly every Minute // in the case that there have been no ticks int start() { double p=Point(); int cnt=0; double slA, tpA, slB, tpB; bool found=false; bool rising=false; bool falling=false; bool cross=false; double bull=0; double bear=0; double RSIPOS=0; double RSINEG=0; double lobar=0; double highbar=0; // Error checking if(AccountFreeMargin()<(1000*Lots)) {Print("-----NO MONEY"); return(0);} if(Bars<100) {Print("-----NO BARS "); return(0);} if (TakeProfit<10) {Print("TakeProfit<10"); return(0);} if (newbar == Time[0]) { return(0);} newbar=Time[0]; // One trade per Symbol for(cnt=OrdersTotal();cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if( OrderSymbol()==Symbol() ) { return(0); } } // calculate TakeProfit and StopLoss for //(B)id (sell, short) and (A)sk(buy, long) slA=Ask-(p*StopLoss); tpA=Ask+(p*TakeProfit); slB=Bid+(p*StopLoss); tpB=Bid-(p*TakeProfit); if (TakeProfit<=0) {tpA=0; tpB=0;} if (StopLoss<=0) {slA=0; slB=0;} bull=iMA(3,MODE_EMA,1); bear=iMA(7,MODE_EMA,1); RSIPOS=iRSI(2,2)>50; RSINEG=iRSI(2,2)<50; vars: sl(0),tp(0); vars: cnt(0); vars: OpenTrades(0); vars: i(0); Define: ProfitMade(2); OpenTrades = 0; lobar=LOW[Lowest(MODE_LOW,19,19)]; highbar=HIGH[Highest(MODE_HIGH,19,19)]; For i = 1 to TotalTrades { if OrderValue(i,VAL_SYMBOL) = Symbol then OpenTrades++; }; If OpenTrades<1 then { If bull>bear and RSINEG then { sl= lobar-1*Point; //(ask-(StopLoss*point)); tp=(bid+(TakeProfit*point)); SetOrder(OP_BUY,Lots,ask,slippage,sl,tp,blue); exit; }; If bull<bear and RSIPOS then { sl=highbar+1*point;//(bid+(StopLoss*point)); tp=(ask-(TakeProfit*point)); SetOrder(OP_SELL,Lots,bid,slippage,sl,tp,red); exit; }; }; If OpenTrades<1 then { if bull >bear and RSINEG then { sl=lobar-1*point; //(ask-(StopLoss*point)); tp=(bid+(TakeProfit*point)); SetOrder(OP_BUY,Lots,ask,slippage,sl,tp,blue); exit; }; if bull < bear and RSIPOS then { sl= highbar+1*point;//(bid+(StopLoss*point)); tp=(ask-(TakeProfit*point)); SetOrder(OP_SELL,Lots,bid,slippage,sl,tp,red); exit; }; }; for cnt=1 to TotalTrades { If Ord(cnt,VAL_TYPE)=OP_BUY and Ord(cnt,VAL_SYMBOL)=Symbol then { If (Bid-Ord(cnt,VAL_OPENPRICE))>(ProfitMade*Point) then { CloseOrder(OrderValue(cnt,VAL_TICKET),Ord(cnt,VAL_LOTS),Ord(cnt,VAL_CLOSEPRICE),0,BlueViolet); Exit; }; }; If Ord(cnt,VAL_TYPE)=OP_SELL and Ord(cnt,VAL_SYMBOL)=Symbol then { If (Ord(cnt,VAL_OPENPRICE)-Ask)>(ProfitMade*Point) then { CloseOrder(OrderValue(cnt,VAL_TICKET),Ord(cnt,VAL_LOTS),Ord(cnt,VAL_CLOSEPRICE),0,Purple); Exit; }; }; }; /////Direction Change for cnt=1 to TotalTrades { If Ord(cnt,VAL_TYPE)=OP_BUY and Ord(cnt,VAL_SYMBOL)=Symbol then { If bull < bear then { CloseOrder(OrderValue(cnt,VAL_TICKET),Ord(cnt,VAL_LOTS),Ord(cnt,VAL_CLOSEPRICE),0,BlueViolet); Exit; }; }; If Ord(cnt,VAL_TYPE)=OP_SELL and Ord(cnt,VAL_SYMBOL)=Symbol then { If bull < bear then { CloseOrder(OrderValue(cnt,VAL_TICKET),Ord(cnt,VAL_LOTS),Ord(cnt,VAL_CLOSEPRICE),0,Purple); Exit; }; }; }; // ---> HERE is where you determine when to BUY //if (i1>BuyLevel) // { // OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slA,tpA,"ZMRLQVYX",11123,0,White); // } // ---> HERE is where you determine when to SELL //if (i2<SellLevel) // { // OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,slB,tpB,"ZMRLQVYX",11321,0,Red); // } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Moving average indicator
Relative strength index
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
Other Features: