//+------------------------------------------------------------------ // Ýêñïåðòíàÿ ñèòåìà - Rosa[].mq4 // [v0] // // Äëÿ íîðìàëüíîé ðàáîòû ñëåäóåò óñòàíîâèòü èíäèêàòîð // SilverTrend_Signal With Alert v3e íà ãðàôèê ñ ýòèì ýêñïåðòîì // Äàííûå î íàïðàâëåíèè òðåíäà ïåðåäàþòñÿ ñ èíäèêàòîðà SilverTrend_Signal With Alert v3e // ê ýêñïåðòó ñ ïîìîùüþ ãëîáàëüíûõ ïåðåìåííûõ (GlobalVariableGet("....")). // Äàëåå ñîâåòíèê îòêðûâàåò ïîçû ïî ñèãíàëàì èíäèêàòîðà SilverTrend_Signal With Alert v3e. // // // // //+------------------------------------------------------------------ #property copyright "." #property link "http://www.fegal.4u.ru/" #property show_inputs extern double TakeProfit = 15; extern double StopLoss = 25; extern double Lots = 0.1; extern double TrailingStop = 5; double ih=0,sl=0,tp=0,vrb=0,vrs=0,Tt,fmod,im; double otk_b,otk_s,Lotsi,zk_b,zk_s; int cnt, ticket, total; double Slippage=3,DeltaLimit=0; GlobalVariableSet("xSELL",0); GlobalVariableSet("xBUY",0); int init(){ return(0);} //---------- int start() { //if(Symbol()<"USDJPY") {Comment("Íå òà âàëþòà.");return(0);} //if(Period()>1){Comment("Íå òîò ïåðèîä.");return(0);} if(Bars<100) {Comment("bars less than 100");return(0);} //if(Year()>2005) {return(0);} total=OrdersTotal(); //---- Êîíòðîëü îòêðûòûõ ïîçèöèé. Íà÷àëî áëîêà. if(total>0) { for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); //---- Êîíòðîëü íà BUY if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) { Comment("Êîíòðîëèðóþ íà BUY: ",OrderLots()," Ëîò(à)"); //===== Áëîê òåõíè÷åñêîãî àíàëèçà ïîçû íà BUY //0 if( iRVI(NULL,5,8,MODE_MAIN,1)>iRVI(NULL,5,8,MODE_SIGNAL,1) && iRVI(NULL,5,8,MODE_MAIN,0)<iRVI(NULL,5,8,MODE_SIGNAL,0)&& iRVI(NULL,5,8,MODE_MAIN,1)>0.15 ){if( Bid>(OrderOpenPrice()+TrailingStop*Point) ){zk_b=1;}} //1 if( iStochastic(NULL,5,12,4,3,MODE_EMA,1,MODE_MAIN,1)< iStochastic(NULL,5,12,4,3,MODE_EMA,1,MODE_SIGNAL,1) && iStochastic(NULL,5,12,4,3,MODE_EMA,1,MODE_SIGNAL,1)>70 && fmod>0 ){if( Bid>(OrderOpenPrice()+(TrailingStop-3)*Point) ){zk_b=1;}} //===== Èñïîëíåíèå ïî ðåçóëüòàòó àíàëèçà. if( zk_b>0 ){ ticket=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Aqua); if(ticket>0){vrb=CurTime();zk_b=0;} Alert(" Ðîáîò <Rosa[]>","\n","Áàëàíñ _____ ",AccountBalance(),"\n", "Çàêðûë ____ ",OrderProfit()," ïóíêòîâ [",ticket,"]"); return(0); } //===== Ìîäèôèêàöèÿ ÎÐÄÅÐÀ [òðåéëèíã ñòîï BUY] if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if((OrderStopLoss()<(Bid-Point*(TrailingStop))) || ( Point*(Bid+9)>tp) ) { Comment("Ìîäèôèöèðóþ."); sl=Low[Lowest(NULL,1,MODE_LOW,10,10)]; tp=High[Highest(NULL,1,MODE_HIGH,10,10)]; if((tp-Ask)<15){tp=Ask+15*Point;} if((Bid-sl)<25){sl=Bid-25*Point;} if( sl>OrderStopLoss() && tp>OrderTakeProfit() ){ OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Aqua); im=1;fmod=fmod+1;return(0); } } } } }//---Êîíåö áëîêà êîíòðîëÿ íà BUY //---- Êîíòðîëü íà SELL if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) { Comment("Êîíòðîëèðóþ íà SELL: ",OrderLots()," Ëîò(à)"); //===== Áëîê òåõíè÷åñêîãî àíàëèçà ïîçû íà SELL //0 if( iRVI(NULL,5,8,MODE_MAIN,1)<iRVI(NULL,5,8,MODE_SIGNAL,1) && iRVI(NULL,5,8,MODE_MAIN,0)>iRVI(NULL,5,8,MODE_SIGNAL,0)&& iRVI(NULL,5,8,MODE_MAIN,1)<-0.15 ){ if( Ask<(OrderOpenPrice()-TrailingStop*Point) ){zk_s=1;}} //1 if( iStochastic(NULL,5,12,4,3,MODE_EMA,1,MODE_MAIN,1)> iStochastic(NULL,5,12,4,3,MODE_EMA,1,MODE_SIGNAL,1) && iStochastic(NULL,5,12,4,3,MODE_EMA,1,MODE_SIGNAL,1)<30 && fmod>0 ){ if( Ask<(OrderOpenPrice()-(TrailingStop-3)*Point) ){zk_s=1;}} //===== Èñïîëíåíèå ïî ðåçóëüòàòó àíàëèçà. if( zk_s>0 ){ ticket=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Gold); if(ticket>0){vrs=CurTime();zk_s=0;} Alert(" Ðîáîò <Rosa[]>","\n","Áàëàíñ _____ ",AccountBalance(),"\n", "Çàêðûë ____ ",OrderProfit()," ïóíêòîâ [",ticket,"]"); return(0); } //===== Ìîäèôèêàöèÿ ÎÐÄÅÐÀ [òðåéëèíã ñòîï SELL] if(TrailingStop>0) { if(OrderOpenPrice()-Ask>Point*TrailingStop) { if((OrderStopLoss()>(Ask+Point*(TrailingStop))) || ( Point*(Bid-9)>tp) || (OrderStopLoss()==0)) { Comment("Ìîäèôèöèðóþ."); sl=Low[Lowest(NULL,1,MODE_LOW,10,10)]; tp=High[Highest(NULL,1,MODE_HIGH,10,10)]; if((tp-Ask)<15){tp=Ask+15*Point;} if((Bid-sl)<25){sl=Bid-25*Point;} if( sl<OrderStopLoss() && tp<OrderTakeProfit() ){ OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Gold); im=1;fmod=fmod+1;return(0); } } } } }//---Êîíåö áëîêà êîíòðîëÿ íà SELL }}//---- Êîíòðîëü îòêðûòûõ ïîçèöèé. Êîíåö áëîêà. //======= Áëîê âçàèìîäåéñòâèÿ ñ äðóãèìè ýêñïåðòàìè.=============== if(total>0) { for(cnt=0;cnt<total;cnt++) {OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if( (OrderSymbol()<Symbol()) || (OrderSymbol()>Symbol()) ) {Comment("Òåðìèíàë çàíÿò. Ïðîñòàèâàþ.");} } } //================================================================ if(total<1) { //---- Îòêðûòü ïîçó. Íà÷àëî áëîêà. if(AccountBalance()<100){Comment("Ìàëî äåíåã."); return(0); } Lotsi=0.1; //===== Áëîê òåõíè÷åñêîãî àíàëèçà //===== double otk_s=GlobalVariableGet("xSELL");//ñ÷èòûâàíèå ãëîáàëüíîé ïåðåìåííîé double otk_b=GlobalVariableGet("xBUY"); if( otk_s==0 || otk_b==0 ) {Comment("Òåðìèíàë ïóñò. Òîðãóþ.");} if( otk_s==1 ){ otk_s=2;otk_b=0;ih=2;} if( otk_b==1 ){ otk_b=2;otk_s=0;ih=2;} if( otk_s>0 ) {Comment("Òåðìèíàë ïóñò. Òîðãóþ. Êîíòðîëüíûé øàã__¹ ",ih,"\n", "Íàìåðåâàþñü îòêðûòü íà SELL","\n","îòêðûòèå íà øàãå 2");} if( otk_b>0 ) {Comment("Òåðìèíàë ïóñò. Òîðãóþ. Êîíòðîëüíûé øàã__¹ ",ih,"\n", "Íàìåðåâàþñü îòêðûòü íà BUY","\n","îòêðûòèå íà øàãå 2");} //===== //======= Îòêðûòèå ïîçû íà SELL ========== if ( otk_s==2 && (CurTime()-vrs)>120 ){ //Lotsi=MathMax(0.1,MathFloor(AccountFreeMargin()/500.)/10.); ticket=OrderSend(Symbol(),OP_SELL,Lotsi,Bid,Slippage, Ask+StopLoss*Point+DeltaLimit*Point,Bid-TakeProfit*Point+DeltaLimit*Point, "Rosa",1002,0,Gold); if(ticket>0){Tt=CurTime();otk_s=0;fmod=0;GlobalVariableSet("xSELL",0);} Alert("Ðîáîò <Rosa[]>__ïîçà íà Sell __ [",ticket,"] ",Symbol(),"\n","Âðåìÿ ______ ", TimeToStr(CurTime()),"\n","Áàëàíñ ______ ",AccountBalance()); return(0);} //============ //======= Îòêðûòèå ïîçû íà BUY =========== if( otk_b==2 && (CurTime()-vrs)>120 ){ //Lotsi=MathMax(0.1,MathFloor(AccountFreeMargin()/500.)/10.); ticket=OrderSend(Symbol(),OP_BUY,Lotsi,Ask,Slippage, Bid-StopLoss*Point-DeltaLimit*Point,Ask+TakeProfit*Point-DeltaLimit*Point, "Rosa",1002,0,Aqua); if(ticket>0){Tt=CurTime();otk_b=0;fmod=0;GlobalVariableSet("xBUY",0);} Alert("Ðîáîò <Rosa[]>__ïîçà íà BUY ___ [",ticket,"] ",Symbol(),"\n","Âðåìÿ ______ ", TimeToStr(CurTime()),"\n","Áàëàíñ ______ ",AccountBalance()); return(0);} } //---- Îòêðûòü ïîçó. Êîíåö áëîêà. return(0); } //+------------------------------------------------------------------+
Sample
image not available
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Indicators Used:
Relative Vigor index
Stochastic oscillator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy
Other Features:
It issuies visual alerts to the screen