Price Data Components
Series array that contains open time of each bar
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
Relative strength indexMoving average indicator
0 Views
0 Downloads
0 Favorites
TENGRI 1.4
//TENGRI ñîâåòíèê òîðãóåò íà ïàðe Åâðî äîëëàð, è Äîëëàð øâåéöàðåö, âåøàòü íà äâå ïàðû ñðàçó, ñ ðàçíûìè MagicNumber = 12345;
//äëÿ ðàáîòû ñîâåòíèêà íå îáõîäèì èíäèêàòîð Silence2_02 äîëæåí íàõîäèòñÿ â ïàïêå èíäèêàòîðîâ, âåøàòü ñîâåòíèê íà Ì1, 
//èíäèêàòîð íà ãðàôèê âåøàòü íå îáÿçàòåëüíî, òîðãóåò ñîâåòíèê â äâå ñòîðîíû ñðàçó
//Äîáàâëåíî íîðìàëèçàöèÿ îðäåðîâ, îòêðûòèå - ïðè ðåèíâåñòèðîâàíèè ïåðâîãî îðäåðà ïî ýêâèòè, íàñòðîéêè ïî ÒÔ òåïåðü ìîæíî
//îïòèìèçèðîâàòü òàéìôðåéìû ïî ïîðÿäêó î÷åðåäíîñòè ÒÔ, âûâåäåíû âñå íàñòðîéêè ïî èíäþêàì âî âíåøíèå ïåðåìåííûå.
  
extern string af4 = " fx.09@mail.ru   novakazahi@yandex.ru";

//òàéìôðåéìû èñ÷èñëÿþòñÿ â ïîðÿäêå î÷åðåäíîñòè, åñëè TF =1; òî ýòî 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1 èòä
//ñïàñèáî ïðîãðàììèñòó runik, çà êóñîê êîäà ïî ÒÔ

extern string a = "-------ïî áàðó 1-ãî îðäåðà -------";
extern int    TF_Op1      =  4;   //òàéìôðåéì äëÿ áàðà, íàïðàâëåíèå äëÿ îòêðûòèÿ 1-ãî îðäåðà, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern string b = "-------Silence 1-ãî îðäåðà -------";
extern int    TFSilence1  =  2;   //òàéìôðåéì 1-ãî îðäåðà èíäèêàòîð Silence, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä       
extern int    PerSilence1 =  11;  //ïåðèîä Silence 1-ãî îðäåðà
extern int    BuffSilence1=  220; //BuffSize Silence 1-ãî îðäåðà
extern int    Sil_Level1  =  80;  //óðîâåíü Level èíäèêàòîðà Silence 1-ãî îðäåðà
extern string ñ = "-------Silence êîëåí -------";
extern int    TFSilence2  =  3;   //òàéìôðåéì êîëåí èíäèêàòîð Silence, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä      
extern int    PerSilence2 =  12;  //ïåðèîä Silence êîëåí
extern int    BuffSilence2=  96;  //BuffSize Silence êîëåí
extern int    Sil_Level2  =  80;  //óðîâåíü Level èíäèêàòîðà Silence êîëåí
extern string k = "------- ÌÀ êîëåí -------";
extern int    TF_MA2      =  3;   //òàéìôðåéì êîëåí èíäèêàòîðà ÌÀ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä       
extern int    Per_MA2     =  30;  //ïåðèîä MA êîëåí
extern string Block = "-------Ïàðàìåòðû -------";

extern double PipStepExponent = 1;   //åñëè íóæåí ïðîãðåññèâíûé øàã

extern double LotExponent1 = 1.70;   //ïðîãðåññèâíûé ëîò äî StepX
extern double LotExponent2 = 2.08;   //ïðîãðåññèâíûé ëîò ïîñëå StepX
extern int    StepX = 5;             //Step=5, äî 5øàãà óâåëè÷èâàåò ïî ýêñïîíåíòî1, ïîñëå 5 ïî ýêñïîíåíòî2

