//+------------------------------------------------------------------+ //| Helen_Iv_Line_Experts_RSI_MA.mq4 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Helen_Iv" #property link "http://helenclubfinance.com" //---- input parameters extern double Lots=0.1; extern int p=23; extern int ma2=9; extern int ma3=19; extern int TakeProfit = 1000; int BuyTicket,SellTicket; int StLevel2; double slts,tpts; datetime prevtimecalc=0; int OpenBuy=0, OpenSell=0, CloseBuy=0, CloseSell=0; int Spread; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { double DeltaTakeStopMin, DeltaFreezeLevel; Spread = MarketInfo (Symbol(), MODE_SPREAD); return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { CalcCloseOpen(); int total=OrdersTotal(); int NP=0; for(int x=total; x>=0; x--) { if (!OrderSelect(x, SELECT_BY_POS, MODE_TRADES))continue; // Çàêðûòèå îòêðûòûõ ïîçèöèé if (OrderType()==OP_BUY && CloseBuy==1){Close_Order(); continue;} if (OrderType()==OP_SELL && CloseSell==1) {Close_Order(); continue;} // èñêëþ÷àåì îòêðûòèå íåñêîëüêèõ îðäåðîâ íà ñèãíàëå îäíîì áàðà if (OrderType()==OP_BUY && OrderOpenPrice()>=Time[0]) NP++; if (OrderType()==OP_SELL && OrderOpenPrice()>=Time[0]) NP++; } // åñëè åùå åñòü ñèãíàë íà îòêðûòèå, òî áóäåì îòêðûâàòüñÿ if (NP == 0) Open_Buy_Sell (); return(0); } //+------------------------------------------------------------------+ // âû÷èñëèì óñëîâèÿ íà çàêðûòèå è îòêðûòèå ïîçèöèé //+------------------------------------------------------------------+ void CalcCloseOpen() { //Comment("000Buy - ", OpenBuy, " 000Sell - ", OpenSell); if (prevtimecalc==Time[0])return; else prevtimecalc=Time[0]; OpenBuy=0; OpenSell=0; CloseBuy=0; CloseSell=0; double t1=iRSI(NULL,0,p,PRICE_CLOSE,1); double t11=iRSI(NULL,0,p,PRICE_CLOSE,2); double t2=iMA(NULL,PERIOD_D1,ma2,0,MODE_EMA,0,1); double t3=iMA(NULL,PERIOD_D1,ma3,0,MODE_EMA,0,1); if (t1>30.0&&t11<30.0&&t1>t11&&t1>30.0&&t2>t3) {OpenBuy=1;} if (t1<70.0&&t11>70.0&&t1<t11&&t1<70.0) {CloseBuy=1;} if (t1<70.0&&t11>70.0&&t1<t11&&t1<70.0&&t2<t3) {OpenSell=1;} if (t1>30.0&&t11<30.0&&t1>t11&&t1>30.0) {CloseSell=1;} //Comment("Buy - ", OpenBuy, " Sell - ", OpenSell); return; } //+------------------------------------------------------------------ //| Çàêðûòèå ïîçèöèé //+------------------------------------------------------------------ void Close_Order () { if(OrderType()==OP_BUY) { //Îáåñïå÷èâàåì ïàóçó ìåæäó îïåðàöèÿìè //Pause(); OrderClose(OrderTicket(),OrderLots(),Bid,Spread,Yellow); //TradeIsNotBusy(); } if(OrderType()==OP_SELL) { //Îáåñïå÷èâàåì ïàóçó ìåæäó îïåðàöèÿìè //Pause(); OrderClose(OrderTicket(),OrderLots(),Ask,Spread,Yellow); //TradeIsNotBusy(); } } //+------------------------------------------------------------------ //| Îòêðûòèå ïîçèöèé ðûíî÷íûìè îðäåðàìè //+------------------------------------------------------------------ void Open_Buy_Sell () { // BUY // Open=Ask, Take =Open+Profit, Stop = Open-Spred-stop if(OpenBuy !=0) { // îáíîâëÿåì ðûíî÷íóþ èíôîðìàöèþ if (!IsTesting() && !IsOptimization( )) RefreshRates(); OrderSend(Symbol(),OP_BUY,Lots,Ask,Spread,0,Ask + TakeProfit*Point,0,0,0,Blue); if(GetLastError()==0){OpenBuy=0; return;} } // SELL // Open = Bid, Take =Open-Profit, Stop=Open+Spred+Stop if( OpenSell !=0) { if (!IsTesting() && !IsOptimization( )) {RefreshRates();} OrderSend(Symbol(),OP_SELL,Lots,Bid,Spread,0,Bid - TakeProfit*Point,0,0,0,Red); // èñïîëíÿåì if(GetLastError()==0) {OpenSell=0; return;} } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Relative strength index
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It automatically opens orders when conditions are reached
Other Features: