CurrencyDeviation-V1b04_v1

Author: Copyright � 2009, Dima S.
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains open prices of each barSeries array that contains close prices for each bar
Indicators Used
Moving average indicatorMACD HistogramRelative strength index
0 Views
0 Downloads
0 Favorites
CurrencyDeviation-V1b04_v1
//---------------------------------------------------------------------
//	Îáçîð ðûíêà.
//	Ïîçâîëÿåò â îäíîì ýêðàíå âèäåòü äâèæåíèå äî 16 èíñòðóìåíòîâ
//	ïî 4 òàéì-ôðåéìàì.
//---------------------------------------------------------------------

//---------------------------------------------------------------------
//	Èñòîðèÿ âåðñèé:
//---------------------------------------------------------------------
//	30.09.2009ã. - V1b01
//	 - íà÷àëüíàÿ âåðñèÿ;
//
//	01.10.2009ã. - V1b02
//	 - èñïðàâëåíà îøèáêà ïðè èçìåíåíèè â ñïèñêå ÒÔ ( íå óäàëÿëèñü îáúåêòû
//		 äëÿ ñòàðûõ ÒÔ );
//	 - ñäåëàíî îãðàíè÷åíèå ÷èñëà ÒÔ ( äî 4 ) è ÷èñëà âàëþò ( äî 16 ),
//		 îäíîâðåìåííî îòîáðàæàåìûõ â îêíå;
//
//	02.10.2009ã. - V1b03
//	 - äîáàâëåí âûâîä äîïîëíèòåëüíûõ ïîëåé ( ñïðýä, ñòîï-ëåâåë, äíåâíîé
//		 äèàïàçîí, ñðåäíèé äíåâíîé äèàïàçîí );
//
//	13.10.2009ã. - V1b04
//	 - ñäåëàí âûâîä öèôðîâûõ ïîëåé â ãëàâíîå îêíî âìåñòî äîïîëíèòåëüíîãî;
//---------------------------------------------------------------------

//---------------------------------------------------------------------
#property copyright "Copyright © 2009, Dima S."
#property link      "ddd003@mail.ru"
//---------------------------------------------------------------------

//---------------------------------------------------------------------
////#property indicator_chart_window
#property indicator_separate_window
//---------------------------------------------------------------------

//---------------------------------------------------------------------
#property  indicator_minimum	-3.0
#property  indicator_maximum	+3.0
//---------------------------------------------------------------------
#property  indicator_level1		-1.5
#property  indicator_level2		-1.0
#property  indicator_level3		-0.5
#property  indicator_level4		+1.5
#property  indicator_level5		+1.0
#property  indicator_level6		+0.5
#property  indicator_level7		+0.0
//---------------------------------------------------------------------

//---------------------------------------------------------------------
#define INDICATOR_NAME				"CurrencyDeviation"
#define INDICATOR_VERSION			"V1"
#define INDICATOR_SUB_VERSION		"b04"
//---------------------------------------------------------------------

//---------------------------------------------------------------------
#define TREND_UP					1
#define TREND_DN				 -1
#define NO_TREND					0
//---------------------------------------------------------------------

//---------------------------------------------------------------------
//	Âíåøíèå ïîäêëþ÷àåìûå ìîäóëè:
//---------------------------------------------------------------------
#include <stdlib.mqh>														// ñòàíäàðòíàÿ áèáëèîòåêà
#include <lib_display.mqh>											// áèáëèîòåêà äëÿ âûâîäà äàííûõ íà ýêðàí

//---------------------------------------------------------------------
//	Ãëîáàëüíûå ïåðåìåííûå:
//---------------------------------------------------------------------
extern string   CurrencyList="EURUSD; GBPUSD; AUDUSD; NZDUSD; USDCHF; USDCAD; USDJPY; CADJPY; EURJPY; GBPJPY; AUDJPY; NZDJPY; CHFJPY; EURCHF; GBPCHF; GOLD";
extern string   TimeFrameList="H1; H4; D1; W1";
//---------------------------------------------------------------------
extern int      ShowAddingFields=1;                     // âûâîä äîïîëíèòåëüíûõ ïîëåé ( ñïðýä è ò.ä. )
//---------------------------------------------------------------------
extern int      InfoTopShift = 20;                        // ñìåùåíèå ñâåðõó äëÿ âûâîäèìîé íà ýêðàí èíôîðìàöèè
extern int      InfoLeftShift = 5;                        // ñìåùåíèå ñëåâà äëÿ âûâîäèìîé íà ýêðàí èíôîðìàöèè
extern int      FontSize=10;                              // ðàçìåð øðèôòà äëÿ âûâîäà òàáëèöû

//---------------------------------------------------------------------
static string   timeframes[];
static int      timeframes_count=0;
//---------------------------------------------------------------------
static string   currencies[];
static int      currencies_count=0;
//---------------------------------------------------------------------
static int      currency_x[ ] = { 0,   50,  120, 190, 260, 330, 400, 470, 540, 610, 680, 750, 820, 890, 960, 1030, 1110 };
static int      rect_x[ ]     = { 267, 249, 231, 214, 197, 179, 162, 145, 127, 110,  92,  75,  57,  40,  22,    2 };
//---------------------------------------------------------------------
static int      rect_w[ ] = { 1,1, 2, 2, 4 };      // òîëùèíà ëèíèé ïðÿìîóãîëüíèêîâ
static int      rect_s[ ] = { 4, 6, 8, 12, 14 };   // øèðèíà ïðÿìîóãîëüíèêîâ
static color   rect_c_up[ ] = { PaleGreen, Lime, Lime, Green, Lime };
static color   rect_c_dn[ ] = { Pink, Red, Red, Brown, Red };
static bool      rect_back[ ]={ TRUE,FALSE,FALSE,FALSE,FALSE };
static string   columns[]={ "Bid:","Sprd:","StLev:","Hi-Lo:","AvrgD:" };
//---------------------------------------------------------------------

//---------------------------------------------------------------------
int      tf_start_row;
int      bid_row_count;
//---------------------------------------------------------------------
int      is_initialised=0;
int      indicator_wnd;
//---------------------------------------------------------------------
double      current_point_multiplier;                     // ìíîæèòåëü ïðè âûâîäå íà ýêðàí ïóíêòîâ
int         current_digits;
double      current_point;
//---------------------------------------------------------------------
//	Èíèöèàëèçàöèÿ:
//---------------------------------------------------------------------
int init()
  {
   is_initialised=0;
   return(0);
  }
//---------------------------------------------------------------------
//	Äåèíèöèàëèçàöèÿ:
//---------------------------------------------------------------------
int deinit()
  {
   delete_table();
   delete_rects();
   is_initialised=0;

   return(0);
  }

//---------------------------------------------------------------------
//	Âûçûâàåòñÿ ïðè êàæäîì òèêå ïî äàííîìó èíñòðóìåíòó:
//---------------------------------------------------------------------
#define LEFT_SHIFT		260
//---------------------------------------------------------------------
color      price_color;
double   price;
double   price_ma;
//---------------------------------------------------------------------
int start()
  {
   if(is_initialised==0)
     {
      initialise();
      is_initialised=1;
     }

   for(int curr_index=0; curr_index<currencies_count; curr_index++)
     {
      price=MarketInfo(currencies[curr_index],MODE_BID);
      price_ma=iMA(currencies[curr_index],PERIOD_M1,1,0,MODE_EMA,PRICE_CLOSE,1);

      current_digits=(int)MarketInfo(currencies[curr_index],MODE_DIGITS);
      if(current_digits==5 || current_digits==3)
        {
         current_point_multiplier=0.1;
        }
      else
        {
         current_point_multiplier=1.0;
        }
      current_point=MarketInfo(currencies[curr_index],MODE_POINT);

      if(price<price_ma)
         price_color=Red;
      else if(price>price_ma)
         price_color = Lime;
      else if( price == price_ma )
         price_color = Orange;

      set_cell_text(1,curr_index+1,DoubleToStr(price,current_digits),price_color);

      if(ShowAddingFields==1)
        {
         double   R1=0,R5=0,R10=0,R20=0,RAvg=0,AV_Yest,spread,stoplevel,hilo;
         R1=(iHigh(currencies[curr_index],PERIOD_D1,1)-iLow(currencies[curr_index],PERIOD_D1,1))/current_point;
         for(int i=1; i<=5; i++)
           {
            R5=R5+(iHigh(currencies[curr_index],PERIOD_D1,i)-iLow(currencies[curr_index],PERIOD_D1,i))/current_point;
           }
         for(i=1; i<=10; i++)
           {
            R10=R10+(iHigh(currencies[curr_index],PERIOD_D1,i)-iLow(currencies[curr_index],PERIOD_D1,i))/current_point;
           }
         for(i=1; i<=20; i++)
           {
            R20=R20+(iHigh(currencies[curr_index],PERIOD_D1,i)-iLow(currencies[curr_index],PERIOD_D1,i))/current_point;
           }

         RAvg=(R1+R5/5.0+R10/10.0+R20/20.0)/4.0*current_point_multiplier;
         AV_Yest=(iHigh(currencies[curr_index],PERIOD_D1,1)-iLow(currencies[curr_index],PERIOD_D1,1))/current_point*current_point_multiplier;

         spread=current_point_multiplier*MarketInfo(currencies[curr_index],MODE_SPREAD);
         stoplevel=current_point_multiplier*MarketInfo(currencies[curr_index],MODE_STOPLEVEL);
         hilo=(iHigh(currencies[curr_index],PERIOD_D1,0)-iLow(currencies[curr_index],PERIOD_D1,0))*current_point_multiplier/current_point;

         string   adding;
         if(spread>=10.0)
           {
            adding="  ";
           }
         else
           {
            adding="   ";
           }
         set_cell_text(2,curr_index+1,adding+DoubleToStr(spread,1),LemonChiffon);

         if(stoplevel>=100.0)
           {
            adding=" ";
           }
         else if(stoplevel>=10.0)
           {
            adding="  ";
           }
         else
           {
            adding="   ";
           }
         set_cell_text(3,curr_index+1,adding+DoubleToStr(stoplevel,1),LemonChiffon);

         if(hilo>=100.0)
           {
            adding="";
           }
         else if(hilo>=10.0)
           {
            adding="  ";
           }
         else
           {
            adding="   ";
           }
         set_cell_text(4,curr_index+1,adding+DoubleToStr(hilo,1),LightSteelBlue);

         if(RAvg>=100.0)
           {
            adding="";
           }
         else if(RAvg>=10.0)
           {
            adding="  ";
           }
         else
           {
            adding="   ";
           }
         if(RAvg>=AV_Yest)
           {
            set_cell_text(5,curr_index+1,adding+DoubleToStr(RAvg,1),Lime);
           }
         else
           {
            set_cell_text(5,curr_index+1,adding+DoubleToStr(RAvg,1),Red);
           }
        }

      for(int tf_index=0; tf_index<timeframes_count; tf_index++)
        {
         int         tf=get_timeframe_from_string(timeframes[tf_index]);
         double   dev=get_deviation(currencies[curr_index],tf,0);
         if(dev>0.0005)
           {
            set_cell_text(tf_index+1+bid_row_count,curr_index+1,"+"+DoubleToStr(dev,3)+" %",get_number_color(0.0005,dev,PaleGreen,Pink,Silver));
           }
         else if(dev<-0.0005)
           {
            set_cell_text(tf_index+1+bid_row_count,curr_index+1," "+DoubleToStr(dev,3)+" %",get_number_color(0.0005,dev,PaleGreen,Pink,Silver));
           }
         else
           {
            set_cell_text(tf_index+1+bid_row_count,curr_index+1," "+DoubleToStr(0.0,3)+" %",get_number_color(0.0005,dev,PaleGreen,Pink,Silver));
           }

         create_rect(0.0,dev,currencies[curr_index],timeframes[tf_index],rect_x[curr_index],rect_s[tf_index],rect_w[tf_index],get_number_color(0.0005,dev,rect_c_up[tf_index],rect_c_dn[tf_index],Silver),rect_back[tf_index]);
        }
     }

   return(0);
  }
//---------------------------------------------------------------------
//	Óäàëåíèå ãðàôè÷åñêèõ îáúåêòîâ:
//---------------------------------------------------------------------
void delete_rects()
  {
   for(int column=0; column<currencies_count; column++)
     {
      for(int row=0; row<timeframes_count; row++)
        {
         ObjectDelete(currencies[column]+"-"+timeframes[row]);
        }
     }
  }
//---------------------------------------------------------------------
//---------------------------------------------------------------------
void create_rect(double _low,double _high,string _symbol,string _timeframe,int _shift,int _size,int _width,color _color,bool _solid)
  {
   string   name=_symbol+"-"+_timeframe;
   if(ObjectFind(name)!=indicator_wnd)
     {
      ObjectCreate(name,OBJ_RECTANGLE,indicator_wnd,Time[_shift+10],_low,Time[_shift+20],_high);
     }
   else
     {
      ObjectSet(name,OBJPROP_TIME1,Time[_shift+10+(12-_size)/2]);
      ObjectSet(name,OBJPROP_PRICE1,_low);
      ObjectSet(name,OBJPROP_TIME2,Time[_shift+20 -(12-_size)/2]);
      ObjectSet(name,OBJPROP_PRICE2,_high);
     }
   ObjectSet(name,OBJPROP_WIDTH,_width);
   ObjectSet(name,OBJPROP_BACK,_solid);
   ObjectSet(name,OBJPROP_COLOR,_color);
  }
