GBPUSD_M15_V2_01

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
Moving average indicator
0 Views
0 Downloads
0 Favorites
GBPUSD_M15_V2_01
//---- Âõîäíûå ïàðàìåòðû---------------
extern string Long="Ïàðàìåòðû äëèííûõ ïîçèöèé";
extern int    PeriodMA1=20;
extern int    ×àñ_Îòêðûòèÿ1 = 16;
extern int    ×àñ_Çàêðûòèÿ1 = 8;
extern string Short="Ïàðàìåòðû êîðîòêèõ ïîçèöèé";
extern int    PeriodMA2=20;
extern int    ×àñ_Îòêðûòèÿ2 = 6;
extern int    ×àñ_Çàêðûòèÿ2 = 13;
extern string ÒÐ="Âûñòàâëÿåì ÒÐ â ïðîöåíòàõ îò öåíû";
extern double Ïðîöåíò_TP=0.6;
extern string SL1="Âûñòàâëÿåì SL â ïèïñàõ";
extern int    SL=30;
extern string ïðîôèò="çàêðûâàåì ïîçèöèþ ïåðåñå÷åíèå ÌÀ âûøå/íèæå îòêðûòèÿ íà ... ïóíêòîâ";
extern int    ProfitPips=35;
extern bool   Flag_ProfitPips=true; //Ôëàã äëÿ îòêëþ÷åíèÿ äàííîé ôóíêöèè true - âêëþ÷åíà, false - îòêëþ÷åíà
extern string òðýíä="Íàñòðîéêà òðýíäà";
extern int    Period_MA=200;
extern int    n_MA=2;
extern string lot="Íàñòðîéêà âåëè÷èíû ëîòà";
extern double Lots=0.01;
extern string ÌÌ="Íàñòðîéêà óïðàâëåíèÿ êàïèòàëëîì";
extern double Loss = 0.02;    // Âåëè÷èíà óáûòêà â ïðîöåíòàõ íà îäíó ñäåëêó
extern int    ðåæèìÌÌ=0; //âûáîð ðåæèìà 0-íåò ÌÌ 1-óáûòîê % îò êàïèòàëëà 2- âåëè÷èíà ïîçèöèè % îò áàëàíñà
extern string x1="Äëÿ äèëèíãîâûõ öåíòðîâ ñ 5 çíàêàìè x óìíîæèòü íà 10";
extern int    x=10;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
static datetime    dt;
static bool   permission_long = true, permission_short = true; // ðàçðåøåíèå äëèííûõ è êîðîòêèõ ïîçèöèé
int start()
  {
  double a;// ïåðåìåííûå à-óáûòîê â ïèïñàõ
  int n=1; // Çàäàåò äèàïàçîí â ÷àñàõ íà îòêðûòèå
  int total,cnt;
  int TP=0;
  int magik_Buy=13;
  int magik_Sell=14;
  int êîë_äë=0, êîë_êîð=0;
  double MA11=iMA(NULL,0,PeriodMA1,0,MODE_SMA,PRICE_MEDIAN,1);
  double MA12=iMA(NULL,0,PeriodMA1,0,MODE_SMA,PRICE_MEDIAN,2);
  double MA21=iMA(NULL,0,PeriodMA2,0,MODE_SMA,PRICE_MEDIAN,1);
  double MA22=iMA(NULL,0,PeriodMA2,0,MODE_SMA,PRICE_MEDIAN,2);
  double Medium1=iMA(NULL,0,1,0,MODE_SMA,PRICE_MEDIAN,1);
  double Medium2=iMA(NULL,0,1,0,MODE_SMA,PRICE_MEDIAN,2);
  double MA_Long1=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_MEDIAN,1);
  double MA_Long_n=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_MEDIAN,n_MA);
  
  if(dt!=iTime(NULL,PERIOD_D1,0)) // Îïðåäåëÿåò îòêðûòèÿ íîâîãî äíÿ 
  {
  permission_long = true;         // Ðàçðåøàåì îòêðûòèå äëèííûõ ïîçèöèé íà ýòîò äåíü
  permission_short = true;        // Ðàçðåøàåì îòêðûòèå êîðîòêèõ ïîçèöèé íà ýòîò äåíü
  dt=iTime(NULL,PERIOD_D1,0);     // Çàïîìèíàåì âðåìÿ îòêðûòèÿ äíåâíîé ñâå÷è
  }
  total=OrdersTotal();
  for(cnt=0;cnt<total;cnt++)
      {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
         {
         if(OrderMagicNumber()==magik_Buy) êîë_äë=êîë_äë+1;
         if(OrderMagicNumber()==magik_Sell) êîë_êîð=êîë_êîð+1;
         }
      }
        
     for(cnt=0;cnt<total;cnt++)
      {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
         {
         // ---------------------Çàêðûòèå-------------------------------------------------
         if(OrderType()==OP_BUY && OrderMagicNumber()==magik_Buy)
         {
            if(Hour()==×àñ_Çàêðûòèÿ1)
            {
               OrderClose(OrderTicket(),OrderLots(),Bid,3*x,Red);
               Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
               return(0);
            }
            if(Medium1>MA11 && Medium2<=MA12 && Close[1]-OrderOpenPrice()>ProfitPips*x*Point && Flag_ProfitPips==true)
            {
               OrderClose(OrderTicket(),OrderLots(),Bid,3*x,Red);
               Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
               return(0);
            }
            if(Medium1<MA11 && Medium2>=MA12 && Bid-SL*x*Point>OrderStopLoss()+3*x*Point)
            {               
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid-SL*x*Point,OrderTakeProfit(),0,Red);
               Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
               return(0);
            }

            
         }
         //-------------------Çàêðûòèå----------------------------------------------------  
         if(OrderType()==OP_SELL && OrderMagicNumber()==magik_Sell)
         {
            if(Hour()==×àñ_Çàêðûòèÿ2)
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3*x,Red);
               Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
               return(0);
            }
            if(Medium1<MA21 && Medium2>=MA22 && OrderOpenPrice()-Close[1]>ProfitPips*x*Point && Flag_ProfitPips==true)
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3*x,Red);
               Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
               return(0);
            }
            if(Medium1>MA21 && Medium2<=MA22 && Ask+SL*x*Point<OrderStopLoss()-3*x*Point)
            {               
               OrderModify(OrderTicket(),OrderOpenPrice(),Ask+SL*x*Point,OrderTakeProfit(),0,Red);
               Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
               return(0);
            }
         }               
  
         }
      }
   if((Hour()==×àñ_Îòêðûòèÿ1 || Hour()==×àñ_Îòêðûòèÿ1+n) && permission_long==true && êîë_äë<1) // åñëè íåò ïîçèöèé
     {
      // îòêðûòèå äëèííîé ïîçèöèè
      if(Medium1>MA11 && MA11>MA12 && MA_Long1>MA_Long_n)
        {
        TP=Ðàñ÷åò_TP(Ask,Ïðîöåíò_TP);
        a=NormalizeDouble(TP*Point,Digits);
        Lots=ValueLot(a);        
        if(buy(TP,magik_Buy,Lots)!=-1) permission_long = false;
        Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
        return(0);
        }
      }
   if((Hour()==×àñ_Îòêðûòèÿ2 || Hour()==×àñ_Îòêðûòèÿ2+n) && permission_short == true && êîë_êîð<1) // åñëè íåò ïîçèöèé
     {   
      // îòêðûòèå êîðîòêîé ïîçèöèè
      if(Medium1<MA21 && MA21<MA22 && MA_Long1<MA_Long_n)
        {
         TP=Ðàñ÷åò_TP(Bid,Ïðîöåíò_TP);
         a=NormalizeDouble(TP*Point,Digits);
         Lots=ValueLot(a);         
         if(sell(TP,magik_Sell,Lots)!=-1) permission_short = false;
         Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
         return(0);
        }
     }
