VR---MOVING

Author: Copyright 2013, www.trading-go.ru Project.
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reached
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
VR---MOVING
//+------------------------------------------------------------------+
//|                                                      Muving .mq4 |
//|                     "Copyright 2013, www.trading-go.ru Project." |
//|                                       "http://www.trading-go.ru" |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, www.trading-go.ru Project."
#property link      "http://www.trading-go.ru"
#property version   "1.00"
#property description " Àâòîð èäåè Àëåêñåé, àâòîð êîäà Voldemar "
#property description " Òîðãîâàÿ ñèñòåìà íà îñíîâå èíäèêàòîðà Moving Awerage "
/*Ñîâåòíèê èñïîëüçóåò ïðèíöèï êà÷åëåé, ïðè ýòîì åñòü âîçìîæíîñòü óâåëè÷èâàòü ëîòû,
äëÿ ðàáîòû ïðèìåíÿåòñÿ ïðîñòàÿ ñòðàòåãèÿ. Åñëè öåíà âûøå ìóâèíãà + çàäàííàÿ äèñòàíöèÿ îòêðûâàåòñÿ áàé îðäåð 
åñëè öåíà óõîäèò â íèç òî îòêðûâàåòñÿ ñåë òåìæå ëîòîì, â ñëó÷àå åñëè öåíà ñíîâà ïðîäîëæàåò ðàñòè 
òî îòêðûâàåòñÿ åùå îäèí îðäåð áàé è ïðîèñõîäèò óñòàíîâêà îáùåãî ïðîôèòà è ñòîïà
*/
#property strict //Çàäàäèì ñòðîãèé ðåæèì

#define BUY 0    // Äëÿ óäîáñòâà îáîçíà÷èì ñâîè ïðåäîïðåäåëåííûå ïåðåìåííûå
#define SEL 1    // Äëÿ óäîáñòâà îáîçíà÷èì ñâîè ïðåäîïðåäåëåííûå ïåðåìåííûå
#define DEL -1   // Äëÿ óäîáñòâà îáîçíà÷èì ñâîè ïðåäîïðåäåëåííûå ïåðåìåííûå
input double Startlot=0.01;                      //Íà÷àëüíûé ëîò èñïîëüçóåòñÿ åñëè Risk=0;
input double Risk=0;                             //Íà÷àëüíûé ëîò ðàñ÷èòàííûé îò ïðîöåíò îò äåïîçèòà èñïîëüçóåòñÿ åñëè Startlot=0;
input double Multiplikatorlot=1;                 //Óâåëè÷åíèå ëîòà ïðè ñåðèè îðäåðîâ
input int    TakeProfit=200;                     //Òåéê ïðîôèò â ñëó÷àå åñëè îäèí îðäåð
input int PeriodMA=60;                           //Ïåðèî ñêîëüçÿùåé ñðåäíåé
input int ProfitPlus=0;                          //Äîáàâêà ïóíêòîâ â ïëþñ ïðè îáùåì ïðîôèòå
input ENUM_APPLIED_PRICE PriceMA=PRICE_CLOSE;    //Öåíà ñêîëüçÿùåé ñðåäíåé
input ENUM_MA_METHOD MehtodMA=MODE_EMA;          //Ìåòîä ñêîëüçÿùåé ñðåäíåé
input int DistanciyaMA=200;                      //Äèñòàíöèÿ äëÿ îòêðûòèÿ îðäåðà îò ìóâèíãà è äëÿ îòêðûòèÿ ïîñëåäóþùèõ îäíîòèïíûõ îðäåðîâ
input int Magic=1;                               //Èíäèâèäóàëüíûé íîìåð îðäåðîâ ñîâåòíèêà
input int Slip=30;                               //Ïðîñêàëüçûâàíèå
double worklotbuy=0;                             //Ïåðåìåííàÿ äëÿ õðàíåíèÿ ëîòà äëÿ áàåâ
double worklotsel=0;                             //Ïåðåìåííàÿ äëÿ õðàíåíèÿ ëîòà äëÿ ñåëîâ
//+------------------------------------------------------------------+
struct re                       // Ñîçäàäèì ñòðóêòóðó äàííûõ
  {
   double            max_price; // Äëÿ ìàêñèìàëüíûõ öåí
   double            min_price; // Äëÿ ìèíèìàëüíûõ öåí
   double            max_lot;   // Äëÿ ìàêñèìàëüíûõ ëîòîâ
   double            min_lot;   // Äëÿ ìèíèìàëüíûõ ëîòîâ
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//Ñîçäàäèì êëàñ, ïðîãðàììó â ïðîãðàììå
class muving
  {
private:  
// Òóò îáîçíà÷èì äàííûå êîòîðûå âèäíû òîëüêî â íóòðè êëàññà
   string            c_comm;                        //Ïåðåìåííàÿ äëÿ ñîçäàíèÿ êîìåíòàðèåâ â îðäåðàõ
   double            c_tp;                          //Ïåðåìåííàÿ äëÿ õðàíåíèÿ çíà÷åíèÿ Òåéê Ïðîôèòà
   double            c_pp;                          //Ïåðåìåííàÿ äëÿ õðàíåíèÿ äîáàâî÷íûõ ïóíêòîâ ê îáùåìó òåéê ïðîôèòó
public:
// Òóò îáîçíà÷èì äàííûå êîòîðûå âèäíû â îñíîâíîé ïðîãðàììå
   double            c_dis;                         //Ïåðåìåííàÿ äëÿ õðàíåíèÿ äèñòàíöèè äëÿ îòêðûòèÿ îðäåðîâ
   double            summlot(int typ);              //Ôóíêöèÿ áóäåò ñ÷èòàòü îáùóþ ñóììó ëîòà ïî òèïó îðäåðà
   double            prices(int typ);               //Ôóíêöèÿ áóäåò ïîëó÷àòü öåíû äëÿ îòêðûòèÿ ïåðâûõ îðäåðîâ â çàâèñèìîñòè îò ñèãíàëîâ ìóâèíãà
   int               counter(int typ);              //Ôóíêöèÿ ïîäñ÷åòà îðäåðîâ
   bool              openorders(int typ,double lot);//Ôóíêöèÿ îòêðûòèÿ îðäåðîâ
   void              info();                        //Ôóíêöèÿ äëÿ ïîëó÷åíèÿ öåí è ëîòîâ
   void              Take(int typ);                 //Ôóíêöèÿ äëÿ óñòàíîâêè Òåéê Ïðîôèòà
   void              awerage(int typ);              //Ôóíêöèÿ óñòàíîâêè îáùèõ Òåéê Ïðîôèòà è Ñòîï Ëîññà
                     muving();                      //Ñîçäàäèì êîíñòðóêòîð
                    ~muving();                      //Ñîçäàäèì äåñòðóêòîð
  };
//+------------------------------------------------------------------+
muving :: muving()                                                   //Âûçîâ êîíñòðóêòîðà è ïðèñâîåíèå/ñîçäàíèå íîðìàëèçîâàííûõ ïåðåìåííûõ
  {
   c_dis=NormalizeDouble(DistanciyaMA*_Point,_Digits);               //Íîðìàëèçîâàííàÿ ïåðåìåííàÿ äëÿ äèñòàíöèè ïðåîáðåòàåò âèä 0,00000
   c_tp=NormalizeDouble(TakeProfit*_Point,_Digits);                  //Íîðìàëèçîâàííàÿ ïåðåìåííàÿ äëÿ Òåéê Ïðîôèòà ïðåîáðåòàåò âèä 0,00000
   c_pp=NormalizeDouble(ProfitPlus*_Point,_Digits);                  //Íîðìàëèçîâàííàÿ ïåðåìåííàÿ äëÿ Ïðîôèò ïëþñà ïóíêòîâ îáùèõ Òåéê Ïðîôèòà è Ñòîï Ëîññà ïðåîáðåòàåò âèä 0,00000
  }
//+------------------------------------------------------------------+
muving :: ~muving() {  }                                             //Âûçîâåì äåñòðóêòîð
//+------------------------------------------------------------------+
double muving :: prices(int typ)                                                        //  çàâèñèìîñòè îò ïîëó÷åííîãî çíà÷åíèÿ typ ðàñ÷èòàåì öåíó äëÿ îòêðûòèÿ ïåðâîãî îðäåðà
  {
   double rez=0;                                                                        // Îáüÿâèì ëîêàëüíóþ ïåðåìåííóþ è îáíóëèì å¸
   if(typ==BUY)                                                                         // Ïðîâåðèì ÷åìó ðàâåí typ åñëè ðàâåí BUY 0 
      rez=NormalizeDouble(iMA(Symbol(),0,PeriodMA,0,MehtodMA,PriceMA,1)+c_dis,_Digits); //Ðàñ÷òèàåì öåíó äëÿ áàé îðäåðà
   if(typ==SEL)                                                                         // Ïðîâåðèì ÷åìó ðàâåí typ åñëè ðàâåí SEL 1 
      rez=NormalizeDouble(iMA(Symbol(),0,PeriodMA,0,MehtodMA,PriceMA,1)-c_dis,_Digits); //Ðàñ÷òèàåì öåíó äëÿ ñåëë îðäåðà
   return rez;                                                                          // Âåðíåì çíà÷åíèå â çàïðàøèâàåìîå ìåñòî êîäà
  }
//+------------------------------------------------------------------+
int muving:: counter(int typ)                                                           //  çàâèñèìîñòè îò ïîëó÷åííîãî çíà÷åíèÿ typ ïîñ÷èòàåì êîëëè÷åñòâî îðäåðîâ
  {
   int p=0;                                                                             // Îáüÿâèì ëîêàëüíóþ ïåðåìåííóþ äëÿ ïîäñ÷åòà è îáíóëèì å¸
   for(int i=OrdersTotal()-1; i>=0; i--)                                                // Ïåðåáîð îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))                                      // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
         if(OrderMagicNumber()==Magic)                                                  // åñëè ïî íàøåìó ìåäæèêó
            if(OrderSymbol()==_Symbol)                                                  // åñëè ïî íàøåìó ñèìâîëó
               if(OrderType()==typ || typ==-1)                                          // â çàâèñèìîñòè îò typ ïîñ÷èòàåì îðäåðà
                  p++;
   return p;                                                                            // Âåðíåì êîëëè÷åñòâî â çàïðàøèâàåìîå ìåñòî êîäà
  }
//+------------------------------------------------------------------+
bool  muving:: openorders(int typ,double lot)                                           // Ôóíêöèÿ îòêðûòèå îðäåðîâ
  {
   double price=0; int p=0,tik=-2;int dig=0;                                            // Ëîêàëüíûå ïåðåìåííûå è îáíóëåíèå èõ
   if(MarketInfo(_Symbol,MODE_LOTSTEP)==0.01)dig=2;                                     // ïðîâåðêà øàãà ëîòà
   if(MarketInfo(_Symbol,MODE_LOTSTEP)==0.1 )dig=1;                                     // ïðîâåðêà øàãà ëîòà
   c_comm=StringConcatenate(WindowExpertName(),"  ",Magic);                             // Ñîáèðàåì ñòðîêó äëÿ êîììåíòàðèåâ îðäåðîâ (èìÿ ñîâåòíèêà ìåäæèê)
   if(typ==BUY)       price=NormalizeDouble(Ask,_Digits);                               // Â çàâèñèìîñòè îò typ çàïðîñèì öåíó åñëè BUY òî Ask
   else               price=NormalizeDouble(Bid,_Digits);                               // Åñëè íå BUY òî äëÿ SEL çàïðîñèì öåíó Bid
   if(IsTradeAllowed() && lot>0)                                                        // Ïðîâåðèì ñâîáîäåí ëè ïîòîê òîðãîâëè è êîððåêòåí ëè íàø ëîò
      while(p<5)                                                                        // Êîëëè÷åñòâî ïîïûòîê îòêðûòèÿ îðäåðà 5
        {        
         tik=OrderSend(Symbol(),typ,NormalizeDouble(lot,dig),NormalizeDouble(price,_Digits),Slip,0,0,c_comm,Magic,0,clrBlue); // Îòïðàâêà çàïðîñà
         if(tik>=0)            return true;                                             // Åñëè îðäåð ïðèíÿò âûõîäèì èç ôóíêöèè
         else                                                                           // 针֌
           {                                                              
            p++; Print(__FUNCTION__,"_Error_",GetLastError()); Sleep(500);              // Óâåëè÷èì ñ÷åò÷èê ïîïûòîê íà 1 è âûâåäåì êîììåíòàðèé ñ íîìåðîì îøèáêè â æóðíàë, ïîë ñåêóíäû ïîäîæäåì      
           }
        }
   return false;                                                                        //  ñëó÷àå åñëè îðäåð íå îòêðûò âûéäåì ñ íåóäà÷åé èç ôóíêöèè
  }
//+------------------------------------------------------------------+ 
void  muving:: info()                                                                   // Ìåòîä ñáîðà èíôîðìàöèè î îðäåðàõ
  {
   buy.max_price=buy.min_price=sel.max_price=sel.min_price=0;                           // Îáíóëèì ïåðåìåííûå ñòðóêòóðû (Ïðèìåíåíà íîâàÿ âîçìîæíîñòü ÿçûêà)
   sel.max_lot=sel.min_lot=buy.max_lot=buy.min_lot=0;                                   // Îáíóëèì ïåðåìåííûå ñòðóêòóðû (Ïðèìåíåíà íîâàÿ âîçìîæíîñòü ÿçûêà)
   for(int i=OrdersTotal()-1; i>=0; i--)                                                // Ïåðåáîð îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))                                      // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
         if(OrderMagicNumber()==Magic)                                                  // åñëè ïî íàøåìó ìåäæèêó
            if(OrderSymbol()==_Symbol)                                                  // åñëè ïî íàøåìó ñèìâîëó
              {
               if(OrderType()==SEL)                                                     // åñëè îðäåð SELL
                 {
                  if(OrderOpenPrice()>sel.max_price || sel.max_price==0){sel.max_price=OrderOpenPrice();sel.max_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìàêñèìàëüíîãî îðäåðà
                  if(OrderOpenPrice()<sel.min_price || sel.min_price==0){sel.min_price=OrderOpenPrice();sel.min_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìèíèìàëüíîãî îðäåðà
                 }
               if(OrderType()==BUY)                                                     // åñëè îðäåð BUY
                 {
                  if(OrderOpenPrice()<buy.min_price || buy.min_price==0){buy.min_price=OrderOpenPrice();buy.min_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìèíèìàëüíîãî îðäåðà
                  if(OrderOpenPrice()>buy.max_price || buy.max_price==0){buy.max_price=OrderOpenPrice();buy.max_lot=OrderLots();} // Ïîëó÷èì öåíû è ëîòû ìàêñèìàëüíîãî îðäåðà
                 }
              }
  }
//+------------------------------------------------------------------+   
void  muving:: Take(int typ)                                                                   // Ìåòîä óñòàíîâêè Òåéê Ïðîôèòà
  {
   double rez=0;                                                                               // Ïåðåìåííàÿ äëÿ õðàíåíèÿ ðåçóëüòàòà îáíóëèì
   for(int i=OrdersTotal()-1; i>=0; i--)                                                       // Ïåðåáîð îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))                                             // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
         if(OrderMagicNumber()==Magic)                                                         // åñëè ïî íàøåìó ìåäæèêó
            if(OrderSymbol()==_Symbol)                                                         // åñëè ïî íàøåìó ñèìâîëó
              {
               if(OrderType()==typ && typ==BUY)                  rez=OrderOpenPrice()+c_tp;    // Ïîëó÷èì öåíó äëÿ Òåéê Ïðîôèòà äëÿ áàåâ
               if(OrderType()==typ && typ==SEL)                  rez=OrderOpenPrice()-c_tp;    // Ïîëó÷èì öåíó äëÿ Òåéê Ïðîôèòà äëÿ ñåëîâ
               if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(rez,_Digits))    // Ïðîâåðèì íå óñòàíîâëåí ëè óæå Òåéê Ïðîôèò
                  if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(rez,_Digits),0,clrGreen)==true)// Óñòàíîâèì öåíû Òåéê ïðîôèòà åñëè óäàëîñü
                     Print(__FUNCTION__,"  Îðäåð ìîäèôèöèðîâàí Take Profit óñïåøíî");          // Âûâåäåì çàïèñü â æóðíàë
               if(typ==DEL)                                                                    // Åñëè typ ðàâåí DEL -1 
                  if(OrderStopLoss()>0 || OrderTakeProfit()>0)                                 // Åñëè ó îðäåðîâ åñòü ñòîï ëîññ èëè òåéê ïðîôèò óäàëèì èõ
                     if(OrderModify(OrderTicket(),OrderOpenPrice(),0,0,0,clrGreen)==true)      // Óñòàíîâèì íóëè, åñëè óäàëîñü
                        Print(__FUNCTION__,"  Îðäåð ìîäèôèöèðîâàí óñïåøíî");                   // Âûâåäåì çàïèñü â æóðíàë
              }
  }
//+------------------------------------------------------------------+
//| Ñ÷åò÷èê ëîòîâ ïî òèïó                                            |
//+------------------------------------------------------------------+  
double muving:: summlot(int typ)                                                               // Ìåòîä ïîäñ÷åòà ëîòîâ
  {
   double lot=0;                                                                               // Ïåðåìåííàÿ äëÿ õðàíåíèÿ ðåçóëüòàòà îáíóëèì
   for(int i=OrdersTotal()-1; i>=0; i--)                                                       // Ïåðåáîð îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))                                             // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
         if(OrderMagicNumber()==Magic)                                                         // åñëè ïî íàøåìó ìåäæèêó
            if(OrderSymbol()==_Symbol)                                                         // åñëè ïî íàøåìó ñèìâîëó
               if(OrderType()==typ || typ==-1)                                                 //  çàâèñèìîñòè îò typ ïîñ÷èòàåì ëîòû
                  lot+=OrderLots();
   return lot;                                                                                 // Âåðíåì êîëëè÷åñòâî â çàïðàøèâàåìîå ìåñòî êîäà
  }
//+------------------------------------------------------------------+
void muving::awerage(int typ)                                                                  // Ðàñ÷åòà è óñòàíîâêè îáùèõ ñòîïîâ è ïðîôèòîâ
  {
   double buy_price=0,buy_lot=0,sel_price=0,sel_lot=0,rez=0;                                   // Ñîçäàäèì è îáíóëèì ëîêàëüíûå ïåðåìåííûå
   for(int i=OrdersTotal()-1; i>=0; i--)                                                       // Ïåðåáîð îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))                                             // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
         if(OrderMagicNumber()==Magic)                                                         // åñëè ïî íàøåìó ìåäæèêó
            if(OrderSymbol()==_Symbol)                                                         // åñëè ïî íàøåìó ñèìâîëó
              {
               if(OrderType()==BUY)                                                            // Åñëè BUY
                 {
                  buy_price+=OrderOpenPrice()*OrderLots();                                     // Ïîñ÷èòàåì äàííûå
                  buy_lot+=OrderLots();                                                        // Ïîñ÷èòàåì äàííûå
                 }
               if(OrderType()==SEL)                                                            // Åñëè SEL
                 {
                  sel_price+=OrderOpenPrice()*OrderLots();                                     // Ïîñ÷èòàåì äàííûå
                  sel_lot+=OrderLots();                                                        // Ïîñ÷èòàåì äàííûå
                 }
              }
   if(typ==BUY)                                                                                // Åñëè BUY 
      rez=(buy_price-sel_price)/(buy_lot-sel_lot)+c_pp;                                        // Ðàñ÷èòàåì îáùþþ öåíó äëÿ ñòîïîâ è ïðîôèòîâ ñ ó÷åòîì äîïîëíèòåëüíûõ ïóíêòîâ ïðèáûëè ñ_ðð
   if(typ==SEL)                                                                                // Åñëè SEL 
      rez=(sel_price-buy_price)/(sel_lot-buy_lot)-c_pp;                                        // Ðàñ÷èòàåì îáùþþ öåíó äëÿ ñòîïîâ è ïðîôèòîâ ñ ó÷åòîì äîïîëíèòåëüíûõ ïóíêòîâ ïðèáûëè ñ_ðð
   for(int i=OrdersTotal()-1; i>=0; i--)                                                       // Ïåðåáîð îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))                                             // Ðàçáîð îðäåðà íà ñîñòàâíûå ÷àñòè
         if(OrderMagicNumber()==Magic)                                                         // åñëè ïî íàøåìó ìåäæèêó
            if(OrderSymbol()==_Symbol)                                                         // åñëè ïî íàøåìó ñèìâîëó
              {
               if(typ==BUY)                                                                    // Åñëè BUY
                 {
                  if(OrderType()==BUY)                                                         // Åñëè BUY
                     if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(rez,_Digits))     // Ïðîâåðèì íå óñòàíîâëåí ëè óæå Òåéê Ïðîôèò
                        if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(rez,_Digits),0,clrRed)==true)// Óñòàíîâèì öåíû Òåéê ïðîôèòà åñëè óäàëîñü
                           Print(__FUNCTION__,"  Îáùèé ñòîï è ïðîôèò");                        // Âûâåäåì çàïèñü â æóðíàë
                  if(OrderType()==SEL)                                                         // Åñëè SEL                           
                     if(NormalizeDouble(OrderStopLoss(),_Digits)!=NormalizeDouble(rez,_Digits))// Ïðîâåðèì íå óñòàíîâëåí ëè óæå Ñòîï Ëîññ
                        if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(rez,_Digits),OrderTakeProfit(),0,clrRed)==true)// Óñòàíîâèì öåíû Ñòîï Ëîññ åñëè óäàëîñü
                           Print(__FUNCTION__,"  Îáùèé ñòîï è ïðîôèò");                        // Âûâåäåì çàïèñü â æóðíàë
                 }
               if(typ==SEL)                                                                    // Åñëè SEL   
                 {
                  if(OrderType()==SEL)                                                         // Åñëè SEL   
                     if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(rez,_Digits))     // Ïðîâåðèì íå óñòàíîâëåí ëè óæå Òåéê Ïðîôèò
                        if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(rez,_Digits),0,clrRed)==true)// Óñòàíîâèì öåíû Òåéê ïðîôèòà åñëè óäàëîñü
                           Print(__FUNCTION__,"  Îáùèé ñòîï è ïðîôèò");                        // Âûâåäåì çàïèñü â æóðíàë
                  if(OrderType()==BUY)                                                         // Åñëè BUY
                     if(NormalizeDouble(OrderStopLoss(),_Digits)!=NormalizeDouble(rez,_Digits))// Ïðîâåðèì íå óñòàíîâëåí ëè óæå Ñòîï Ëîññ
                        if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(rez,_Digits),OrderTakeProfit(),0,clrRed)==true)// Óñòàíîâèì öåíû Ñòîï Ëîññ åñëè óäàëîñü
                           Print(__FUNCTION__,"  Îáùèé ñòîï è ïðîôèò");                        // Âûâåäåì çàïèñü â æóðíàë
                 }
              }
  }
//+------------------------------------------------------------------+
muving go;                                                                                                                  // Îáüÿâèì êëàññ
re buy;                                                                                                                     // Îáüÿâèì ýêçåìïëÿð ñòðóêòóðû äëÿ áàåâ
re sel;                                                                                                                     // Îáüÿâèì ýêçåìïëÿð ñòðóêòóðû äëÿ ñåëîâ
//+------------------------------------------------------------------+
void OnTick()
  {
  if(WindowExpertName()!="VR---MOVING"){ Comment("Íå ïðàâèëüíîå èìÿ ñèñòåìû ! Ïåðåèìåíóéòå ñèñòåìó â VR---MOVING");return;} // Ïðîâåðèì íå èçìåíåíî ëè èìÿ ñîâåòíèêà
  
   if(go.counter(BUY)==0 && go.counter(SEL)==0)                                                                             // Çîïðîñèì êîëëè÷åñòâî îðäåðîâ èç ìåòîäîâ êëàññà
   lot();                                                                                                                   // Åñëè îðäåðîâ íåò ïåðåðàñ÷èòàåì ëîò
   go.info();                                                                                                               // Âûçîâåì ìåòîä äëÿ çîïîëíåíèÿ äàííûõ î öåíàõ è ëîòàõ
                                                                    
   if((go.counter(BUY)==0 && Ask>=go.prices(BUY)) || (go.counter(BUY)>0 && Ask>=(buy.max_price+go.c_dis)))                  // Ñîçäàäèì óñëîâèå äëÿ áàåâ
     {
      if(Multiplikatorlot>1)                                                                                                // Ïðîâåðèì Multiplikatorlot åñëè áîëüøå 1
         if(go.counter(BUY)>0)worklotbuy=buy.max_lot*Multiplikatorlot;                                                      // Åñëè óæå åñòü îðäåðà òî óâåëè÷èì ëîò â Multiplikatorlot ðàç
      if(go.openorders(BUY,worklotbuy)==true)                                                                               // îòêðîåì îðäåð áàé âûçâàâ ìåòîä èç êëàññà
         Print(__FUNCTION__,"Îðäåð íà ïîêóïêó îòêðûò óñïåøíî ëîò ",worklotbuy);                                             // Âûâåäåì çàïèñü â æóðíàë
     }
   if((go.counter(SEL)==0 && Bid<=go.prices(SEL)) || (go.counter(SEL)>0 && Bid<=(sel.min_price-go.c_dis)))                  // Ñîçäàäèì óñëîâèå äëÿ áàåâ
     {
      if(Multiplikatorlot>1)                                                                                                // Ïðîâåðèì Multiplikatorlot åñëè áîëüøå 1
         if(go.counter(SEL)>0)worklotsel=sel.min_lot*Multiplikatorlot;                                                      // Åñëè óæå åñòü îðäåðà òî óâåëè÷èì ëîò â Multiplikatorlot ðàç
      if(go.openorders(SEL,worklotsel)==true)                                                                               // îòêðîåì îðäåð ñåëë âûçâàâ ìåòîä èç êëàññà
         Print(__FUNCTION__,"Îðäåð íà ïðîäàæó îòêðûò óñïåøíî ëîò ",worklotsel);                                             // Âûâåäåì çàïèñü â æóðíàë
     }
   if(go.counter(BUY)==1 && go.counter(SEL)==0)      go.Take(BUY);                                                          // åñëè åñòü îäèí áàé óñòàíîâèì åìó Òàéê Ïðîôèò âûçâàâ ìåòîä
   if(go.counter(BUY)==0 && go.counter(SEL)==1)      go.Take(SEL);                                                          // åñëè åñòü îäèí ñåë óñòàíîâèì åìó Òàéê Ïðîôèò âûçâàâ ìåòîä
   if(go.counter(BUY)== go.counter(SEL)) go.Take(DEL);                                                                      // Åñëè îðäðîâ áàé è ñåë ðàâíîå êîëëè÷åñòâî è îáîèõ òèïîâ áîëüøå íóëÿ óäàëèì Òåéê Ïðîôèòû è ñòîï ëîññû âûçâàâ ìåòîä
   if(go.counter(BUY)>0 && go.counter(SEL)>0)                                                                               // Åñëè îðäåðîâ îáîèõ òèïîâ áîëüøå íóëÿ
     {
      if(go.summlot(BUY)>go.summlot(SEL))         go.awerage(BUY);                                                          // Åñëè ëîòîâ ïî áàÿì áîëüøå ÷åì ëîòîâ ïî ñåëàì óñòàíîâèì îáùèå òåéêè è ñòîïû âûçâàâ ìåòîä
      if(go.summlot(BUY)<go.summlot(SEL))         go.awerage(SEL);                                                          // Åñëè ëîòîâ ïî ñåëàì áîëüøå ÷åì ëîòîâ ïî áàÿì óñòàíîâèì îáùèå òåéêè è ñòîïû âûçâàâ ìåòîä
     }

  }
