ColorAutoFibAutoTrend

Author: Copyright © 2016, zzuegg
Price Data Components
0 Views
0 Downloads
0 Favorites
ColorAutoFibAutoTrend
ÿþ//+------------------------------------------------------------------+ 

//|                                        ColorAutoFibAutoTrend.mq5 | 

//|                                         Copyright © 2016, zzuegg | 

//|                                       when-money-makes-money.com | 

//+------------------------------------------------------------------+ 

#property copyright "Copyright © 2016, zzuegg"

#property link "when-money-makes-money.com" 

//---- =><5@ 25@A88 8=48:0B>@0

#property version   "1.00"

//+------------------------------------------------+ 

//|  0@0<5B@K >B@8A>2:8 8=48:0B>@0                |

//+------------------------------------------------+ 

//---- >B@8A>2:0 8=48:0B>@0 2 3;02=>< >:=5

#property indicator_chart_window 

#property indicator_buffers 0

#property indicator_plots   0

//+----------------------------------------------+ 

//|  >1JO2;5=85 :>=AB0=B                         |

//+----------------------------------------------+

#define RESET     0            // >=AB0=B0 4;O 2>72@0B0 B5@<8=0;C :><0=4K =0 ?5@5AG5B 8=48:0B>@0

#define FIBO_LINES_TONAL 11    // >=AB0=B0 4;O :>;8G5AB20 C@>2=59 D81>

//+------------------------------------------------+ 

//|  E>4=K5 ?0@0<5B@K 8=48:0B>@0                  |

//+------------------------------------------------+ 

//---- E>4=K5 ?0@0<5B@K 837030

input ENUM_TIMEFRAMES Timeframe=PERIOD_H6;             // "09<D@59< 837030 4;O @0AG5B0 8=48:0B>@0

input int ExtDepth=12;

input int ExtDeviation=5;

input int ExtBackstep=3;

//---- =0AB@>9:8 287C0;L=>3> >B>1@065=8O 8=48:0B>@0

input string Sirname="AutoFibAutoTrend";  // 0720=85 4;O <5B>: 8=48:0B>@0

input bool ShowFib=true;

input color   FiboColor=clrGray;            //&25B $81>

//----

input double  FiboLevel1 = 0.0;             //7=0G5=85 D81>C@>2=O 1

input color  Color_Level1 = clrRed;         //F25B D81>C@>2=O 1

input double  FiboLevel2 = 0.236;           //7=0G5=85 D81>C@>2=O 2

input color  Color_Level2 = clrDarkViolet;  //F25B D81>C@>2=O 2

input double  FiboLevel3 = 0.382;           //7=0G5=85 D81>C@>2=O 3

input color  Color_Level3 = clrOrange;      //F25B D81>C@>2=O 3

input double  FiboLevel4 = 0.500;           //7=0G5=85 D81>C@>2=O 4

input color  Color_Level4 = clrMagenta;     //F25B D81>C@>2=O 4

input double  FiboLevel5 = 0.618;           //7=0G5=85 D81>C@>2=O 5

input color  Color_Level5 = clrBlue;        //F25B D81>C@>2=O 5

input double  FiboLevel6 = 1.000;           //7=0G5=85 D81>C@>2=O 6

input color  Color_Level6 = clrRed;         //F25B D81>C@>2=O 6

input double  FiboLevel7 = 1.236;           //7=0G5=85 D81>C@>2=O 7

input color  Color_Level7 = clrDarkViolet;  //F25B D81>C@>2=O 7

input double  FiboLevel8 = 1.382;           //7=0G5=85 D81>C@>2=O 8

input color  Color_Level8 = clrOrange;      //F25B D81>C@>2=O 8

input double  FiboLevel9 = 1.500;           //7=0G5=85 D81>C@>2=O 9

input color  Color_Level9 = clrMagenta;     //F25B D81>C@>2=O 9

input double  FiboLevel10 = 1.618;          //7=0G5=85 D81>C@>2=O 10

input color  Color_Level10 = clrBlue;       //F25B D81>C@>2=O 10