extern double LotSize = 0.01;        //ðàçìåð ëîòà 1-ãî îðäåðà åñëè FixLot = true;
extern bool   FixLot = false;        //true - ôèêñèðîâàííûé ëîò, åñëè false - òî òîãäà ñìîòðèì LotStep
extern int    LotStep = 2000;        //øàã óâåëè÷åíèÿ ëîòà. ò.å. ñêîëüêî â äåïîçèòå LotStep âîñòîëüêî óâåëè÷èòñÿ LotSize. åñëè äåïî 2000 òî ëîò 0.01, åñëè ñòàíåò 4000 òî ëîò 0.02

extern int    PipStep = 10;          //øàã ìåæäó äîëèâêàìè. êàæäûé øàã óâèëè÷èâàåòñÿ â PipStepExponent ðàç åñëè Silence íèæå Level.
extern int    PipStep2 = 20;         //øàã ìåæäó äîëèâêàìè. êàæäûé øàã óâèëè÷èâàåòñÿ â PipStepExponent ðàç åñëè Silence âûøå Level.

extern int    TP = 10;               //òýéêïðîôèò
extern int    MaxTrades=10;          //ìàêñèìàëüíîå êîë-âî êîëåí

extern string  GeneralBlock = "-------Îáùèå ïàðàìåòðû-------";

extern bool    Ostanov=true;         //Âêëþ÷åíèå çàêðûòèÿ Ëîêà âñåõ îðäåðîâ ïî äîñòèæåíèè çàäàííîãî ëèìèòà
extern double  Limit = 50;           //Ëèìèò íà çàêðûòèå îðäåðîâ(â åäèíèöàõ âàëþòû) 

extern int     OpenNewTF = 1;        //òàéìôðåì äëÿ îòêðûòèÿ íîâûõ îðäåðîâ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern int     OpenNextTF = 1;       //òàéìôðåéì äëÿ îòêðûòèÿ êîëåí îðäåðîâ, åñëè 1-Ì1, 2-Ì5, 3-Ì15...èòä
extern int     Povtor = 1;           //òàéìôðåéì äëÿ ïîâòîðà çàïðîñîâ

extern string  d = "ðàáîòà ñîâåòíèêà â ïÿòíèöó äî";
extern bool    CloseFriday=true;        // èñïîëüçîâàòü îãðàíè÷åíèå ïî âðåìåíè â ïÿòíèöó true, íå èñïîëüçîâàòü false
extern int     CloseFridayHour=19;      // âðåìÿ â ïÿòíèöó ïîñëå êîòîðîãî íå âûñòàâëÿåòñÿ ïåðâûé îðäåð

extern string  OfficialVariable = "-------Ñëóæåáíûå ïåðåìåíûå-------";
extern string  InformationOnChartString = "InformationOnChart - îòêëþ÷èòü äëÿ òåñòåðà (çàìåäëÿåò)";
extern bool    InformationOnChart = true; //âûâîäèòü ëè èíôîðìàöèþ íà ãðàôèê, îòêëþ÷èòü äëÿ òåñòåðà (çàìåäëÿåò)
extern int     MagicNumber = 12345;        //ïî ýòîìó íîìåðó ïðîèñõîäèò èäåíòèôèêàöèÿ îðäåðîâ íà ïðåíàäëåæíîñòü ñîâåòíèêó
extern string af5 = "-===Kazakstan treider==- ";
extern int LotDecimal = 0;

datetime timeprevMIN=0;
datetime timeprevMAX=0;
int total, ticket, CountTrades;
int mper[10]={0,1,5,15,30,60,240,1440,10080,43200};
bool LongTradeNew, ShortTradeNew;
double Buy_NextLot,Sell_NextLot, Buy_NewLot, Sell_NewLot, Buy_LastLot, Sell_LastLot, Prof;
string CommentTrades;
//===========================
int init(){
   LotDecimal = LotDecimal();
   return(0);}
//===========================
int deinit(){
   return(0);}
