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
0 Views
0 Downloads
0 Favorites
Loza
int     Slippage =  2;
double  Lot      =  0.07;
#define Per 0x1
int begin=0,OP_;




//-------------------------------------------------------------------------------------------------------// <<>>
//                                       <<Êîìàíäíûé öåíòð>>                                             //


// Óñëîâèÿ àêòèâàöèè ìîäåëè 1
// if ....................???
//      Ìîäåëü ïîâåäåíèÿ 1
        int   Control_param    = 55,  // TralStop  = Control_param*2, çíà÷åíèå ó÷àâñòâóåò â ðàñ÷åòå SL 
              Control_param_2  = 25,  // Çíà÷åíèå ïðåðåäàåòñÿ â öèêë ìîäèôèêàöèè îðäåðîâ
              Control_param_3  = 15,  // Èñïîëüçóåòñÿ äëÿ âû÷èñëåíèÿ SL âñåõ îðäåðîâ
              Control_param_4  = 40,  // Îáîçíà÷àåò òó ïðèáûëü ïðè äîñòèæåíèè êîòîðîé ñðàáîòàåò "ðàçäàòêà" çíà÷åíèé Lot 
              
       //----------------------------------------------------------------------// 
       //------------Èçìåíÿòü òîëüêî ïðè èçìåíåíèè ñòàðòîâîãî áàëàíñà----------// 
              Control_param_5  = 50,  // Ïåðâîå (íèæíåå)  çíà÷åíèå áàëàíñà
              Control_param_6  = 600; // Âòîðîå (âåðõíåå) çíà÷åíèå áàëàíñà
       //----------------------------------------------------------------------// 


// Óñëîâèÿ àêòèâàöèè ìîäåëè 2
// if ....................???     
//      Ìîäåëü ïîâåäåíèÿ 2
//      int   Control_param    = ?,  // TralStop  = Control_param*2
//            Control_param_2  = ?,  // Çíà÷åíèå ïðåðåäàåòñÿ â öèêë ìîäèôèêàöèè îðäåðîâ
//            Control_param_3  = ?,  // Èñïîëüçóåòñÿ äëÿ âû÷èñëåíèÿ SL âñåõ îðäåðîâ
//            Control_param_4  = ?,  // Îáîçíà÷àåò òó ïðèáûëü ïðè äîñòèæåíèè êîòîðîé ñðàáîòàåò "ðàçäàòêà" çíà÷åíèé Lot 
//            Control_param_5  = ?,  // Ïåðâîå (íèæíåå) çíà÷åíèå áàëàíñà
//            Control_param_6  = ?;  // Âòîðîå (âåðõíåå) çíà÷åíèå áàëàíñà


// Óñëîâèÿ àêòèâàöèè ìîäåëè 3
// if ....................???
//      Ìîäåëü ïîâåäåíèÿ 3
//      int   Control_param    = ?,  // TralStop  = Control_param*2
//            Control_param_2  = ?,  // Çíà÷åíèå ïðåðåäàåòñÿ â öèêë ìîäèôèêàöèè îðäåðîâ
//            Control_param_3  = ?,  // Èñïîëüçóåòñÿ äëÿ âû÷èñëåíèÿ SL âñåõ îðäåðîâ
//            Control_param_4  = ?,  // Îáîçíà÷àåò òó ïðèáûëü ïðè äîñòèæåíèè êîòîðîé ñðàáîòàåò "ðàçäàòêà" çíà÷åíèé Lot 
//            Control_param_5  = ?,  // Ïåðâîå (íèæíåå) çíà÷åíèå áàëàíñà
//            Control_param_6  = ?;  // Âòîðîå (âåðõíåå) çíà÷åíèå áàëàíñà
      
//-------------------------------------------------------------------------------------------------------// >><<
 

//-------------------------------------------------------// <<>>
// çàêðûòèå ïîêóïîê
int ClOrder?(int MagicNumber)
{
  for(int i = 0; i <= OrdersTotal(); i++)
  {
  if(OrderSelect(i, SELECT_BY_POS) == false) continue;
  return(1);
  }
return(0);
}
//-------------------------------------------------------// >><<

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------// <<>>
// ïîêóïêà
void OpenBuy()
   {  
   int tickbuy    = OrderSend(Symbol (), OP_BUY, Lot,  NormalizeDouble(Ask,Digits), Slippage, Ask-(Control_param-Control_param_3)*Point,0, NULL, Per, 0, Green);
   OP_=OP_BUY;
   }   
