Author: .
Price Data Components
Series array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Indicators Used
Relative Vigor indexStochastic oscillator
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
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);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---