Author: Copyright © 2022, Nikolay Kositsin
Price Data Components
0 Views
0 Downloads
0 Favorites
ResSupFibo
ÿþ//+------------------------------------------------------------------+

//|                                                   ResSupFibo.mq4 |

//|                               Copyright © 2022, Nikolay Kositsin | 

//|                              Khabarovsk,   farria@mail.redcom.ru | 

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

#property  strict

//---- 02B>@AB2> 8=48:0B>@0

#property copyright "Copyright © 2022, Nikolay Kositsin"

//---- AAK;:0 =0 A09B 02B>@0

#property link      "farria@mail.redcom.ru"

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

#property version   "1.00"

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

#property indicator_chart_window 

//---- 4;O @0AGQB0 8 >B@8A>2:8 8=48:0B>@0 =5 8A?>;L7CNBAO 1CD5@K

#property indicator_buffers 0

//---- =5 8A?>;L7CNBAO 3@0D8G5A:85 ?>AB@>5=8O

#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

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

//|  >1JO2;5=85 ?5@5G8A;5=8O                     |

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

enum Number

  {

   Number_0,

   Number_1,

   Number_2,

   Number_3

  };

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

//|  >1JO2;5=85 ?5@5G8A;5=8O                     |

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

enum Width

  {

   width_1=1, //1

   width_2,   //2

   width_3,   //3

   width_4,   //4

   width_5    //5

  };

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

//|  >1JO2;5=85 ?5@5G8A;5=8O                     |

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

enum STYLE

  {

   SOLID_,//!?;>H=0O ;8=8O

   DASH_,//(B@8E>20O ;8=8O

   DOT_,//C=:B8@=0O ;8=8O

   DASHDOT_,//(B@8E-?C=:B8@=0O ;8=8O

   DASHDOTDOT_   //(B@8E-?C=:B8@=0O ;8=8O A 42>9=K<8 B>G:0<8

  };

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

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

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

input string  SirName="ResSup";             //5@20O G0ABL 8<5=8 3@0D8G5A:8E >1J5:B>2

input ENUM_TIMEFRAMES TimeFrame=PERIOD_H1;  //?5@8>4 3@0D8:0 4;O ?>8A:0 M:AB@5<C<>2

input uint SignalBar=1;                     //=><5@ 10@0 4;O ?>8A:0 M:AB@5<C<>2

input uint  iPeriod=24;                     //?5@8>4 ?>8A:0 M:AB@5<C<>2 F5=K

input uint  iSize=15;                       //4;8=0 C@>2=59 2 10@0E B5:CI53> 3@0D8:0

input uint  Digits_=0;                      //@07@O4 >:@C3;5=8O F5=K

input color  Color_Bg = clrLavender;        //F25B D>=0

//----

input color  Color_Up = clrDodgerBlue;      //F25B ;8=88 A>?@>B82;5=8O

input STYLE  Style_Up = SOLID_;             //AB8;L ;8=88 A>?@>B82;5=8O

input Width  Width_Up = width_4;            //B>;I8=0 ;8=88 A>?@>B82;5=8O

//----

input color  Color_1 = clrBlueViolet;       //F25B D81>-C@>2=O 0.764

input STYLE  Style_1 = DASHDOTDOT_;         //AB8;L D81>-C@>2=O 0.764

input Width  Width_1 = width_1;             //B>;I8=0 D81>-C@>2=O 0.764

//----

input color  Color_2 = clrDarkOrange;       //F25B D81>-C@>2=O 0.618

input STYLE  Style_2 = DASH_;               //AB8;L D81>-C@>2=O 0.618

input Width  Width_2 = width_1;             //B>;I8=0 D81>-C@>2=O 0.618

//----

input color  Color_3= clrGray;              //F25B D81>-C@>2=O 0.5

input STYLE  Style_3 = SOLID_;              //AB8;L  D81>-C@>2=O 0.5

input Width  Width_3 = width_1;             //B>;I8=0  D81>-C@>2=O 0.5

//----

input color  Color_4 = clrDarkOrange;       //F25B  D81>-C@>2=O 0.382

input STYLE  Style_4 = DASH_;               //AB8;L D81>-C@>2=O 0.382

input Width  Width_4 = width_1;             //B>;I8=0 D81>-C@>2=O 0.382

//----

input color  Color_5 = clrBlueViolet;       //F25B D81>-C@>2=O 0.236

input STYLE  Style_5 = DASHDOTDOT_;         //AB8;L D81>-C@>2=O 0.236

input Width  Width_5 = width_1;             //B>;I8=0 D81>-C@>2=O 0.236

//----

input color  Color_Dn = clrMagenta;         //F25B ;8=88 ?>445@6:8

input STYLE  Style_Dn = SOLID_;             //AB8;L ;8=88 ?>445@6:8

input Width  Width_Dn = width_4;            //B>;I8=0 ;8=88 ?>445@6:8

//----

input uint FontSize = 2;                    //@07<5@ F5=>2KE <5B>:

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

double iLow[],iHigh[],PointPow10;

int min_rates_total1,min_rates_total2;

string UpLinesName,UpPriceName,DnLinesName,DnPriceName,BgName,LinesName1,PriceName1;

string LinesName2,PriceName2,LinesName3,PriceName3,LinesName4,PriceName4,LinesName5,PriceName5;

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

//| Custom indicator initialization function                         |

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

void OnInit()

  {

//---- @0A?@545;5=85 ?0<OB8 ?>4 <0AA82K ?5@5<5==KE 

   ArrayResize(iLow,iPeriod);

   ArrayResize(iHigh,iPeriod);

//---- 8=8F80;870F8O AB@8=3>2KE 8<Q= >1J5:B>2

   UpLinesName=SirName+" UpLine";

   UpPriceName=SirName+" UpPrice";

   LinesName1=SirName+" Line1";   

   LinesName2=SirName+" Line2";   

   LinesName3=SirName+" Line3";   

   LinesName4=SirName+" Line4";   

   LinesName5=SirName+" Line5";    

   DnLinesName=SirName+" DnLine";

   DnPriceName=SirName+" DnPrice";

   BgName=SirName+" Bg";

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

   min_rates_total1=int(iPeriod+SignalBar);  

   min_rates_total2=int(iSize);     

   double Pow10=MathPow(10,Digits_);

   PointPow10=_Point*Pow10;

//----

  }

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

//| Custom indicator deinitialization function                       |

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

void OnDeinit(const int reason)

  {

//----

   ObjectDelete(0,UpLinesName);

   ObjectDelete(0,UpPriceName);   

   ObjectDelete(0,LinesName1);

   ObjectDelete(0,LinesName2);

   ObjectDelete(0,LinesName3);  

   ObjectDelete(0,LinesName4);   

   ObjectDelete(0,LinesName5);  

   ObjectDelete(0,DnLinesName);

   ObjectDelete(0,DnPriceName);

   ObjectDelete(0,BgName);

//----

   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[],     // F5=>2>9 <0AA82 <0:A8<C<>2 F5=K 4;O @0AGQB0 8=48:0B>@0

                const double& low[],      // F5=>2>9 <0AA82 <8=8<C<>2 F5=K  4;O @0AGQB0 8=48:0B>@0

                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(Bars(Symbol(),TimeFrame)<min_rates_total1 || rates_total<min_rates_total2) return(RESET);

  

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

   ArraySetAsSeries(time,false);

   

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

  if(CopyLow(Symbol(),TimeFrame,SignalBar,iPeriod,iLow)<=0) return(RESET);

  if(CopyHigh(Symbol(),TimeFrame,SignalBar,iPeriod,iHigh)<=0) return(RESET);

  double Min=PointPow10*MathRound(iLow[ArrayMinimum(iLow,0,WHOLE_ARRAY)]/PointPow10);

  double Max=PointPow10*MathRound(iHigh[ArrayMaximum(iHigh,0,WHOLE_ARRAY)]/PointPow10);

  datetime time1=time[rates_total-iSize];

  datetime time2=time[rates_total-1];

  double Range=Max-Min;

  double Level1=Min+Range*0.764;

  double Level2=Min+Range*0.618;

  double Level3=Min+Range*0.500;

  double Level4=Min+Range*0.382;

  double Level5=Min+Range*0.236;

  SetRectangle(0,BgName,0,time1,Min,time2,Max,Color_Bg,SOLID_,Width_1,"");

  SetTline(0,UpLinesName,0,time1,Min,time2,Min,Color_Dn,Style_Dn,Width_Dn,DoubleToString(Min,_Digits));

  SetTline(0,LinesName1,0,time1,Level1,time2,Level1,Color_1,Style_1,Width_1,DoubleToString(Level1,_Digits));

  SetTline(0,LinesName2,0,time1,Level2,time2,Level2,Color_2,Style_2,Width_2,DoubleToString(Level2,_Digits));

  SetTline(0,LinesName3,0,time1,Level3,time2,Level3,Color_3,Style_3,Width_3,DoubleToString(Level3,_Digits));

  SetTline(0,LinesName4,0,time1,Level4,time2,Level4,Color_4,Style_4,Width_4,DoubleToString(Level4,_Digits));

  SetTline(0,LinesName5,0,time1,Level5,time2,Level5,Color_5,Style_5,Width_5,DoubleToString(Level5,_Digits));

  SetTline(0,DnLinesName,0,time1,Max,time2,Max,Color_Up,Style_Up,Width_Up,DoubleToString(Max,_Digits));

  SetRightPrice(0,DnPriceName,0,time2,Min,Color_Dn,FontSize);

  SetRightPrice(0,UpPriceName,0,time2,Max,Color_Up,FontSize);

//----

   ChartRedraw(0);   

   return(rates_total);

  }

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