input double  FiboLevel11 = 2.000;          //7=0G5=85 D81>C@>2=O 11

input color  Color_Level11 = clrRed;        //F25B D81>C@>2=O 11

//----

input bool ShowFibFan=true;

input color FibFanColor=clrMediumSeaGreen;

input uint FibFanSize=1;

//----

input bool ShowTrend=true;

input color TrendColor=clrBlue;

input uint TrendSize=5;

//+-----------------------------------+

//---- >1JO2;5=85 F5;>G8A;5==KE ?5@5<5==KE 4;O E5=4;>2 8=48:0B>@>2

int Ind_Handle;

//---- >1JO2;5=85 F5;>G8A;5==KE ?5@5<5==KE =0G0;0 >BAG5B0 40==KE

int min_rates_total;

string fib1="";

string trend="";

string fibf1="";

//---- <0AA82K ?5@5<5==KE 4;O ;8=89 $81>

double Values[FIBO_LINES_TONAL];

color Colors[FIBO_LINES_TONAL];

ENUM_LINE_STYLE Styles[FIBO_LINES_TONAL];

int Widths[FIBO_LINES_TONAL];

//+------------------------------------------------------------------+

//| >;CG5=85 B09<D@59<0 2 2845 AB@>:8                               |

//+------------------------------------------------------------------+

string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)

  {return(StringSubstr(EnumToString(timeframe),7,-1));}

//+------------------------------------------------------------------+ 

//| C>7405B "#@>2=8 $81>=0GG8" ?> 7040==K< :>>@48=0B0<               | 

//+------------------------------------------------------------------+ 

bool FiboLevelsCreate(const long            chart_ID=0,        // ID 3@0D8:0 

                      const string          name="FiboLevels", // 8<O >1J5:B0 

                      const int             sub_window=0,      // =><5@ ?>4>:=0  

                      datetime              time1=0,           // 2@5<O ?5@2>9 B>G:8 

                      double                price1=0,          // F5=0 ?5@2>9 B>G:8 

                      datetime              time2=0,           // 2@5<O 2B>@>9 B>G:8 

                      double                price2=0,          // F5=0 2B>@>9 B>G:8 

                      const color           clr=clrRed,        // F25B >1J5:B0 

                      const ENUM_LINE_STYLE style=STYLE_SOLID, // AB8;L ;8=88 >1J5:B0 

                      const int             width=1,           // B>;I8=0 ;8=88 >1J5:B0 

                      const bool            back=false,        // =0 704=5< ?;0=5 

                      const bool            selection=true,    // 2K45;8BL 4;O ?5@5<5I5=89 

                      const bool            ray_left=false,    // ?@>4>;65=85 >1J5:B0 2;52> 

                      const bool            ray_right=false,   // ?@>4>;65=85 >1J5:B0 2?@02> 

                      const bool            hidden=true,       // A:@KB 2 A?8A:5 >1J5:B>2 

                      const long            z_order=0)         // ?@8>@8B5B =0 =060B85 <KHLN 

  {

//--- CAB0=>28< :>>@48=0BK B>G5: ?@82O7:8, 5A;8 >=8 =5 7040=K 

   ChangeFiboLevelsEmptyPoints(time1,price1,time2,price2);

//--- A1@>A8< 7=0G5=85 >H81:8 

   ResetLastError();

//--- A>74048< "#@>2=8 $81>=0GG8" ?> 7040==K< :>>@48=0B0< 

   if(!ObjectCreate(chart_ID,name,OBJ_FIBO,sub_window,time1,price1,time2,price2))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL A>740BL \"#@>2=8 $81>=0GG8\"! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CAB0=>28< F25B 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

//--- CAB0=>28< AB8;L ;8=88 

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

//--- CAB0=>28< B>;I8=C ;8=88 

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< 2K45;5=8O >1J5:B0 4;O ?5@5<5I5=89 

//--- ?@8 A>740=88 3@0D8G5A:>3> >1J5:B0 DC=:F859 ObjectCreate, ?> C<>;G0=8N >1J5:B 

//--- =5;L7O 2K45;8BL 8 ?5@5<5I0BL. =CB@8 65 MB>3> <5B>40 ?0@0<5B@ selection 

//--- ?> C<>;G0=8N @025= true, GB> ?>72>;O5B 2K45;OBL 8 ?5@5<5I0BL MB>B >1J5:B 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?@>4>;65=8O >B>1@065=8O >1J5:B0 2;52> 

   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?@>4>;65=8O >B>1@065=8O >1J5:B0 2?@02> 

   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2 

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

//--- CAB0=>28 ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

//--- CA?5H=>5 2K?>;=5=85 

   return(true);

  }

//+------------------------------------------------------------------+ 

//| 0405B :>;8G5AB2> C@>2=59 8 8E ?0@0<5B@K                         | 

//+------------------------------------------------------------------+ 

bool FiboLevelsSet(int             levels,            // :>;8G5AB2> ;8=89 C@>2=O 

                   double          &values[],         // 7=0G5=8O ;8=89 C@>2=O 

                   color           &colors[],         // F25B ;8=89 C@>2=O 

                   ENUM_LINE_STYLE &styles[],         // AB8;L ;8=89 C@>2=O 

                   int             &widths[],         // B>;I8=0 ;8=89 C@>2=O 

                   const long      chart_ID=0,        // ID 3@0D8:0 

                   const string    name="FiboLevels") // 8<O >1J5:B0 

  {

//--- ?@>25@8< @07<5@K <0AA82>2 

   if(levels!=ArraySize(colors) || levels!=ArraySize(styles) ||

      levels!=ArraySize(widths) || levels!=ArraySize(widths))

     {

      Print(__FUNCTION__,": 4;8=0 <0AA820 =5 A>>B25BAB2C5B :>;8G5AB2C C@>2=59, >H81:0!");

      return(false);

     }

//--- CAB0=>28< :>;8G5AB2> C@>2=59 

   ObjectSetInteger(chart_ID,name,OBJPROP_LEVELS,levels);

//--- CAB0=>28< A2>9AB20 C@>2=59 2 F8:;5 

   for(int i=0;i<levels;i++)

     {

      //--- 7=0G5=85 C@>2=O 

      ObjectSetDouble(chart_ID,name,OBJPROP_LEVELVALUE,i,values[i]);

      //--- F25B C@>2=O 

      ObjectSetInteger(chart_ID,name,OBJPROP_LEVELCOLOR,i,colors[i]);

      //--- AB8;L C@>2=O 

      ObjectSetInteger(chart_ID,name,OBJPROP_LEVELSTYLE,i,styles[i]);

      //--- B>;I8=0 C@>2=O 

      ObjectSetInteger(chart_ID,name,OBJPROP_LEVELWIDTH,i,widths[i]);

      //--- >?8A0=85 C@>2=O 

      ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,i,DoubleToString(100*values[i],1));

     }

//--- CA?5H=>5 2K?>;=5=85 

   return(true);

  }

//+------------------------------------------------------------------+ 

//| 5@5<5I05B B>G:C ?@82O7:8 "#@>2=59 $81>=0GG8"                    | 

//+------------------------------------------------------------------+ 

bool FiboLevelsPointChange(const long   chart_ID=0,        // ID 3@0D8:0 

                           const string name="FiboLevels", // 8<O >1J5:B0 

                           const int    point_index=0,     // =><5@ B>G:8 ?@82O7:8 

                           datetime     time=0,            // :>>@48=0B0 2@5<5=8 B>G:8 ?@82O7:8 

                           double       price=0)           // :>>@48=0B0 F5=K B>G:8 ?@82O7:8 

  {

//--- 5A;8 :>>@48=0BK B>G:8 =5 7040=K, B> ?5@5<5I05< 55 =0 B5:CI89 10@ A F5=>9 Bid 

   if(!time)

      time=TimeCurrent();

   if(!price)

      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);

//--- A1@>A8< 7=0G5=85 >H81:8 

   ResetLastError();

//--- ?5@5<5AB8< B>G:C ?@82O7:8 

   if(!ObjectMove(chart_ID,name,point_index,time,price))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL ?5@5<5AB8BL B>G:C ?@82O7:8! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CA?5H=>5 2K?>;=5=85 

   return(true);

  }

//+------------------------------------------------------------------+ 

//| #40;O5B "#@>2=8 $81>=0GG8"                                       | 

//+------------------------------------------------------------------+ 

bool FiboLevelsDelete(const long   chart_ID=0,        // ID 3@0D8:0 

                      const string name="FiboLevels") // 8<O >1J5:B0 

  {

//--- A1@>A8< 7=0G5=85 >H81:8 

   ResetLastError();

//--- C40;8< >1J5:B 

   if(!ObjectDelete(chart_ID,name))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL C40;8BL \"#@>2=8 $81>=0GG8\"! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CA?5H=>5 2K?>;=5=85 

   return(true);

  }

//+------------------------------------------------------------------+ 

//| @>25@O5B 7=0G5=8O B>G5: ?@82O7:8 "#@>2=59 $81>=0GG8" 8 4;O      | 

//| ?CABKE 7=0G5=89 CAB0=02;8205B 7=0G5=8O ?> C<>;G0=8N              | 

//+------------------------------------------------------------------+ 

void ChangeFiboLevelsEmptyPoints(datetime &time1,double &price1, 

                                 datetime &time2,double &price2) 

  { 

//--- 5A;8 2@5<O 2B>@>9 B>G:8 =5 7040=>, B> >=0 1C45B =0 B5:CI5< 10@5 

   if(!time2) 

      time2=TimeCurrent(); 

//--- 5A;8 F5=0 2B>@>9 B>G:8 =5 7040=0, B> >=0 1C45B 8<5BL 7=0G5=85 Bid 

   if(!price2) 

      price2=SymbolInfoDouble(Symbol(),SYMBOL_BID); 

//--- 5A;8 2@5<O ?5@2>9 B>G:8 =5 7040=>, B> >=0 ;568B =0 9 10@>2 ;5255 2B>@>9 

   if(!time1) 

     { 

      //--- <0AA82 4;O ?@85<0 2@5<5=8 >B:@KB8O 10 ?>A;54=8E 10@>2 

      datetime temp[10]; 

      CopyTime(Symbol(),Period(),time2,10,temp); 

      //--- CAB0=>28< ?5@2CN B>G:C =0 9 10@>2 ;5255 2B>@>9 

      time1=temp[0]; 

     } 

//--- 5A;8 F5=0 ?5@2>9 B>G:8 =5 7040=0, B> A428=5< 55 =0 200 ?C=:B>2 =865 2B>@>9 

   if(!price1) 

      price1=price2-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT); 

  } 

//+------------------------------------------------------------------+    

//| Custom indicator initialization function                         | 

//+------------------------------------------------------------------+  

int OnInit()

  {

//---- =8F80;870F8O ?5@5<5==KE =0G0;0 >BAG5B0 40==KE   

   min_rates_total=100;



//---- 8=8F80;870F8O ?5@5<5==KE

   fib1=Sirname+" fib1 "+GetStringTimeframe(Timeframe);

   trend=Sirname+" trend1 "+GetStringTimeframe(Timeframe);

   fibf1=Sirname+" fibf1 "+GetStringTimeframe(Timeframe);



//---- ?>;CG5=85 E5=4;0 8=48:0B>@0 ZigZag_NK_Color

   Ind_Handle=iCustom(Symbol(),Timeframe,"ZigZag_NK_Color",ExtDepth,ExtDeviation,ExtBackstep);

   if(Ind_Handle==INVALID_HANDLE)

     {

      Print(" 5 C40;>AL ?>;CG8BL E5=4; 8=48:0B>@0 ZigZag_NK_Color");

      return(INIT_FAILED);

     }

   if(ShowFib)

     {

      //----

      Values[0]=FiboLevel1;

      Values[1]=FiboLevel2;

      Values[2]=FiboLevel3;

      Values[3]=FiboLevel4;

      Values[4]=FiboLevel5;

      Values[5]=FiboLevel6;

      Values[6]=FiboLevel7;

      Values[7]=FiboLevel8;

      Values[8]=FiboLevel9;

      Values[9]=FiboLevel10;

      Values[10]=FiboLevel11;

      //----   

      Colors[0]=Color_Level1;

      Colors[1]=Color_Level2;

      Colors[2]=Color_Level3;

      Colors[3]=Color_Level4;

      Colors[4]=Color_Level5;

      Colors[5]=Color_Level6;

      Colors[6]=Color_Level7;

      Colors[7]=Color_Level8;

      Colors[8]=Color_Level9;

      Colors[9]=Color_Level10;

      Colors[10]=Color_Level11;

      //----   

      Styles[0]=STYLE_SOLID;

      Styles[1]=STYLE_DASHDOTDOT;

      Styles[2]=STYLE_DASHDOTDOT;

      Styles[3]=STYLE_DASH;

      Styles[4]=STYLE_DASHDOTDOT;

      Styles[5]=STYLE_SOLID;

      Styles[6]=STYLE_DASHDOTDOT;

      Styles[7]=STYLE_DASHDOTDOT;

      Styles[8]=STYLE_DASH;

      Styles[9]=STYLE_DASHDOTDOT;

      Styles[10]=STYLE_SOLID;

      //----



      ArrayInitialize(Widths,NULL);

      //--- A>74048< >1J5:B 

      if(!FiboLevelsCreate(0,fib1,0,0,0,0,0,FiboColor,STYLE_SOLID,2,true,false,false,true,false,0))

        {

         Print("5 C40;>AL A>740BL $81>!");

         return(INIT_FAILED);

        }

      if(!FiboLevelsSet(FIBO_LINES_TONAL,Values,Colors,Styles,Widths,0,fib1))

        {

         Print("5 C40;>AL =0AB@>8BL $81>!");

         return(INIT_FAILED);

        }

     }



//---- 8<O 4;O >:>= 40==KE 8 ;M910 4;O AC1J>:>= 

   string shortname;

   StringConcatenate(shortname,"ZigZag (ExtDepth=",ExtDepth,"ExtDeviation = ",ExtDeviation,"ExtBackstep = ",ExtBackstep,")");

   IndicatorSetString(INDICATOR_SHORTNAME,shortname);

//--- >?@545;5=85 B>G=>AB8 >B>1@065=8O 7=0G5=89 8=48:0B>@0

   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

//--- 7025@H5=85 8=8F80;870F88

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+    

void OnDeinit(const int reason)

  {

//----

   ObjectDelete(0,fib1);

   ObjectDelete(0,trend);

   ObjectDelete(0,fibf1);

//----

   ChartRedraw(0);

  }

//+------------------------------------------------------------------+  

//| Custom indicator iteration function                              | 

//+------------------------------------------------------------------+  

int OnCalculate(const int rates_total,    // :>;8G5AB2> 8AB>@88 2 10@0E =0 B5:CI5< B8:5

                const int prev_calculated,// :>;8G5AB2> 8AB>@88 2 10@0E =0 ?@54K4CI5< B8:5

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

//---- ?@>25@:0 :>;8G5AB20 10@>2 =0 4>AB0B>G=>ABL 4;O @0AG5B0

   if(BarsCalculated(Ind_Handle)<min_rates_total) return(RESET);

   if(BarsCalculated(Ind_Handle)<Bars(Symbol(),Timeframe)) return(prev_calculated);

//---- >1JO2;5=85 ;>:0;L=KE ?5@5<5==KE

   double UpSign[],DnSign[];

   static datetime TIME[];



//---- :>?8@C5< 2=>2L ?>O282H85AO 40==K5 2 <0AA82K

   if(CopyBuffer(Ind_Handle,0,0,rates_total,DnSign)<=0) return(RESET);

   if(CopyBuffer(Ind_Handle,1,0,rates_total,UpSign)<=0) return(RESET);

   if(CopyTime(Symbol(),Timeframe,0,rates_total,TIME)<=0) return(RESET);



//---- 8=45:A0F8O M;5<5=B>2 2 <0AA820E, :0: 2 B09<A5@8OE  

   ArraySetAsSeries(DnSign,true);

   ArraySetAsSeries(UpSign,true);

   ArraySetAsSeries(TIME,true);



   static datetime curr=NULL;

   if(curr!=TIME[0])

     {

      curr=TIME[0];

      double swing_value[4]={0,0,0,0};

      datetime swing_date[4]={0,0,0,0};

      int found=NULL;

      double tmp=NULL;

      int bar=NULL;

      while(found<4 && bar<rates_total)

        {

         if(UpSign[bar])

           {

            swing_value[found]=UpSign[bar];

            swing_date[found]=TIME[bar];

            found++;

           }

         if(DnSign[bar])

           {

            swing_value[found]=DnSign[bar];

            swing_date[found]=TIME[bar];

            found++;

           }

         bar++;

        }



      if(ShowTrend) SetChannel(0,trend,0,swing_date[3],swing_value[3],swing_date[1],swing_value[1],swing_date[2],swing_value[2],TrendColor,0,TrendSize,true,trend);

      if(ShowFib)

        {

         if(!FiboLevelsPointChange(0,fib1,0,swing_date[2],swing_value[2])) return(rates_total);

         if(!FiboLevelsPointChange(0,fib1,1,swing_date[1],swing_value[1])) return(rates_total);

        }

      if(ShowFibFan) SetFiboFan(0,fibf1,0,swing_date[2],swing_value[2],swing_date[1],swing_value[1],FibFanColor,0,FibFanSize,true,fibf1);

     }

//----

   ChartRedraw(0);

   return(rates_total);

  }

//+------------------------------------------------------------------+

//|  !>740=85 $81>                                                   |

//+------------------------------------------------------------------+

void CreateFiboFan

(

 long     chart_id,      // 845=B8D8:0B>@ 3@0D8:0

 string   name,          // 8<O >1J5:B0

 int      nwin,          // 8=45:A >:=0

 datetime time1,         // 2@5<O 1 F5=>2>3> C@>2=O

 double   price1,        // 1 F5=>2>9 C@>25=L

 datetime time2,         // 2@5<O 2 F5=>2>3> C@>2=O

 double   price2,        // 2 F5=>2>9 C@>25=L

 color    Color,         // F25B ;8=88

 int      style,         // AB8;L ;8=88

 int      width,         // B>;I8=0 ;8=88

 int      ray,           // =0?@02;5=85 ;CG0: -1 - 2;52>, +1 - 2?@02>, >AB0;L=K5 7=0G5=8O - =5B ;CG0

 string   text           // B5:AB

 )

//---- 

  {

//----

   ObjectCreate(chart_id,name,OBJ_FIBOFAN,nwin,time1,price1,time2,price2);

   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);

   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);



   if(ray>0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,true);

   if(ray<0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,true);



   if(ray==0)

     {

      ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);

      ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,false);

     }



   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);



   for(int numb=0; numb<10; numb++)

     {

      ObjectSetInteger(chart_id,name,OBJPROP_LEVELCOLOR,numb,Color);

      ObjectSetInteger(chart_id,name,OBJPROP_LEVELSTYLE,numb,style);

      ObjectSetInteger(chart_id,name,OBJPROP_LEVELWIDTH,numb,width);

     }