//---------------------------------------------------------------------
//---------------------------------------------------------------------
double get_deviation(string _symbol,int _timeframe,int _shift)
  {
   double iopen= iOpen(_symbol,_timeframe,_shift);
   double iclose = iClose(_symbol,_timeframe,_shift);
   PrintFormat("_symbol=%s _timeframe=%d _shift=%d iopen=%f iclose=%f",_symbol,_timeframe,_shift,iopen,iclose);
   double   dev=100.0 *(iclose-iopen)/iopen;
   return(dev);
  }
//---------------------------------------------------------------------
//	Ïðåîáðàçóåò ÒÔ èç ñòðîêè â ÷èñëî:
//---------------------------------------------------------------------
int get_timeframe_from_string(string _str)
  {
   if(_str=="M1")
     {
      return(PERIOD_M1);
     }

   if(_str=="M5")
     {
      return(PERIOD_M5);
     }

   if(_str=="M15")
     {
      return(PERIOD_M15);
     }

   if(_str=="M30")
     {
      return(PERIOD_M30);
     }

   if(_str=="H1")
     {
      return(PERIOD_H1);
     }

   if(_str=="H4")
     {
      return(PERIOD_H4);
     }

   if(_str=="D1")
     {
      return(PERIOD_D1);
     }

   if(_str=="W1")
     {
      return(PERIOD_W1);
     }

   if(_str=="MN1")
     {
      return(PERIOD_MN1);
     }

   return(PERIOD_D1);
  }
//---------------------------------------------------------------------
//	Íà÷àëüíàÿ èíèöèàëèçàöèÿ:
//---------------------------------------------------------------------
void initialise()
  {
   indicator_wnd=WindowFind(WindowExpertName());
   if(indicator_wnd==-1)
     {
      indicator_wnd=WindowsTotal();
     }

   currencies_count=StringToArrayString(CurrencyList,currencies);
   if(currencies_count>16)
     {
      currencies_count=16;
     }

   timeframes_count=StringToArrayString(TimeFrameList,timeframes);
   if(timeframes_count>4)
     {
      timeframes_count=4;
     }

//	Íàñòðîèì íà÷àëüíûå êîîðäèíàòû ñòðîê:
   if(ShowAddingFields==0)
     {
      tf_start_row=2;
      bid_row_count=1;
     }
   else
     {
      tf_start_row=6;
      bid_row_count=5;
     }

   create_table(0,"CurrencyTable",timeframes_count+1+bid_row_count,currencies_count+1);
   clear_table();

//	Èíèöèàëèçèðóåì ïåðâóþ ñòðîêó ( íàçâàíèÿ èíñòðóìåíòîâ ):
   for(int column=0; column<currencies_count+1; column++)
     {
      set_cell_attributes(0,column,InfoLeftShift+currency_x[column],InfoTopShift,LightCyan,FontSize);
      if(column==0)
        {
         set_cell_text(0,column,"",Black);
        }
      else
        {
         set_cell_text(0,column,currencies[column-1],get_currency_color(currencies[column-1]));
        }
     }

//	Èíèöèàëèçèðóåì âòîðóþ ñòðîêó äëÿ âûâîäà òåêóùèõ êîòèðîâîê:
   for(column=0; column<currencies_count; column++)
     {
      for(int row=0; row<bid_row_count; row++)
        {
         set_cell_attributes(row+1,column+1,InfoLeftShift+currency_x[column+1]+3,InfoTopShift+(row+1)*FontSize*2,LightCyan,FontSize);
        }
     }

//	Èíèöèàëèçèðóåì ïåðâóþ êîëîíêó äëÿ âûâîäà íàçâàíèé ÒÔ:
   for(int tf_index=0; tf_index<timeframes_count; tf_index++)
     {
      set_cell_attributes(tf_index+1+bid_row_count,0,InfoLeftShift+3,InfoTopShift+10+(tf_index+1+bid_row_count)*FontSize*2,LightCyan,FontSize);
      set_cell_text(tf_index+1+bid_row_count,0,"%"+timeframes[tf_index]+":",Silver);
     }

//	Èíèöèàëèçèðóåì ïåðâóþ êîëîíêó äëÿ âûâîäà äîïîëíèòåëüíûõ ïîëåé:
   for(int add_index=0; add_index<bid_row_count; add_index++)
     {
      set_cell_attributes(add_index+1,0,InfoLeftShift+3,InfoTopShift+(add_index+1)*FontSize*2,LightCyan,FontSize);
      set_cell_text(add_index+1,0,columns[add_index],Silver);
     }

//	Èíèöèàëèçèðóåì ÿ÷åéêè äëÿ âûâîäà èíôîðìàöèè ïî èíñòðóìåíòàì:
   for(tf_index=0; tf_index<timeframes_count; tf_index++)
     {
      for(int curr_index=0; curr_index<currencies_count; curr_index++)
        {
         set_cell_attributes(tf_index+1+bid_row_count,curr_index+1,InfoLeftShift+currency_x[curr_index+1],InfoTopShift+10+(tf_index+1+bid_row_count)*FontSize*2,LightCyan,FontSize);
        }
     }
  }