//+------------------------------------------------------------------+
void lot()                                                                                                                  // îáû÷íàÿ ôóíêöèÿ äëÿ ïåðåðàñ÷åòîâ ëîòîâ
{  
   double worklot=0;                                                                                                        // Ñîçäàäèì è îáíóëèì ëîêàëüíûå ïåðåìåííûå
   if(Startlot>0 && Risk==0 )                                                                                               // Ïðîâåðèì åñëè ëîòû âûñòàâëåíû è ðèñê ðàâåí 0
   worklot=Startlot;                                                                                                        // ïðèñâîèì ïåðåìåííîé ñòàðòîâûé ëîò
   
   if(Startlot==0 && Risk>0)                                                                                                // Ïðîâåðèì åñëè ëîòû ðàâíû 0 è ðèñê áîëüøå 0
   worklot=NormalizeDouble(AccountBalance()*Risk/100/MarketInfo(_Symbol,MODE_MARGINREQUIRED),2);                            // Ðàñ÷èòàåì ëîò îò ïðîöåíòà îò äåïîçèòà
   if(worklot<MarketInfo(_Symbol,MODE_MINLOT))                                                                              // Ïðîâåðèì íå ìåíüøå ëè íàø ëîò äîïóñòèìîãî áðîêåðîì 
   worklot=MarketInfo(_Symbol,MODE_MINLOT);                                                                                 // Åñëè ìåíüøå òî óñòàíîâèì ìèíèìàëüíî äîïóñòèìûé ëîò
   
   if(worklot>0)                                                                                                            // Åñëè âñå ðàñ÷åòû óäàëèñü
   worklotbuy=worklotsel=worklot;                                                                                           // Ñîõðàíèì çíà÷åíèÿ â ïåðåìåííûõ 
}
//+------------------------------------------------------------------+

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