//----

  }

//+------------------------------------------------------------------+

//|  5@5CAB0=>2:0 $81>                                              |

//+------------------------------------------------------------------+

void SetFiboFan

(

 long     chart_id,      // 845=B8D8:0B>@ 3@0D8:0

 string   name,          // 8<O >1J5:B0

 int      nwin,          // 8=45:A >:=0

 datetime time1,         // 2@5<O 1 F5=>2>3> C@>2=O

 double   price1,        // 1 F5=>2>9 C@>25=L

 datetime time2,         // 2@5<O 2 F5=>2>3> C@>2=O

 double   price2,        // 2 F5=>2>9 C@>25=L

 color    Color,         // F25B ;8=88

 int      style,         // AB8;L ;8=88

 int      width,         // B>;I8=0 ;8=88

 int      ray,           // =0?@02;5=85 ;CG0: -1 - 2;52>, 0 - =5B ;CG0, +1 - 2?@02>

 string   text           // B5:AB

 )

//---- 

  {

//----

   if(ObjectFind(chart_id,name)==-1) CreateFiboFan(chart_id,name,nwin,time1,price1,time2,price2,Color,style,width,ray,text);

   else

     {

      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

      ObjectMove(chart_id,name,0,time1,price1);

      ObjectMove(chart_id,name,1,time2,price2);

     }

//----

  }