//---------------------------------------------------------------------
//	Ïîëó÷åíèå öâåòà â çàâèñèìîñòè îò íàçâàíèÿ èíñòðóìåíòà:
//---------------------------------------------------------------------
color get_currency_color(string _currency)
  {
   int      i;
   for(i=0; i<currencies_count; i++)
     {
      if(StringFind(currencies[i],_currency)!=-1)
        {
         if(StringFind(_currency,"GOLD")!=-1)
            return(Gold);
         else if(StringFind(_currency,"JPY")!=-1)
                                              return(NavajoWhite);
         else if(StringFind(_currency,"EUR")!=-1)
                                              return(DeepSkyBlue);
         else if(StringFind(_currency,"GBP")!=-1)
                                              return(DeepSkyBlue);
         else if(StringFind(_currency,"QM")!=-1)
                                             return(Brown);
         else if(StringFind(_currency,"ES")!=-1)
                                             return(LightSalmon);
         else if(StringFind(_currency,"NQ")!=-1)
                                             return(LightSalmon);
         else if(StringFind(_currency,"CHF")!=-1)
                                              return(SpringGreen);
         else if(StringFind(_currency,"CAD")!=-1)
                                              return(SpringGreen);
         else if(StringFind(_currency,"AUD")!=-1)
                                              return(GreenYellow);
         else if(StringFind(_currency,"NZD")!=-1)
                                              return(GreenYellow);

         return(Silver);
        }
     }
   return(Silver);
  }
//---------------------------------------------------------------------
//	Ïðîâåðêà íàïðàâëåíèÿ òðåíäà ïî MACD:
//---------------------------------------------------------------------
//	Âîçâðàùàåò:
//		TREND_UP - òðåíä âåðõ;
//		NO_TREND - òðåíä íåîïðåäåëåí;
//		TREND_DN - òðåíä âíèç;
//---------------------------------------------------------------------
int get_trend_direction_MACD(string _symbol,int _timeframe,int _fast_ma_period,int _slow_ma_period)
  {
   HideTestIndicators(true);
   double   macd_value=iMACD(_symbol,_timeframe,_fast_ma_period,_slow_ma_period,1,PRICE_CLOSE,MODE_MAIN,0);
   HideTestIndicators(false);

   if(NormalizeDouble(macd_value,4)>0.0001)
      return(TREND_UP);

   if(NormalizeDouble(macd_value,4)<-0.0001)
      return(TREND_DN);

   return(NO_TREND);
  }
//---------------------------------------------------------------------
//	Ïðîâåðêà íàïðàâëåíèÿ òðåíäà ïî RSI:
//---------------------------------------------------------------------
//	Âîçâðàùàåò:
//		TREND_UP - òðåíä âåðõ;
//		NO_TREND - òðåíä íåîïðåäåëåí;
//		TREND_DN - òðåíä âíèç;
//---------------------------------------------------------------------
int get_trend_direction_RSI(string _symbol,int _timeframe,int _period)
  {
   HideTestIndicators(true);
   double   macd_value=iRSI(_symbol,_timeframe,_period,PRICE_CLOSE,0);
   HideTestIndicators(false);

   if(NormalizeDouble(macd_value,4)>50.0)
      return(TREND_UP);

   if(NormalizeDouble(macd_value,4)<50.0)
      return(TREND_DN);

   return(NO_TREND);
  }