//|  !>740=85 ?@O<>C3>;L=8:0                                         |

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

void CreateRectangle

(

 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

 string   text           // B5:AB

 )

//---- 

  {

//----

   ObjectCreate(chart_id,name,OBJ_RECTANGLE,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);

   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

   ObjectSetInteger(chart_id,name,OBJPROP_FILL,true);

   ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,false);

   ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,true);

   ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,true);

//----

  }

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

//|  5@5CAB0=>2:0 B@5=4>2>9 ;8=88                                   |

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

void SetRectangle

(

 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

 string   text           // B5:AB

 )

//---- 

  {

//----

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

   else

     {

      ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

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

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

      ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

     }

//----

  }

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

//|  !>740=85 B@5=4>2>9 ;8=88                                        |

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

void CreateTline

(

 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

 string   text           // B5:AB

 )

//---- 

  {

//----

   ObjectCreate(chart_id,name,OBJ_TREND,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);

   //ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

   ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);

   ObjectSetInteger(chart_id,name,OBJPROP_RAY,false);

   //ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,true);

   //ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,true);

   ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,true);

   ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,text);

//----

  }

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

//|  5@5CAB0=>2:0 B@5=4>2>9 ;8=88                                   |

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

void SetTline

(

 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

 string   text           // B5:AB

 )

//---- 

  {

//----

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

   else

     {

      //ObjectSetString(chart_id,name,OBJPROP_TEXT,text);

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

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

      ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

      ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,text);

     }

//----

  }

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

//|  RightPrice creation                                             |

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

void CreateRightPrice(long chart_id,// chart ID

                      string   name,              // object name

                      int      nwin,              // window index

                      datetime time,              // price level time

                      double   price,             // price level

                      color    Color,             // Text color

                      int      fontsize           // Text font

                      )

//---- 

  {

//----

   ObjectCreate(chart_id,name,OBJ_ARROW_RIGHT_PRICE,nwin,time,price);

   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);

   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,fontsize);

//----

  }

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

//|  RightPrice reinstallation                                       |

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

void SetRightPrice(long chart_id,// chart ID

                   string   name,              // object name

                   int      nwin,              // window index

                   datetime time,              // price level time

                   double   price,             // price level

                   color    Color,             // Text color

                   int      fontsize           // Text font

                   )

//---- 

  {

//----

   if(ObjectFind(chart_id,name)==-1) CreateRightPrice(chart_id,name,nwin,time,price,Color,fontsize);

   else ObjectMove(chart_id,name,0,time,price);

//----

  }

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

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