//============= íàïðàâëåíèå =
int ind_iOP;
int ind_iOP2;
//============= Ñòàðò =======
int start(){

//== Áàðû îòêðûòèå öåíû 1-ãî îðäåðà ====================================================   
   double i_OP = iOpen (Symbol(), mper[TF_Op1], 0);  // óñëîâèå íàïðàâëåíèÿ äëÿ ïåðâîãî îðäåðà
   if (i_OP < Bid)    ind_iOP = 1;                   // óñëîâèå äëÿ áàé
	else    if (i_OP > Bid)    ind_iOP = - 1;         // óñëîâèå äëÿ ñåëë
//======================================================================================   
   if (LotDecimal==0) LotDecimal = LotDecimal();

   Information();
   
   LongTradeNew=true;
   ShortTradeNew=true;
   
//========= Çàêðûòèå ëîêîâ ïðè ïðîôèòå =================================================   
if ((Ostanov)&&CountTrades("buy")>0&&CountTrades("sell")>0&&(Balance("buy","Balance")+Balance("sell", "Balance"))>=AccountEquity()/Limit){

   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
    }
    }
//======================================================================================     
   if(timeprevMIN!=iTime(NULL,mper[OpenNewTF],0))
   {      
      ticket=0;
      CountTrades = CountTrades("buy");
      
      if(CloseFriday==true&&DayOfWeek()==5&&TimeCurrent()>=StrToTime(CloseFridayHour+":00"))return(0); // çàïðåò â ïÿòíèöó
     
      if (ind_iOP > 0) // óñëîâèå äëÿ ïåðâîãî îðäåðà áàé åñëè öåíà íèæå óðîâíÿ îòêðûòèÿ áàðà, òî îðäåð áàé íå îòêðûâàåòñÿ
      {
      if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0) < 70.0) {
      if (iCustom(NULL, mper[TFSilence1], "Silence2_02", PerSilence1, BuffSilence1, 2, 0) < Sil_Level1) {
      if (CountTrades==0 && LongTradeNew==true)
      {
         CommentTrades = "TENGRI "+Symbol()+" - Buy "+(CountTrades+1);
         Buy_NewLot = NewLot("buy");
         while(ticket<1)
         {  Prof = Prof("buy");
            Print("Ïîêóïàåì. Íîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Buy_NewLot,2)+", öåíà="+DoubleToStr(Ask,4)+" ïðîôèò="+DoubleToStr(Prof,4)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber);
            ticket = OrderSend(Symbol(),OP_BUY,Buy_NewLot,NormalizeDouble(Ask,Digits),3,0,Prof,CommentTrades,MagicNumber,0,Blue);
            if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);}
            RefreshRates();
            }
          }    
        }    
      } 
      }
      CountTrades = CountTrades("sell");
      if(CloseFriday==true&&DayOfWeek()==5&&TimeCurrent()>=StrToTime(CloseFridayHour+":00"))return(0); //çàïðåò â ïÿòíèöó
     
      if (ind_iOP < 0) // óñëîâèå äëÿ ïåðâîãî îðäåðà ñåëë åñëè öåíà âûøå óðîâíÿ îòêðûòèÿ áàðà, òî îðäåð ñåëë íå îòêðûâàåòñÿ
      {
      if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 0) > 30.0) {
      if (iCustom(NULL, mper[TFSilence1], "Silence2_02", PerSilence1, BuffSilence1, 2, 0) < Sil_Level1) {
      if (CountTrades==0 && ShortTradeNew==true)  
      {
         CommentTrades = "TENGRI "+Symbol()+" - Sell "+(CountTrades+1);
         Sell_NewLot = NewLot("sell");
         while(ticket<1)
         {  Prof = Prof("sell");
            Print("Ïðîäàåì. Íîâûé. Ïàðàìåòðû. ñèìâîë="+Symbol()+", ëîò="+DoubleToStr(Sell_NewLot,2)+", öåíà="+DoubleToStr(Bid,4)+" ïðîôèò="+DoubleToStr(Prof,4)+", êîììåíò="+CommentTrades+" ìàäæèê="+MagicNumber);
            ticket = OrderSend(Symbol(),OP_SELL,Sell_NewLot,NormalizeDouble(Bid,Digits),3,0,Prof,CommentTrades,MagicNumber,0,Red);
            if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} 
         RefreshRates();
         }
       }
     } 
   }
  }
  timeprevMIN=iTime(NULL,mper[OpenNewTF],0);
  }    
   
   if(timeprevMAX!=iTime(NULL,mper[OpenNextTF],0))
   {  
      ticket=0;
      CountTrades = CountTrades("buy");
      if (CountTrades>0 && NextOrder("buy"))
      {
         CommentTrades = "TENGRI "+Symbol()+" - Buy "+(CountTrades+1);
         Buy_NextLot = NextLot("buy");
         while(ticket<1)
         {
            Print("Ïîêóïàåì. Ñëåäóþùèé. Ïàðàìåòðû. ñèìâîë:"+Symbol()+", ëîò="+DoubleToStr(Buy_NextLot,2)+", öåíà ="+DoubleToStr(Ask,4)+", êîììåíò="+CommentTrades+", ìàäæèê="+MagicNumber);
            ticket = OrderSend(Symbol(),OP_BUY,Buy_NextLot,NormalizeDouble(Ask,Digits),3,0,0,CommentTrades,MagicNumber,0,Blue);
            if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïîêóïêè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} else Ñorrect("buy");
         RefreshRates();
         }   
         
         
      } 
      CountTrades = CountTrades("sell"); 
      if (CountTrades>0 && NextOrder("sell"))
      {
         CommentTrades = "TENGRI "+Symbol()+" - Sell "+(CountTrades+1);
         Sell_NextLot = NextLot("sell");
         while(ticket<1)
         {
            Print("Ïðîäàåì. Ñëåäóþùèé. Ïàðàìåòðû. ñèìâîë:"+Symbol()+", ëîò="+DoubleToStr(Sell_NextLot,2)+", öåíà="+DoubleToStr(Bid,4)+", êîììåíò="+CommentTrades+", ìàäæèê="+MagicNumber);
            ticket = OrderSend(Symbol(),OP_SELL,Sell_NextLot,NormalizeDouble(Bid,Digits),3,0,0,CommentTrades,MagicNumber,0,Red);
            if(ticket<1) {Print("Îøèáêà: ",GetLastError()," Íîâàÿ ïîïûòêà ïðîäàæè ÷åðåç "+(Povtor*60)+" ñåêóíä");Sleep(Povtor*60*1000);} else Ñorrect("sell");
         RefreshRates();
         }   
       }
      timeprevMAX=iTime(NULL,mper[OpenNextTF],0);
   }
  
   return(0);
  }
