TRUE Forex

Просмотр кода форекс индикатора !XPS MATHBOARD.mq4

// +----------------------------------------------------------------------------------------+ //
// |    .-._______                           XARD777                          _______.-.    | //
// |---( )_)______)                 Knowledge of the ancients                (______(_( )---| //
// |  (    ()___)                              \¦/                             (___()    )  | //
// |       ()__)                              (o o)                             (__()       | //
// |--(___()_)__________________________oOOo___(_)___oOOo_________________________(_()___)--| //
// |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|____|_____| //
// |                                                                                   2011 | //
// |----------------------------------------------------------------------------------------| //
// |                 File:     !XPS MATHBOARD.mq4                                           | //
// | Programming language:     MQL4                                                         | //
// | Development platform:     MetaTrader 4                                                 | //
// |          End product:     THIS SOFTWARE IS FOR USE ONLY BY XARD777                     | //
// |                                                                                        | //
// |                                                         [Xard777 Proprietory Software] | //
// +----------------------------------------------------------------------------------------+ //

#property indicator_chart_window
//---- input parameters
extern int        Periods        = 32;
extern string     TimeFrame      = "D1";
extern string     Symbols        = "AUDUSD,EURAUD,EURCHF,EURGBP,EURUSD,EURJPY,GBPJPY,GBPUSD,USDCHF";
extern int        StartX         = 100
                , StartY         = 90;
extern  bool      CompactMode    = false;  
              
//----general vars
string            gsPref         = "ay.mmldb."
                , gsaSymbols[]
                , gsaMmlName[]   = {  "-2/8" ,"-1/8" ,"0/8" ,"1/8" , "2/8" , "3/8",  "4/8"
                                    ,  "5/8" , "6/8" ,"7/8" ,"8/8" ,"+1/8" ,"+2/8" };
                
int               giTf           = PERIOD_D1       
                , giNumRow       = 13;
                 
                
color             gsaMmlClr[]    = { Red, Magenta, White, Gold, HotPink, Lime, DodgerBlue   
                                    , Lime, HotPink, Gold, White, Magenta, Red };
                
double            gdaSymMM[][27/*mmline*/];                    
             
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   strToStrArray(Symbols, gsaSymbols);
   
   if (StringLen(TimeFrame) > 0) giTf = getTFByName(TimeFrame);
   
   ArrayResize(gdaSymMM, ArraySize(gsaSymbols));
   
   if (CompactMode) 
   { giNumRow = 2; StartX = MathMax(StartX, 8); }
         
   layout();
      
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
//----
   delObjs();   
//----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if (!secondDiff()) return(0);
   
   int    i, j, k, mmidx;
//----
   double mm[13], hh, ll;
   string sym;
   
   for (i=0; i<ArraySize(gsaSymbols); i++)
   {
      sym = gsaSymbols[i];
      ArrayInitialize(mm, 0.0);
                        
      hh  = iHigh (sym, giTf, iHighest(sym, giTf, MODE_HIGH,  Periods, 0));
      ll  = iLow  (sym, giTf, iLowest (sym, giTf, MODE_LOW,   Periods, 0));
      
      calcMM(ll, hh, mm);
      
      for (j=0; j<13; j++) gdaSymMM[i][j] = mm[j];                                        
   }
   
   display();
   
//----
   return(0);
}
/*---------------------------------------------------------------------*
 *Murrey Math Calculation                                              *
 *v1 = low; v2 = high                                                  *
 *---------------------------------------------------------------------*
 */
