Author: Scriptong
FiboPivot
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains the lowest prices of each barSeries array that contains close prices for each barSeries array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
FiboPivot
//+------------------------------------------------------------------+
//|                                                    FiboPivot.mq4 |
//|                                                        Scriptong |
//|                                                scriptong@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Scriptong"
#property link      "scriptong@mail.ru"

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Lime
#property indicator_color2 Green
#property indicator_color3 DarkGreen
#property indicator_color4 Maroon
#property indicator_color5 Crimson
#property indicator_color6 Red
#property indicator_color7 Blue
//---- input parameters
extern double    Resistance3=138.2;
extern double    Resistance2=100.0;
extern double    Resistance1=61.8;
extern double    Support1=61.8;
extern double    Support2=100;
extern double    Support3=138.2;
extern bool      ShowDescription=True;
extern color     Resistance3Color=Lime;
extern color     Resistance2Color=Green;
extern color     Resistance1Color=DarkGreen;
extern color     Support1Color=Maroon;
extern color     Support2Color=Crimson;
extern color     Support3Color=Red;
extern color     PivotColor=Blue; 


//---- buffers
double Res3[];
double Res2[];
double Res1[];
double Supp1[];
double Supp2[];
double Supp3[];
double Pivot[];

bool Activate;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   Activate = False;
//---- indicators
   SetIndexStyle(0, DRAW_LINE, STYLE_DOT);
   SetIndexBuffer(0,Res3);
   SetIndexStyle(1, DRAW_LINE, STYLE_DOT);
   SetIndexBuffer(1,Res2);
   SetIndexStyle(2, DRAW_LINE, STYLE_DOT);
   SetIndexBuffer(2,Res1);
   SetIndexStyle(3, DRAW_LINE, STYLE_DOT);
   SetIndexBuffer(3,Supp1);
   SetIndexStyle(4, DRAW_LINE, STYLE_DOT);
   SetIndexBuffer(4,Supp2);
   SetIndexStyle(5, DRAW_LINE, STYLE_DOT);
   SetIndexBuffer(5,Supp3);
   SetIndexStyle(6, DRAW_LINE);
   SetIndexBuffer(6,Pivot);
   
   if (Period() > PERIOD_H4)
     { 
      Comment("Èíäèêàòîð FiboPivot ðàáîòàåò íà ãðàôèêàõ íå âûøå H4.");
      return(0);
     }
   
   Activate = True;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   for (int i = ObjectsTotal()-1; i >= 0; i--)
     if (StringSubstr(ObjectName(i), 0, 5) == "Pivot" ||
         StringSubstr(ObjectName(i), 0, 3) == "Res" ||
         StringSubstr(ObjectName(i), 0, 4) == "Supp")
        ObjectDelete(ObjectName(i)); 
//----
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Îáúåêò-ìåòêà ñî çíà÷åíèåì öåíû                                   |
//+------------------------------------------------------------------+
void ObjectLabel(string name, string Text, datetime Time1, double Price1, color col)
{
 if (ObjectFind(name) < 0) 
   {
    ObjectCreate(name, OBJ_TEXT, 0, Time1, Price1);
    ObjectSet(name, OBJPROP_COLOR, col);
   } 
  else
   ObjectMove(name, 0, Time1, Price1); 
 ObjectSetText(name, Text, 8, "Arial");  
   
}

  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   if (!Activate) return(0); 
  
   int    counted_bars=IndicatorCounted();
//----
   datetime NowDay = iTime(Symbol(), PERIOD_D1, 0);
   int FirstDayBar = iBarShift(Symbol(), 0, NowDay);
   
   if (Bars-counted_bars < FirstDayBar)
     int limit = FirstDayBar;
    else
     limit = Bars - counted_bars;
     
   int LastPrevDay = iBars(Symbol(), PERIOD_D1);
     
   for (int i = limit; i >= 0; i--)
     {
      int PrevDay = iBarShift(Symbol(), PERIOD_D1, Time[i])+1; // íîìåð áàðà ïðåäûäóùåãî äíÿ íà ãðàôèêå D1
      if (LastPrevDay != PrevDay)
        {
         double HighDay = iHigh(Symbol(), PERIOD_D1, PrevDay); // Ìàêñèìóì ïðåäûäóùåãî äíÿ
         double LowDay = iLow(Symbol(), PERIOD_D1, PrevDay); // Ìèíèìóì ïðåäûäóùåãî äíÿ
         double CloseDay = iClose(Symbol(), PERIOD_D1, PrevDay); // Çàêðûòèå ïðåäûäóùåãî äíÿ
         double Width = HighDay - LowDay;
         Pivot[i] = (HighDay+LowDay+CloseDay)/3; //Ñòàíäàðòíûé Pivot - òèïè÷íàÿ öåíà äíÿ
         Res1[i] = Pivot[i] + Width*(Resistance1/100.0);
         Res2[i] = Pivot[i] + Width*(Resistance2/100.0);
         Res3[i] = Pivot[i] + Width*(Resistance3/100.0);
         Supp1[i] = Pivot[i] - Width*(Support1/100.0);
         Supp2[i] = Pivot[i] - Width*(Support2/100.0);
         Supp3[i] = Pivot[i] - Width*(Support3/100.0);
         if (ShowDescription)
           {
            datetime DayTime = iTime(Symbol(), PERIOD_D1, PrevDay-1) + 43200;
            ObjectLabel("Pivot"+DoubleToStr(DayTime, 0), 
                        "Pivot "+DoubleToStr(Pivot[i], Digits), DayTime, Pivot[i], PivotColor);
            ObjectLabel("Res1"+DoubleToStr(DayTime, 0), 
                        "Resistance1 "+DoubleToStr(Res1[i], Digits), DayTime, Res1[i], Resistance1Color);
            ObjectLabel("Res2"+DoubleToStr(DayTime, 0), 
                        "Resistance2 "+DoubleToStr(Res2[i], Digits), DayTime, Res2[i], Resistance2Color);
            ObjectLabel("Res3"+DoubleToStr(DayTime, 0), 
                        "Resistance3 "+DoubleToStr(Res3[i], Digits), DayTime, Res3[i], Resistance3Color);
            ObjectLabel("Supp1"+DoubleToStr(DayTime, 0), 
                        "Support1 "+DoubleToStr(Supp1[i], Digits), DayTime, Supp1[i], Support1Color);
            ObjectLabel("Supp2"+DoubleToStr(DayTime, 0), 
                        "Support2 "+DoubleToStr(Supp2[i], Digits), DayTime, Supp2[i], Support2Color);
            ObjectLabel("Supp3"+DoubleToStr(DayTime, 0), 
                        "Support3 "+DoubleToStr(Supp3[i], Digits), DayTime, Supp3[i], Support3Color);
           }             
         LastPrevDay = PrevDay;
        } 
       else
        {
         Pivot[i] = Pivot[i+1];
         Res1[i] = Res1[i+1];
         Res2[i] = Res2[i+1];
         Res3[i] = Res3[i+1];
         Supp1[i] = Supp1[i+1];
         Supp2[i] = Supp2[i+1];
         Supp3[i] = Supp3[i+1];
        } 
     }   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

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