//+------------------------------------------------------------------+
double Prof(string OrdType)
{   double Zena=0;
    if (TP<MarketInfo(Symbol(),MODE_STOPLEVEL)) TP=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
    if (OrdType=="buy")Zena=Ask+TP*Point;
    if (OrdType=="sell")Zena=Bid-TP*Point;
    return (Zena);
}
//+------------------------------------------------------------------+
void Ñorrect(string OrdType) 
{
   int trade;
   double TP_all;
   double AveragePrice;
   
   AveragePrice = AveragePrice(OrdType);
   
   for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
         //-----
            if (OrdType=="buy")
            {
               if(OrderType()==OP_BUY)
               {
                  TP_all = AveragePrice+TP*Point;
                  if (OrderTakeProfit() != TP_all)
                  {
                     Print("Ìîäèôèöèðóåì ïîêóïêó. Áåçóáûòîê = "+DoubleToStr(AveragePrice,4)+", ÒÐ = "+DoubleToStr(TP,4)+" Íîâûé óðîâåíü = "+DoubleToStr(TP_all,4));
                     OrderModify(OrderTicket(), AveragePrice, OrderStopLoss(), TP_all, 0, Yellow);
                  }
               }   
            }
            //----
            if (OrdType=="sell")
            {
               if(OrderType()==OP_SELL)
               {
                  TP_all = AveragePrice-TP*Point;
                  if (OrderTakeProfit() != TP_all)
                  {
                     Print("Ìîäèôèöèðóåì ïðîäàæó. Áåçóáûòîê = "+DoubleToStr(AveragePrice,4)+", ÒÐ = "+DoubleToStr(TP,4)+" Íîâûé óðîâåíü = "+DoubleToStr(TP_all,4));
                     OrderModify(OrderTicket(), AveragePrice, OrderStopLoss(), TP_all, 0, Yellow);
                  }
 
               }   
            }
         //----   
         }   
    }        
} 