//+------------------------------------------------------------------+

//|  !>740=85 :0=0;0                                                 |

//+------------------------------------------------------------------+

void CreateChannel

(

 long     chart_id,      // 845=B8D8:0B>@ 3@0D8:0

 string   name,          // 8<O >1J5:B0

 int      nwin,          // 8=45:A >:=0

 datetime time1,         // 2@5<O 1 F5=>2>3> C@>2=O

 double   price1,        // 1 F5=>2>9 C@>25=L

 datetime time2,         // 2@5<O 2 F5=>2>3> C@>2=O

 double   price2,        // 2 F5=>2>9 C@>25=L

 datetime time3,         // 2@5<O 3 F5=>2>3> C@>2=O

 double   price3,        // 3 F5=>2>9 C@>25=L

 color    Color,         // F25B ;8=88

 int      style,         // AB8;L ;8=88

 int      width,         // B>;I8=0 ;8=88

 int      ray,           // =0?@02;5=85 ;CG0: -1 - 2;52>, +1 - 2?@02>, >AB0;L=K5 7=0G5=8O - =5B ;CG0

 string   text           // B5:AB

 )

//---- 

  {

//----

   ObjectCreate(chart_id,name,OBJ_CHANNEL,nwin,time1,price1,time2,price2,time3,price3);

   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);

   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);



   if(ray>0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,true);

   if(ray<0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,true);



   if(ray==0)

     {

      ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);

      ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,false);

     }



   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);



   for(int numb=0; numb<10; numb++)

     {

      ObjectSetInteger(chart_id,name,OBJPROP_LEVELCOLOR,numb,Color);

      ObjectSetInteger(chart_id,name,OBJPROP_LEVELSTYLE,numb,style);

      ObjectSetInteger(chart_id,name,OBJPROP_LEVELWIDTH,numb,width);

     }

//----

  }

//+------------------------------------------------------------------+

//|  5@5CAB0=>2:0 :0=0;0                                            |

//+------------------------------------------------------------------+

void SetChannel

(

 long     chart_id,      // 845=B8D8:0B>@ 3@0D8:0

 string   name,          // 8<O >1J5:B0

 int      nwin,          // 8=45:A >:=0

 datetime time1,         // 2@5<O 1 F5=>2>3> C@>2=O

 double   price1,        // 1 F5=>2>9 C@>25=L

 datetime time2,         // 2@5<O 2 F5=>2>3> C@>2=O

 double   price2,        // 2 F5=>2>9 C@>25=L

 datetime time3,         // 2@5<O 3 F5=>2>3> C@>2=O

 double   price3,        // 3 F5=>2>9 C@>25=L

 color    Color,         // F25B ;8=88

 int      style,         // AB8;L ;8=88

 int      width,         // B>;I8=0 ;8=88

 int      ray,           // =0?@02;5=85 ;CG0: -1 - 2;52>, 0 - =5B ;CG0, +1 - 2?@02>

 string   text           // B5:AB

 )

//---- 

  {

//----

   if(ObjectFind(chart_id,name)==-1) CreateChannel(chart_id,name,nwin,time1,price1,time2,price2,time3,price3,Color,style,width,ray,text);

   else

     {

      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

      ObjectMove(chart_id,name,0,time1,price1);

      ObjectMove(chart_id,name,1,time2,price2);

      ObjectMove(chart_id,name,2,time3,price3);

     }

//----

  }

//+------------------------------------------------------------------+

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