VR---TRI-BOYCA

Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategy
Indicators Used
Moving average indicator
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
VR---TRI-BOYCA
//////////////////////////////////////////////////////////////////////
//                           VR---TRI-BOYCA.mq4                     //
//                              Voldemar227                         //
//                     http://www.tesvop.narod.ru                   //
//////////////////////////////////////////////////////////////////////
//                              ÏÎÃËÎÙÅÍÈÅ                          //
//////////////////////////////////////////////////////////////////////
#property copyright "http://www.tesvop.narod.ru"
extern string Íàñòðîéêè                 = "Ãëàâíûå íàñòðîéêè";      //
extern double LotsPercent               = 10      ;                 //
extern int    Loss                      = 2000    ;                 // ðàññòîÿíèå äî ÑòîïËîññà â ïóíêòàõ (0 - îòêëþ÷èòü ÑË)   
extern int    Profit                    = 1000    ;                 // ðàññòîÿíèå äî ÒåéêÏðîôèòà â ïóíêòàõ (0 - îòêëþ÷èòü)  
extern string s0                        = "Íàñòðîéêè òðåèëèíã ñòîï-ëîññà";  //îãëàâëåíèå
extern bool   UseTrail                  = true     ;                //âêëþ÷åíèå/âûêëþ÷åíèå òðåèëèíã-ñòîïà
extern bool   TrailWhileMinus           = false    ;                //ïàðàìåòð îòâå÷àåò çà íåïðåðûâíîå/ñêà÷êîîáðàçíîå ïåðåìåùåíèå ñòîï-ëîññà â á/ó
extern int    Trail                     = 300      ;

extern int    MAPeriod1                 = 21       ;                //Ïåðèîä   //
extern int    Slip                      =5;                                                                   //Ïðîñêàëüçûâàíèå 
extern int    MagicNumber               = 227      ;                //
int tiket;
int start()
  {
  double MA1 =iMA(NULL,0,MAPeriod1,0,1,PRICE_MEDIAN,0);
  double go=(Open[3]-Close[1])*10000;
  if (Close[1]>Open[3])
   go=go*(-1);
   Print("go",go);    
//---------------------------------------------------------------------------------------------------------------//  
//Ïðîâåðÿåì íàëè÷èå îòêðûòûõ îðäåðîâ                                                                             //
//---------------------------------------------------------------------------------------------------------------//      
     double Lots;
     Lots=NormalizeDouble(AccountBalance()*0.00001*LotsPercent,1); 
      double slb,tpb,sls,tps;
      //if (go>Delta)
        if(OrdersTotal()==0)     
         if((Open[3]<Close[3])&&(Open[2]<Close[2])&&(Open[1]<Close[1])&&(Close[1]>Close[3]))//&&(upS1<StohMin))  //  Ñðàâíèâàåì èíäèêàòîðû // (Close[0]<=nizB)&&
         { 
           Alert("BUY");                                                                                    //                        //
           slb=NormalizeDouble(Bid - (Loss*Point),Digits);                                  //ðàñ÷¸ò ñòîïà äëÿ áàé ïîçèöèé//
           tpb=NormalizeDouble(Ask + (Profit*Point),Digits);                              //ðàñ÷¸ò ïðîôèòà äëÿ áàé ïîçèöèé//////////
           tiket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,MA1,tpb,NULL,MagicNumber,0,CLR_NONE);//Âõîä íà áàé//
         if(tiket<0)  Alert("Îøèáêà ¹ - ",GetLastError()," Íà èíñòðóìåíòå ", Symbol());
         }                                                                                                         //            //
 else                                                                             //íåò ïîçèöèè íà áàé òîãäà èùåì íà ñåëë//
        if((Open[3]>Close[3])&&(Open[2]>Close[2])&&(Open[1]>Close[1])&&(Close[1]<Close[3]))//&&(upS1>StohMax))          
        { 
           Alert("SELL");                                                                               //                                     //
           sls=NormalizeDouble(Ask + (Loss*Point),Digits);                                         //ðàñ÷¸ò ñòîïà äëÿ ñåëë ïîçèöèé//
           tps=NormalizeDouble(Bid - (Profit*Point),Digits);                                     //ðàñ÷¸ò ïðîôèòà äëÿ ñåëë ïîçèöèé//
               tiket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,MA1,tps,NULL,MagicNumber,0,CLR_NONE);//Âõîä ñåë //
        if(tiket<0)  Alert("Îøèáêà ¹ - ",GetLastError()," Íà èíñòðóìåíòå ", Symbol());                                                  //ïèøåò îøèáêó//
        }  
//---------------------------------------------------------------------------------------------------------------------------
//Òðàë
//---------------------------------------------------------------------------------------------------------------------------
 TrailingStop(tiket); 
//----
   return(0);
  }
//--------------------------------------- TrailingStop ---------------------------------
void TrailingStop(int tiket)                                                 //ôóíêöèÿ ïðèíèìàåò òèêåò îáðàáàòûâàåìåîãî îðäåðà
  {
   bool res;                                                                   //ïåðåìåííàÿ äëÿ îáðàáîòêè âîçâðàùàåìûõ çíà÷åíèé ôóíêöèé
   res = OrderSelect(tiket, SELECT_BY_TICKET);                               //âûáèðàåì îðäåð
   
   if(res)
   {
      if(OrderType() == OP_BUY)                                               //îáðàáîòêà îðäåðà íà ïîêóïêó
         if(TrailWhileMinus == true || Bid-OrderOpenPrice()>Point*Trail)      //íå òðàëèì, ïîêà íå ìîæåì äîñòè÷ü áåçóáûòêà ïåðâûì ïåðåíîñîì ñòîïà   
            if(Bid - OrderStopLoss() > Trail*Point)                           //îñíîâíîå óñëîâèå íåîáõîäèìîñòè ïåðåìåùåíèÿ ñòîï-ëîññà
            {
               res = OrderModify(OrderTicket(), 0, Bid - Trail*Point, OrderTakeProfit(), 0); 
               if(res<0)
                  Alert("TrailingStop OrderModify Error: ", GetLastError());  //îïîâåùåíèå îá îøèáêå
           }
         
      if(OrderType() == OP_SELL)                                              //îáðàáîòêà îðäåðà íà ïðîäàæó
         if(TrailWhileMinus == true || OrderOpenPrice()-Ask>Point*Trail)      //íå òðàëèì, ïîêà íå ìîæåì äîñòè÷ü áåçóáûòêà ïåðâûì ïåðåíîñîì ñòîïà
            if(OrderStopLoss() - Ask > Trail*Point)                           //îñíîâíîå óñëîâèå íåîáõîäèìîñòè ïåðåìåùåíèÿ ñòîï-ëîññà
            {
               res = OrderModify(OrderTicket(), 0, Ask + Trail*Point, OrderTakeProfit(), 0);        
               if(res<0)
                  Alert("TrailingStop OrderModify Error: ", GetLastError());  //îïîâåùåíèå îá îøèáêå
            }
   }
}










   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 ---