void calcMM(double v1, double v2, double &mm[])
{
  //private vars
  int shift=0, i2=0, WorkTime=0, Periods=0;
  double sum=0, fractal=0;
  
  double range=0,  octave=0, mn=0, mx=0, price=0;
  double finalH=0, finalL=0, v45=0;
  double x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,y1=0,y2=0,y3=0,y4=0,y5=0,y6=0;  
  
  //+------------------------------------------------------------------+
  //| Determine which Fractal to use.....                              |
  //+------------------------------------------------------------------+
  if(v2<=250000   && v2>25000)      fractal = 100000;
  if(v2<=25000    && v2>2500)       fractal = 10000;
  if(v2<=2500     && v2>250)        fractal = 1000;
  if(v2<=250      && v2>25)         fractal = 100;
  if(v2<=25       && v2>12.5)       fractal = 12.5;
  if(v2<=12.5     && v2>6.25)       fractal = 12.5;
  if(v2<=6.25     && v2>3.125)      fractal = 6.25;
  if(v2<=3.125    && v2>1.5625)     fractal = 3.125;
  if(v2<=1.5625   && v2>0.390625)   fractal = 1.5625;
  if(v2<=0.390625 && v2>0)          fractal = 0.1953125;
  
  // calculating our octave....      
  range=(v2-v1); 
  sum=MathFloor(MathLog(fractal/range)/MathLog(2));
  octave=fractal *(MathPow(0.5,sum)); 
  mn=MathFloor(v1/octave)*octave;
  if( (mn+octave+(octave*0.3333) )> v2 )/*if( (mn+octave)> v2 )*/
  mx=mn+octave; else mx=mn+(2*octave);
  
   
   
   
   
   
  
  // calculating xx
  //x2
  if(    (v1 >= (3*(mx-mn)/16+mn))  
      && (v2 <= (9*(mx-mn)/16+mn))    ) 
      x2 = mn+(mx-mn)/2; else x2 = 0;
  //x1
  if(    (v1 >= (mn-(mx-mn)/8))     
      && (v2 <= (5*(mx-mn)/8+mn)) 
      && (x2 == 0)                    ) 
      x1 = mn+(mx-mn)/2; else x1=0;
  //x4
  if(    (v1 >= (mn+7*(mx-mn)/16))  
      && (v2 <= (13*(mx-mn)/16+mn))   ) 
      x4 = mn+3*(mx-mn)/4; else x4 = 0;
  //x5
  if(    (v1 >= (mn+3*(mx-mn)/8))   
      && (v2 <= (9*(mx-mn)/8+mn)) 
      && (x4 == 0)                    ) 
      x5 = mx; else x5 = 0;
  //x3
  if( (v1 >= (mn+(mx-mn)/8))     
      && (v2 <= (7*(mx-mn)/8+mn)) 
      && (x1 == 0) 
      && (x2 == 0) 
      && (x4 == 0) 
      && (x5 == 0)                    ) 
      x3 = mn+3*(mx-mn)/4; else x3 = 0;
  //x6 when we have no sbj, du {}
  if((x1+x2+x3+x4+x5)==0) x6 = mx; else x6 = 0;

  finalH=x1+x2+x3+x4+x5+x6;
  // calculating yy
  //y1
  if(x1>0) y1=mn; else y1=0;
  //y2
  if(x2>0) y2=mn+(mx-mn)/4; else y2=0;
  //y3
  if(x3>0) y3=mn+(mx-mn)/4; else y3=0;
  //y4
  if(x4>0) y4=mn+(mx-mn)/2; else y4=0;
  //y5
  if(x5>0) y5=mn+(mx-mn)/2; else y5=0;
  //y6
  if((finalH>0) && ((y1+y2+y3+y4+y5)==0)) y6=mn; else y6=0;

  finalL = y1+y2+y3+y4+y5+y6;  
  
  v45    = (finalH-finalL)/8;

  mm[0]   = (finalL-v45*2); 
  mm[1]   = (finalL-v45); 
  mm[2]   = (finalL); 
  mm[3]   = (finalL+v45); 
  mm[4]   = (finalL+2*v45);
  mm[5]   = (finalL+3*v45); 
  mm[6]   = (finalL+4*v45); 
  mm[7]   = (finalL+5*v45); 
  mm[8]   = (finalL+6*v45); 
  mm[9]   = (finalL+7*v45);
  mm[10]  = (finalL+8*v45); 
  mm[11]  = (finalL+9*v45); 
  mm[12]  = (finalL+10*v45); 
  
}