//+------------------------------------------------------------------+
//Âû÷èñëÿåì ðàçìåð ïåðâîãî ëîòà
double NewLot(string OrdType)
{
   double tLots;
   double minlot = MarketInfo(Symbol(), MODE_MINLOT);
   
   if (OrdType=="buy")
   {
      if (FixLot) tLots = LotSize; else tLots = NormalizeDouble(LotSize * NormalizeDouble(AccountEquity()/LotStep,0), LotDecimal); 
      }
   if (OrdType=="sell")
   {
      if (FixLot) tLots = LotSize; else tLots = NormalizeDouble(LotSize * NormalizeDouble(AccountEquity()/LotStep,0), LotDecimal);  
      } 
   if(tLots < minlot) tLots = minlot; 
            
   return(tLots);
   }
//+------------------------------------------------------------------+
//Âû÷èñëÿåì ðàçìåð ñëåäóþùåãî ëîòà
double NextLot(string OrdType){
   double tLots;
   int st_P=CountTrades(OrdType);
   if (OrdType=="buy"){
    if (st_P >= StepX) tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent2, LotDecimal);
      else tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent1, LotDecimal);     
      }
   if (OrdType=="sell"){
    if (st_P >= StepX) tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent2, LotDecimal);
      else tLots = NormalizeDouble(FindLastOrder(OrdType, "Lots") * LotExponent1, LotDecimal);
   }
      return(tLots);
      }
      

//+------------------------------------------------------------------+
//Ïðîâåðÿåì íóæíî ëè îòêðûâàòü ñëåäóþùèé îðäåð  
bool NextOrder(string OrdType)
{
   double MA_30 = iMA(Symbol(), mper[TF_MA2], Per_MA2, 0, 0, PRICE_CLOSE, 0); 
   bool NextOrd = false;
   int PipStepEX;
   if (OrdType=="buy"&&MA_30<Bid)
   {
     if(iCustom(NULL, mper[TFSilence2], "Silence2_02", PerSilence2, BuffSilence2, 2, 0) < Sil_Level2) 
      PipStepEX = NormalizeDouble(PipStep*MathPow(PipStepExponent,CountTrades(OrdType)),0);
      else PipStepEX = NormalizeDouble(PipStep2*MathPow(PipStepExponent,CountTrades(OrdType)),0);
      if (FindLastOrder(OrdType, "Price") - Ask >= PipStepEX * Point && CountTrades(OrdType)<MaxTrades)
      {
         {
            NextOrd = TRUE;
         }      
      }   
   }

   if (OrdType=="sell"&&MA_30>Bid)
   {
    if(iCustom(NULL, mper[TFSilence2], "Silence2_02", PerSilence2, BuffSilence2, 2, 0) < Sil_Level2)
      PipStepEX = NormalizeDouble(PipStep*MathPow(PipStepExponent,CountTrades(OrdType)),0);
      else PipStepEX = NormalizeDouble(PipStep2*MathPow(PipStepExponent,CountTrades(OrdType)),0);
      if (Bid - FindLastOrder(OrdType, "Price") >= PipStepEX * Point && CountTrades(OrdType)<MaxTrades)
      {
         {
            NextOrd = TRUE;
         }      
      }   
   }

   return(NextOrd);
}  

