Rosa





//+------------------------------------------------------------------
//         Ýêñïåðòíàÿ ñèòåìà -  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