//---------------------------------------------------------------------
//	Ïðîâåðêà íàïðàâëåíèÿ òðåíäà ïî EMA8 è SMA89 (ðûíî÷íûé ðèòì):
//---------------------------------------------------------------------
//	Âîçâðàùàåò:
//		TREND_UP - òðåíä âåðõ;
//		NO_TREND - òðåíä íåîïðåäåëåí;
//		TREND_DN - òðåíä âíèç;
//---------------------------------------------------------------------
int get_trend_direction_MarketRithm(string _symbol,int _timeframe,int _fast_ma_period,int _slow_ma_period)
  {
   int      market_rithm=0;

   HideTestIndicators(true);
   double   price_value=NormalizeDouble(iClose(_symbol,_timeframe,1),Digits);
   double   fast_ma_value = NormalizeDouble( iMA( _symbol, _timeframe, _fast_ma_period, 0, MODE_EMA, PRICE_CLOSE, 1 ), Digits );
   double   slow_ma_value = NormalizeDouble( iMA( _symbol, _timeframe, _slow_ma_period, 0, MODE_SMA, PRICE_CLOSE, 1 ), Digits );
   HideTestIndicators(false);

   if(price_value>slow_ma_value)
     {
      market_rithm++;
     }

   if(fast_ma_value>fast_ma_value)
     {
      market_rithm++;
     }

   if(price_value<slow_ma_value)
     {
      market_rithm--;
     }

   if(fast_ma_value<fast_ma_value)
     {
      market_rithm--;
     }

   if(market_rithm>=1)
      return(TREND_UP);

   if(market_rithm<=-1)
      return(TREND_DN);

   return(NO_TREND);
  }
//---------------------------------------------------------------------
//	Ïðîâåðêà íàïðàâëåíèÿ òðåíäà:
//---------------------------------------------------------------------
//	Âîçâðàùàåò:
//		TREND_UP - òðåíä âåðõ;
//		NO_TREND - òðåíä íåîïðåäåëåí;
//		TREND_DN - òðåíä âíèç;
//---------------------------------------------------------------------
int TrendDetector(int _mode,string _symbol,int _timeframe,int _fast_ma_period,int _slow_ma_period)
  {
   int      trend_direction=NO_TREND;

   switch(_mode)
     {
      case      0:                                                   //  0 - ïî MACD
         trend_direction=get_trend_direction_MACD(_symbol,_timeframe,_fast_ma_period,_slow_ma_period);
         break;

      case      1:                                                   //  1 - ïî ìóâèíãó è òåêóùåìó áàðó ( ïî çàêðûòèþ )
         break;

      case      2:                                                   //  2 - ïî äâóì ìóâèíãàì
         trend_direction=get_trend_direction_MarketRithm(_symbol,_timeframe,_fast_ma_period,_slow_ma_period);
         break;

      case      3:                                                   //  3 - ïî WPR
         break;

      case      4:                                                   //  4 - ïî RSI(14)
         trend_direction=get_trend_direction_RSI(_symbol,_timeframe,14);
         break;

      default:
         break;
     }

   return(trend_direction);
  }
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 10.10.2008                                                     |
//|  Îïèñàíèå : Ïåðåíîñ âåùåñòâåííûõ ÷èñåë èç ñòðîêè â ìàññèâ                  |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    st - ñòðîêà âåùåñòâåííûõ ÷èñåë ÷åðåç òî÷êó ñ çàïÿòîé                    |
//|    ad - ìàññèâ âåùåñòâåííûõ ÷èñåë                                          |
//+----------------------------------------------------------------------------+
//|  Âîçâðàò:                                                                  |
//|    Êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå                                          |
//+----------------------------------------------------------------------------+
int
StringToArrayString(string st,string &ad[],string _delimiter=";")
  {
   int    i=0,np;
   string stp;

   ArrayResize(ad,0);
   while(StringLen(st)>0)
     {
      np=StringFind(st,_delimiter);
      if(np<0)
        {
         stp=st;
         st="";
           } else {
         stp=StringSubstr(st,0,np);
         st=StringSubstr(st,np+1);
        }
      i++;
      ArrayResize(ad,i);
      ad[i-1]=StringTrimLeft(stp);
     }

   return(ArraySize(ad));
  }
//---------------------------------------------------------------------
//	Ïîëó÷åíèå öâåòà â çàâèñèìîñòè îò çíàêà ÷èñëà:
//---------------------------------------------------------------------
color
get_number_color(double _precision,double _number,color _plus,color _minus,color _null)
  {
   if(_number>_precision)
     {
      return(_plus);
     }

   if(_number<(-_precision))
     {
      return(_minus);
     }

   return(_null);
  }
//+------------------------------------------------------------------+

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