//+------------------------------------------------------------------+
//Âîçâðàùàåò öåíó èëè ëîò ïîñëåäíåãî îðäåðà
double FindLastOrder(string OrdType, string inf)
{
   double OrderPrice;
   double LastLot;
   int trade, oldticketnumber=0;
   
   for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
         //----
            if (OrdType=="buy")
            {
               if(OrderType()==OP_BUY)
               {
                  if(OrderTicket()>oldticketnumber)
                  {
                     OrderPrice=OrderOpenPrice();
                     LastLot = OrderLots();
                     oldticketnumber=OrderTicket();
                  }
                }
             }
             //---- 
            if (OrdType=="sell")
            {
               if(OrderType()==OP_SELL)
               {
                  if(OrderTicket()>oldticketnumber)
                  {
                     OrderPrice=OrderOpenPrice();
                     LastLot = OrderLots();
                     oldticketnumber=OrderTicket();
                  }
                }
             }
         //----    
   }
}
if (inf=="Price") return(OrderPrice);
if (inf=="Lots")  return(LastLot);
}
//+------------------------------------------------------------------+
//Âîçâðàùàåò êîëè÷åñòâî îðäåðîâ
int CountTrades(string OrdType)
{
   int count=0;
   int trade;
   for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
      OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
      //----
         if (OrdType == "buy")
         {
            if(OrderType()==OP_BUY) count++;
         }
         //----
         if (OrdType == "sell")
         {
            if(OrderType()==OP_SELL) count++;
         }
      //----
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
//Âîçâðàùàåò ñðåäíþþ öåíó îòêðûòûõ ïîç ïî íàïðàâëåíèþ
double AveragePrice(string OrdType)
{
   double AveragePrice=0;
   double Count=0;
   int trade;
   for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
      //-----
         if (OrdType == "buy")
         {
            if(OrderType()==OP_BUY)
            {
               AveragePrice=AveragePrice+OrderOpenPrice()*OrderLots();
               Count=Count + OrderLots();
            }
         }
         //----
         if (OrdType == "sell")
         {
            if(OrderType()==OP_SELL)
            {
               AveragePrice=AveragePrice+OrderOpenPrice()*OrderLots();
               Count=Count + OrderLots();
            }
         }
      //----   
      }   
   }
   AveragePrice=NormalizeDouble(AveragePrice/Count, Digits);
      
  return(AveragePrice);    
}
//----------------------------------------------------------------------
//Ïðîöåäóðà âûâîäèò èíôîðìàöèþ ïî òîðãàì:
void Information()
{
   if (InformationOnChart)
   {
      Comment("" 
      //+ "\n"                         
      + "                              TENGRI MARTINGEIL fx.09@mail.ru "+Symbol()                         
      + "\n"                         
      + "                              ------------------------------------------------"                         
      + "\n"                         
      + "                              Broker: " + AccountCompany()+". AccountLeverage: 1:"+ DoubleToStr(AccountLeverage(), 0)                         
      + "\n"  
      + "                              ------------------------------------------------"
      + "\n"
      + "                              Buy open ->  "+CountTrades("buy")+"  MaxTrades ->  "+MaxTrades
      + "\n"
      + "                              Open balance: " + DoubleToStr(Balance("buy", "Balance"), 2)
      + "\n"
      + "                              Open lot: " + DoubleToStr(Balance("buy", "Lot"), 2)
      + "\n"
      + "                              ------------------------------------------------"
      + "\n"
      + "                              Sell open ->  "+CountTrades("sell")+"  MaxTrades ->  "+MaxTrades
      + "\n"
      + "                              Open balance: " + DoubleToStr(Balance("sell", "Balance"), 2)
      + "\n"
      + "                              Open lot: " + DoubleToStr(Balance("sell", "Lot"), 2)
      + "\n"
      + "                              ------------------------------------------------"
      + "\n"
      + "                              Close Lock:  " + DoubleToStr ((AccountEquity() / (Limit)), 2)
      + "\n"
      + "                              Balance Buy && Sell: " + DoubleToStr((Balance("buy", "Balance")+Balance("sell", "Balance")), 2)
      );
      
   }
}
//---------------------------------------------------
//ôóíêöèÿ ðàñ÷åòà èíôîðìàöèè ïî òåêóùèì òîðãàì
double Balance(string OrdType, string inf)
{
   double result=0;
   int trade;
   for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber) continue;
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
      //-----
         if (OrdType == "buy")
         {
            if(OrderType()==OP_BUY)
            {
               if (inf=="Balance") result=result+OrderProfit()-OrderSwap()-OrderCommission();
               if (inf=="Lot")     result=result+OrderLots();
            }
         }
         //----
         if (OrdType == "sell")
         {
            if(OrderType()==OP_SELL)
            {
               if (inf=="Balance") result=result+OrderProfit()-OrderSwap()-OrderCommission();
               if (inf=="Lot")     result=result+OrderLots();
            }
         }
      //----   
      }   
   }
      
  return(result);    
}
//---------------------------------------------------
double LotDecimal()
{
   double steplot=MarketInfo(Symbol(), MODE_LOTSTEP);
   int LotsDigits = MathCeil(MathAbs(MathLog(steplot)/MathLog(10)));

return(LotsDigits);
}
//===================================================
//Çàêðûòèå âñåõ ïîçèöèé

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