// ïðîäàæà
void OpenSell()
   { 
   int ticksell   = OrderSend(Symbol (), OP_SELL, Lot,  NormalizeDouble(Bid,Digits), Slippage, Bid+(Control_param-Control_param_3)*Point,0,NULL, Per, 0, Red);  
   OP_=OP_SELL;    
   }
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------// >><<
  
   
     
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------// <<>>
// Êîìïåíñàöèîííûå ïîçèöèè - Áëîê îòêëþ÷åí
//   void OpenSell_Mod()
//   { 
//   int ticksell  = OrderSend(Symbol (), OP_SELL, 0.02,  NormalizeDouble(Bid,Digits), Slippage,Bid+(Control_param-Control_param_3)*Point,0,NULL, Per, 0, Red);
//   }
//   void OpenBuy_Mod()
//   {
//   int tickbuy1   = OrderSend(Symbol (), OP_BUY,  0.02,  NormalizeDouble(Ask,Digits), Slippage,Ask-(Control_param-Control_param_3)*Point,0,NULL, Per, 0, Green);
//   }
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------// >><<

 
 int start(){
 if(begin==0)
 OpenSell();
 
         string Symb=Symbol();                      
         for(int i=1; i<=OrdersTotal(); i++)          
         { 

//-------------------------------------------------------------------------------// Ðàçäàòêà çíà÷åíèé Lot  <<>>            
double Prots   = 0.10,        
       Min_Lot = MarketInfo(Symb,MODE_MINLOT),
       Step    = MarketInfo(Symb,MODE_LOTSTEP),
       Balance = AccountFreeMargin(),       
       One_Lot = MarketInfo(Symb,MODE_MARGINREQUIRED), 
       Pr      = OrderProfit(), Lot_mod;                           

int    Type    = OrderType(), 
       TS      = (Control_param*2); 
       
//---------------------------------------------------------------------- Áëîê óïðàâëåíèÿ áàëàíñîì  <<>>
if (Pr>Control_param_4)
{     
Lot_mod = 0.01;
}
else
{      
int BalanceExcessIn100s1 = MathFloor( ( Balance - Control_param_5) / 100.01 );
Lot_mod = BalanceExcessIn100s1 * 0.01 + 0.01; 
                      
int BalanceExcessIn100s = MathFloor( ( Balance - Control_param_6) / 100.01 );
Lot_mod = BalanceExcessIn100s * 0.01 + 0.1;           
}                        
//----------------------------------------------------------------------- Áëîê óïðàâëåíèÿ áàëàíñîì  >><<
//Lot_mod = MathFloor(Free*Prots/One_Lot/Step)*Step;           
            
            //---------------//    
              Lot = Lot_mod;  
            //---------------//                 
//-------------------------------------------------------------------------------// Ðàçäàòêà çíà÷åíèé Lot >><<
         



//-----------------------------------------------------------------------------------------// Áëîê ìîäèôèêàöèè îðäåðîâ <<>>
         if (OrderSelect(i-1,SELECT_BY_POS)==true)   
         {                                         
         int Tip=OrderType();                       
         if(OrderSymbol()!=Symb||Tip>1)continue;      
         double SL=OrderStopLoss();                   
        
           while(true)                            
           {
            bool Modify=false;                 
            switch(Tip)                        
              {
               case 0 :                       
               if (NormalizeDouble(SL,Digits) < NormalizeDouble(Bid-TS*Point,Digits))
               {
               SL=Bid-(Control_param-Control_param_2)*Point; 
               string Text="Buy ";      
               Modify=true;              
               }       
              break;      
                                     
               case 1 :                          
               if (NormalizeDouble(SL,Digits) > NormalizeDouble(Ask+TS*Point,Digits)|| NormalizeDouble(SL,Digits)==0)
               {      
               SL=Ask+(Control_param-Control_param_2)*Point;
               Text="Sell ";         
               Modify=true;  
               }
              break;        
             }                          
              if (Modify==false)                  
             break;                               
       //------------------------------------------------------------- Âàðèàíò 1 <<>>
   
            double Price  =OrderOpenPrice();     
            int    Ticket =OrderTicket();        
            Alert ("Ìîäèôèêàöèÿ ",Text,Ticket,". Æä¸ì îòâåò..");
            bool Ans1 = OrderModify(Ticket,Price,SL,0,0);
            if (Ans1==true)                     
            {
            Alert ("Îðäåð ",Text,Ticket," ìîäèôèöèðîâàí:)");
            break;                              
            }   
       //------------------------------------------------------------- Âàðèàíò 1 >><<
       
//--------------------------------------------------------------------------------------// Âàðèàíò 2 <<>>
            // double Price  =OrderOpenPrice();     
            // int    Ticket =OrderTicket();        
            
            // bool Ans1=OrderModify(Ticket,Price,SL,0,0);
            // if (Ans1==true)                     
            // {                              
            
            // int orderSell;
            // if (orderSell < 1)
            // {
            // orderSell  = OrderSend(Symbol(),OP_SELL, Lot,Bid,3,Ask+Try*Point,0); 
            // }
            // else{continue;}
            // break; 
            //}    // Áëîê ñèñòåìû óïðàâëåíèÿ áàëàíñîì
//--------------------------------------------------------------------------------------// Âàðèàíò 2 >><<
       
       
       
         
            break;                   
         }  // Êîíåö öèêëà ìîä.
         }  // Êîíåö àíàëèçà îðä.
         }  // Êîíåö ïåðåáîðà îðä.
 
//-----------------------------------------------------------------------------------------// Áëîê ìîäèôèêàöèè îðäåðîâ >><<
 
 
 
 
//--------------------------------------// Áëîê (ñòàíäàðò)
 if(ClOrder?(Per)==0)
 {
 if(OP_==0)
  { 
  OpenSell();
  } 
 else
  { 
  OpenBuy();
  }
  }
  begin=1;
return(0);
}

//------------------------------// Áëîê ñ êîì. ïîçèöèÿìè. Áëîê îòêëþ÷åí
//  if(ClOrder?(STUPID)==0){
//  if(OP_==0)
//  { 
//  OpenSell();
//  if (Lot == 0.01)
//  {
//  OpenBuy_Mod();
//  }}
//  else
//  { 
//  OpenBuy();
//  if (Lot == 0.01)
//  {
//  OpenSell_Mod();
//  }}}
//  begin=1;
//  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 ---