//+------------------------------------------------------------------+
//| display                                                          |
//+------------------------------------------------------------------+
void display()
{
   int i, j, k, mmidx;
   double hh, ll, cp, cpprev, fix_point, fix_digits;
   string sym, mmn, mmn1, objmmprice1, objmmprice2, objmmarrow, objsymprice, objsympricebg;   
      
   for (i=0; i<ArraySize(gsaSymbols); i++)
   {
      sym = gsaSymbols[i];
      
      cp  = iClose(sym, giTf, 0);
      
      fix_point  = MarketInfo(sym, MODE_POINT);
      fix_digits = MarketInfo(sym, MODE_DIGITS);

      if (fix_point == 0.001 || fix_point == 0.00001 )
      { fix_point *= 10; fix_digits -= 1; }   
            
         
      objsymprice   = gsPref + "0.1." + sym + ".price";
      objsympricebg = gsPref + "0.0." + sym + ".pricebg";
      objmmarrow    = gsPref + "0.1." + sym + ".pricedir";      
      
      //----current price location per symbol... 
      for (j=0; j<13; j++)
      {                                              
         if (j >= 0  && j < 12 && cp > gdaSymMM[i][j] && cp <= gdaSymMM[i][j+1]) 
         { mmidx = j; break; }   
         if (j == 0  && cp < gdaSymMM[i][j]) { mmidx = -1; break; } 
         if (j == 12 && cp > gdaSymMM[i][j]) { mmidx = 13; break; }                                                   
      }//eo j
      
      if (CompactMode) 
      {
         mmn = "lvl0"; mmn1 = "lvl1";    
         objmmprice1 = gsPref + "0.1." + mmn  + "." + sym + ".price";
         objmmprice2 = gsPref + "0.1." + mmn1 + "." + sym + ".price";  
         
         //---mml name
         ObjectSet(gsPref + sym + ".mml0", OBJPROP_COLOR, gsaMmlClr[mmidx]);
         ObjectSetText(gsPref + sym + ".mml0", addChar(gsaMmlName[mmidx]," ", 6));
            
         ObjectSet(gsPref + sym + ".mml1", OBJPROP_COLOR, gsaMmlClr[mmidx+1]);
         ObjectSetText(gsPref + sym + ".mml1", addChar(gsaMmlName[mmidx+1]," ", 6));                   
      }
      
      
      for (j=0; j<giNumRow; j++)
      {
         
         if (CompactMode) { mmn = "lvl" + j; mmn1 = "lvl"+(j+1); }
         else { mmn = gsaMmlName[j]; mmn1 = gsaMmlName[j+1]; }
         
         objmmprice1 = gsPref + "0.1." + mmn  + "." + sym + ".price";
         objmmprice2 = gsPref + "0.1." + mmn1 + "." + sym + ".price";         
                  
         
         if (CompactMode)
         {
            ObjectSetText( objmmprice1, addChar(DoubleToStr(gdaSymMM[i][j+mmidx], fix_digits), " ", 6) );
            ObjectSet( gsPref + "0.0." + mmn  + "." + sym + ".pricebg", OBJPROP_COLOR, gsaMmlClr[j+mmidx]);
            
            if (j == 0 )         
               ObjectSet(objsymprice, OBJPROP_YDISTANCE, ObjectGet(objmmprice1, OBJPROP_YDISTANCE) - 19);
         }
         else //mm price for level gsaMmlName[j]
         {
            ObjectSetText( objmmprice1, addChar(DoubleToStr(gdaSymMM[i][j], fix_digits), " ", 6) );         

            //----obj current price location per symbol...         
            if (j == 0 && mmidx < 0)         
               ObjectSet(objsymprice, OBJPROP_YDISTANCE, ObjectGet(objmmprice1, OBJPROP_YDISTANCE) - 19);         
         
            if (j == 12 && mmidx > 12)            
               ObjectSet(objsymprice, OBJPROP_YDISTANCE, ObjectGet(objmmprice1, OBJPROP_YDISTANCE) + 19);               
                    
            if (j >= 0 && j < 12 && mmidx == j && mmidx >=0 && mmidx < 12)         
               ObjectSet(objsymprice, OBJPROP_YDISTANCE, ObjectGet(objmmprice2, OBJPROP_YDISTANCE) + 19);                       
         }
      }//eo j

      ObjectSetText( objsymprice,     addChar(DoubleToStr(cp, fix_digits), " ", 6) );
      ObjectSetText( objsymprice+"2", addChar(DoubleToStr(cp, fix_digits), " ", 6) );

      ObjectSet( objsymprice+"2", OBJPROP_XDISTANCE, ObjectGet(objsymprice, OBJPROP_XDISTANCE)+1 );
      ObjectSet( objsymprice+"2", OBJPROP_YDISTANCE, ObjectGet(objsymprice, OBJPROP_YDISTANCE) );               
   
      ObjectSet( objsympricebg, OBJPROP_YDISTANCE, ObjectGet(objsymprice, OBJPROP_YDISTANCE)-4 );
      ObjectSet( gsPref+"0.1."+sym+".price.lbullet", OBJPROP_YDISTANCE, ObjectGet(objsympricebg, OBJPROP_YDISTANCE) - 1 );
      ObjectSet( gsPref+"0.1."+sym+".price.rbullet", OBJPROP_YDISTANCE, ObjectGet(objsympricebg, OBJPROP_YDISTANCE) - 1 );
                  
      ObjectSetText( objsymprice,     addChar(DoubleToStr(cp, fix_digits), " ", 6) );
      ObjectSetText( objsymprice+"2", addChar(DoubleToStr(cp, fix_digits), " ", 6) );
      
      ObjectSet( objsymprice+"2", OBJPROP_XDISTANCE, ObjectGet(objsymprice, OBJPROP_XDISTANCE)+1 );
      ObjectSet( objsymprice+"2", OBJPROP_YDISTANCE, ObjectGet(objsymprice, OBJPROP_YDISTANCE) );               
               
      ObjectSet( objsympricebg, OBJPROP_YDISTANCE, ObjectGet(objsymprice, OBJPROP_YDISTANCE)-5 );
      
      //----previous broken mm level - price direciton
      for (k=1; k<Periods; k++)
      {
         cpprev = iClose(sym, giTf, k);

         if (cpprev > gdaSymMM[i][mmidx+1]) //--- down dir
         {
            ObjectSet(objsympricebg, OBJPROP_COLOR, gsaMmlClr[mmidx] ); 
            ObjectSetText( objmmarrow, "К" );  
            ObjectSet(objmmarrow, OBJPROP_YDISTANCE, ObjectGet(objsympricebg, OBJPROP_YDISTANCE) - 15 );   
            ObjectSet(objmmarrow, OBJPROP_COLOR,  gsaMmlClr[mmidx+1] );      
            break;
         }
      
         if (cpprev < gdaSymMM[i][mmidx]) //--- up dir
         {
            ObjectSet(objsympricebg, OBJPROP_COLOR, gsaMmlClr[mmidx+1] ); 
            ObjectSetText( objmmarrow, "И" );
            ObjectSet(objmmarrow, OBJPROP_YDISTANCE, ObjectGet(objsympricebg, OBJPROP_YDISTANCE) + 15 );
            ObjectSet(objmmarrow, OBJPROP_COLOR,  gsaMmlClr[mmidx] );
            break;
         }         
      }//eo k                    
      
   } //eo i

}
//+------------------------------------------------------------------+
//| layout                                                           |
//+------------------------------------------------------------------+
void layout()
{
   int      i, j, k, x, y, xtf, xper, ytf, yper;
   int      symcolwidth   = 65
          , mmcolwidth    = 50
          , mmlineheight  = 38
          , rowheight     = 15
          , mmrowpadding  = 0
          , startytbl
          ;

             
   string   title, sym, mmn;       
         
   
   if (CompactMode)
        title = "     ";
   else title = "     ";// LINES DASHBOARD ("+Periods+"," + TimeFrame +")";
   
   lblCreate("title", StartX, StartY, title, 12, "Lucida Console", Lime);
   
   if (CompactMode)  
   {
      mmcolwidth  = 0;
      StartY   += 18;      
   }
   else
   {
      StartY   += 33;
   }
   
   startytbl = StartY + rowheight;
   x         = StartX + mmcolwidth;
   y         = StartY;
   
   //----symbol
   for (i=0; i<ArraySize(gsaSymbols); i++)
   {
      sym = gsaSymbols[i];
      lblCreate(sym, x+(i*symcolwidth), StartY, sym, 10, "Lucida Console", White);
      //----MML name for compact mode
      if (CompactMode)
      {
         lblCreate(sym+".mml1", x+(i*symcolwidth)+5, StartY+(1.1*rowheight),                  addChar("0/0"," ",  6), 8, "Lucida Console", gsaMmlClr[0]);
         lblCreate(sym+".mml0", x+(i*symcolwidth)+5, StartY+(0.8*rowheight)+(2*mmlineheight), addChar("0/0"," ",  6), 8, "Lucida Console", gsaMmlClr[0]);
      }
   }
   
   x = StartX; 
   if (CompactMode)  y = StartY + (2.0*rowheight);
   else              y = StartY + (2.5*rowheight);
         
   for (i=giNumRow-1 ; i>=0; i--)
   {
      mmn = gsaMmlName[i];
      if (CompactMode) mmn = "lvl" + i;
      //----MML name  for !compact mode     
      if (!CompactMode) lblCreate("0.0."+mmn, x, y, addChar(mmn," ",  4), 9, "Lucida Console", gsaMmlClr[i]);
      
      x += mmcolwidth;
      for (j=0; j<ArraySize(gsaSymbols); j++)
      {
         sym = gsaSymbols[j];
         lblCreate("0.0."+mmn+"."+sym+".pricebg", x+(j*symcolwidth),   y-2,  addChar("", "g", 4), 9, "Webdings",       gsaMmlClr[i]);
         lblCreate("0.1."+mmn+"."+sym+".price",   x+(j*symcolwidth)+5, y+2,  addChar("", "0", 6), 8, "Lucida Console", Black);

         if (i==0) 
         {
            lblCreate("0.1."+sym+".pricedir",      x+(j*symcolwidth)+42, y          , "К",                 14, "Wingdings",       White);
            lblCreate("0.1."+sym+".price",         x+(j*symcolwidth)+0,  y+rowheight, addChar("", "0", 6), 10, "Lucida Console",  C'32,32,32');
            lblCreate("0.1."+sym+".price2",        x+(j*symcolwidth)+0,  y+rowheight, addChar("", "0", 6), 10, "Lucida Console",  Black);
            lblCreate("0.0."+sym+".pricebg",       x+(j*symcolwidth)-8,  y+rowheight, addChar("", "g", 4), 12, "Webdings",        Blue);            
         }
      }
      
      x  = StartX;
      y += mmlineheight; 
   }
}   
//+------------------------------------------------------------------+
//| lblCreate                                                        |
//+------------------------------------------------------------------+
void lblCreate(string name,int x,int y,string text="-",int size=42,
               string font="Arial",color c=CLR_NONE, bool back=false)
{
   
   name = gsPref + name;
   ObjectCreate (name,OBJ_LABEL,0,0,0);
   ObjectSet    (name,OBJPROP_CORNER,0);
   ObjectSet    (name,OBJPROP_XDISTANCE,x);
   ObjectSet    (name,OBJPROP_YDISTANCE,y);
   ObjectSet    (name,OBJPROP_BACK,back);
   ObjectSetText(name,text,size,font,c);
} 
//+------------------------------------------------------------------+
//| strToStrArray                                                    |
//+------------------------------------------------------------------+  
void strToStrArray(string s, string &a[], string delim=",")
{
   int idx, count_idx, last_idx;
   string str;
   for(;;)
   {
      idx = StringFind(s, delim, last_idx);
      
      if (idx >= 0) 
      {
         str = StringTrimRight(StringTrimLeft(StringSubstr(s, last_idx, idx-last_idx)));
         last_idx = idx+1;
      }else      
         str = StringTrimRight(StringTrimLeft(StringSubstr(s, last_idx, StringLen(s)-last_idx)));           
      
      count_idx +=1; 
      ArrayResize(a, count_idx);
      a[count_idx-1] = str;

      if (idx < 0) break;
   }
}  
//+------------------------------------------------------------------+
//| strToIntArray                                                    |
//+------------------------------------------------------------------+  
/*
void strToIntArray(string s, int &a[], string delim=",")
{
   int idx, count_idx, last_idx;
   string str;
   for(;;)
   {
      idx = StringFind(s, delim, last_idx);
      
      if (idx >= 0) 
      {
         str = StringTrimRight(StringTrimLeft(StringSubstr(s, last_idx, idx-last_idx)));
         last_idx = idx+1;
      }else      
         str = StringTrimRight(StringTrimLeft(StringSubstr(s, last_idx, StringLen(s)-last_idx)));           
      
      count_idx +=1; 
      ArrayResize(a, count_idx);
      a[count_idx-1] = StrToInteger(str);

      if (idx < 0) break;
   }
} 
*/
//+------------------------------------------------------------------+
//| addChar                                                          |
//+------------------------------------------------------------------+ 
string addChar(string str, string char, int maxlength, bool atbeginning = true)
{
   int l = maxlength - StringLen(str);
   for (int i=0; i<l; i++)
   {
      if (atbeginning) str = char + str;
      else str = str + char;
   }
      
   return(str);
}
//+------------------------------------------------------------------+
//| secondDiff                                                       |
//+------------------------------------------------------------------+ 
bool secondDiff(int sec = 10)
{
   static datetime lasttime ;
   int diff = TimeCurrent() - lasttime ;

   if (diff > sec )
   {
      lasttime = TimeCurrent();
      return (true);
   }
   
   return (false);
   
}
//+------------------------------------------------------------------+
//| getTFByName function                                             |
//+------------------------------------------------------------------+
int getTFByName(string TFName)
{
  int m;
  if      (TFName == "MN1") m = PERIOD_MN1;
  else if (TFName == "W1" ) m = PERIOD_W1;
  else if (TFName == "D1" ) m = PERIOD_D1;
  else if (TFName == "H4" ) m = PERIOD_D1;
  else if (TFName == "H1" ) m = PERIOD_D1;
  else if (TFName == "M30") m = PERIOD_M30;
  else if (TFName == "M15") m = PERIOD_M15;
  else if (TFName == "M5" ) m = PERIOD_M5;
  else if (TFName == "M1" ) m = PERIOD_M1;
  else m = Period();  
  
  return(m);  

}
//+------------------------------------------------------------------+
//| delObjs function                                                 |
//+------------------------------------------------------------------+
void delObjs(string s="")
{
   int objs = ObjectsTotal();
   string name;
   for(int cnt=ObjectsTotal()-1;cnt>=0;cnt--)
   {
      name=ObjectName(cnt);
      if (StringSubstr(name,0,StringLen(gsPref)) == gsPref) 
      {
         if (StringLen(s) == 0) ObjectDelete(name); 
         else
         {
            if (StringFind(s, name, 0) >=0) ObjectDelete(name); 
         }
      }
   }   
} 
// ------------------------------------------------------------------------------------------ //
//                                     E N D   P R O G R A M                                  //
// ------------------------------------------------------------------------------------------ //
/*                                                         
                                        ud$$$**BILLION$bc.                          
                                    u@**"        PROJECT$$Nu                       
                                  J                ""#$$$$$$r                     
                                 @                       $$$$b                    
                               .F                        ^*3$$$                   
                              :% 4                         J$$$N                  
                              $  :F                       :$$$$$                  
                             4F  9                       J$$$$$$$                 
                             4$   k             4$$$$bed$$$$$$$$$                 
                             $$r  'F            $$$$$$$$$$$$$$$$$r                
                             $$$   b.           $$$$$$$$$$$$$$$$$N                
                             $$$$$k 3eeed$$b    XARD777."$$$$$$$$$                
              .@$**N.        $$$$$" $$$$$$F'L $$$$$$$$$$$  $$$$$$$                
              :$$L  'L       $$$$$ 4$$$$$$  * $$$$$$$$$$F  $$$$$$F         edNc   
             @$$$$N  ^k      $$$$$  3$$$$*%   $F4$$$$$$$   $$$$$"        d"  z$N  
             $$$$$$   ^k     '$$$"   #$$$F   .$  $$$$$c.u@$$$          J"  @$$$$r 
             $$$$$$$b   *u    ^$L            $$  $$$$$$$$$$$$u@       $$  d$$$$$$ 
              ^$$$$$$.    "NL   "N. z@*     $$$  $$$$$$$$$$$$$P      $P  d$$$$$$$ 
                 ^"*$$$$b   '*L   9$E      4$$$  d$$$$$$$$$$$"     d*   J$$$$$r   
                      ^$$$$u  '$.  $$$L     "#" d$$$$$$".@$$    .@$"  z$$$$*"     
                        ^$$$$. ^$N.3$$$       4u$$$$$$$ 4$$$  u$*" z$$$"          
                          '*$$$$$$$$ *$b      J$$$$$$$b u$$P $"  d$$P             
                             #$$$$$$ 4$ 3*$"$*$ $"$'c@@$$$$ .u@$$$P               
                               "$$$$  ""F~$ $uNr$$$^&J$$$$F $$$$#                 
                                 "$$    "$$$bd$.$W$$$$$$$$F $$"                   
                                   ?k         ?$$$$$$$$$$$F'*                     
                                    9$$bL     z$$$$$$$$$$$F                       
                                     $$$$    $$$$$$$$$$$$$                        
                                      '#$$c  '$$$$$$$$$"                          
                                       .@"#$$$$$$$$$$$$b                          
                                     z*      $$$$$$$$$$$$N.                       
                                   e"      z$$"  #$$$k  '*$$.                     
                                .u*      u@$P"      '#$$c   "$$c                   
                        u@$*"""       d$$"            "$$$u  ^*$$b.               
                      :$F           J$P"                ^$$$c   '"$$$$$$bL        
                     d$$  ..      @$#                      #$$b         '#$       
                     9$$$$$$b   4$$                          ^$$k         '$      
                      "$$6""$b u$$                             '$    d$$$$$P      
                        '$F $$$$$"                              ^b  ^$$$$b$       
                         '$W$$$$"                                'b@$$$$"         
                                                                  ^$$$*/

Комментарии к исходному коду форекс индикатора !XPS MATHBOARD.mq4
В целях безопасности и борьбы со спамом в тексте комментариев запрещено размещать html-теги и ссылки. Благодарим за понимание.

  • X
  • 0% загружено
« индикатор !XPS FX OBOS.mq4
индикатор !XPS v6 OSCILLATOR v3.mq4 »