//---------------------------------------------------------------------------------------   
return(0);
}
double Ðàñ÷åò_TP(double A,double B)
   {
   int xx=0;
   double y=A*B/100;
   xx=MathRound(y/Point);
   if (xx<30*x) xx=30*x;
   return(xx); 
   }
int sell(int TP, int magik_Sell, double Lot)         //Ôóíêöèÿ âõîäà â êîðîòêóþ ñòîðîíó
   {
   int t=-1;
   t=OrderSend(Symbol(),OP_SELL,Lot,Bid,3*x,Bid+TP*Point,Bid-TP*Point,"order_sell",magik_Sell,0,Red);
   return(t);
   }

int buy(int TP, int magik_Buy, double Lot)           //Ôóíêöèÿ âõîäà â äëèííóþ ñòîðîíó
   {
   int t=-1;
   t=OrderSend(Symbol(),OP_BUY,Lot,Ask,3*x,Ask-TP*Point,Ask+TP*Point,"order_buy",magik_Buy,0,Green);
   return(t);
   }
double ValueLot (double A)
   {
   RefreshRates();
   double ticvalue=MarketInfo(Symbol(),MODE_TICKVALUE);
   double minlot=MarketInfo(Symbol(),MODE_MINLOT);   
   double maxlot=MarketInfo(Symbol(),MODE_MAXLOT);
   double standartlot=MarketInfo(Symbol(),MODE_LOTSIZE);
   double x=0;
   if (ðåæèìÌÌ==0) x=Lots;
   if(ðåæèìÌÌ==1) x=NormalizeDouble(MathFloor((AccountFreeMargin()*Loss*Point)/(ticvalue*A*minlot))*minlot,2);
   if(ðåæèìÌÌ==2) x=NormalizeDouble(minlot*((AccountFreeMargin()*Loss)/(1000*minlot)),2);
   if(ðåæèìÌÌ==3)
   {
   double bb=MathSqrt(AccountFreeMargin()/1000);
   x=NormalizeDouble(bb*Loss,2);
   }
   if(x>=maxlot) x=maxlot;
   if(x<=minlot) x=minlot;   
   return(x);
   }
  

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