Alternative_Ichimoku_v07





//+----------------------------------------------------------+
//|                           Alternative_Ichimoku_v07.mq4   |
//|                            Copyright © april 2007 v.07   |
//|                Lukashuk Victor Gennadievich aka lukas1   |
//+----------------------------------------------------------+
#property copyright "Copyright © 2007, lukas1"
#property link ""
//----
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 LightPink
#property indicator_color2 LightSteelBlue
#property indicator_color3 LightPink
#property indicator_color4 LightSteelBlue
#property indicator_width1 2
#property indicator_width2 2
#property indicator_color5 Blue
#property indicator_color6 Magenta
//---- input parameters
// áàðîâ - ðàñ÷¸òíûé ïåðèîä; calculating period
extern int SSP = 75; 
// çàìåäëåíèå âòîðîé ëèíèè;  tolerance of second line
extern int SSK = 75; 
// íå ïîêàçûâàòü ñðåäíþþ ëèíèþ
extern bool Show_Middle = false; 
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double Wal1[];
double Wal2[];
double ExtMapBuffer4[], ExtMapBuffer5[];
int i, j;
double SsMax, SsMin, SsMax05, SsMin05, Rsmin, Rsmax, 
       Tsmin, Tsmax;
double Day_max, Day_min;
int val1, val2, AvgRange, day_bars, day_Range, 
    delta_from_max, delta_from_min, spred;
string comm, sutki;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(8);
//----
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, ExtMapBuffer1);
   SetIndexDrawBegin(0, SSP*2);
// priority line
   SetIndexLabel(0, "îïåðåæàþùàÿ ëèíèÿ"); 
//----
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexDrawBegin(1, SSP*2);
// overdue line
   SetIndexLabel(1, "çàïàçäûâþùàÿ ëèíèÿ"); 
//----
   SetIndexStyle(2, DRAW_HISTOGRAM);
   SetIndexBuffer(2, Wal1);
   SetIndexDrawBegin(2,SSP*2);
//----
   SetIndexStyle(3, DRAW_HISTOGRAM);
   SetIndexBuffer(3, Wal2);
   SetIndexDrawBegin(3,SSP*2);
//----
   SetIndexStyle(4, DRAW_LINE);
   SetIndexBuffer(4, ExtMapBuffer4);
   SetIndexDrawBegin(4,SSP*2);
// stop-order line
   SetIndexLabel(4,"ëèíèÿ ñòîï-îðäåðà"); 
//----      
   SetIndexStyle(5, DRAW_LINE);
   SetIndexBuffer(5, ExtMapBuffer5);
   SetIndexDrawBegin(5,SSP*2);
// middle line 
   SetIndexLabel(5,"ñðåäíÿÿ ëèíèÿ");      
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() 
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   comm= ""; 
   int counted_bars = IndicatorCounted();
   if(Bars <= SSP + 1)
       return(0);
   i = Bars - SSP;
   while(i >= 0)
     {
       // RefreshRates();
       // maximum of previous SSP bars period
       SsMax = High[iHighest(NULL, 0, MODE_HIGH, SSP, i)];      
       // minimum of previous SSP bars period
       SsMin = Low[iLowest(NULL, 0, MODE_LOW, SSP, i)];         
       // maximum of SSP bars period for SSK bars from begin
       SsMax05 = High[iHighest(NULL, 0, MODE_HIGH, SSP, i + SSK)];
       // maximum of SSP bars period for SSK bars from begin
       SsMin05 = Low[iLowest(NULL, 0, MODE_LOW, SSP, i + SSK)];   
       ExtMapBuffer1[i] = (SsMax + SsMin) / 2;
       ExtMapBuffer2[i] = (SsMax05 + SsMin05) / 2;
       val1 = ExtMapBuffer1[1] / Point;
       val2 = ExtMapBuffer2[1] / Point;
       // äëÿ âîëàòèëüíîñòè
       Rsmax = High[iHighest(NULL, 0, MODE_HIGH, SSP*2, i)];
       // äëÿ âîëàòèëüíîñòè
       Rsmin = Low[iLowest(NULL, 0, MODE_LOW, SSP*2, i)];
       // ãèñòîãðàììà ðîçîâîãî îáëàêà
       Wal1[i] = ExtMapBuffer1[i]; 
       // ãèñòîãðàììà ãîëóáîãî îáëàêà
       Wal2[i] = ExtMapBuffer2[i]; 
       // ëèíèÿ ñòîï-îðäåðà  
       Tsmax = High[iHighest(NULL, 0,MODE_HIGH, SSP*1.62, i)];   
       // ëèíèÿ ñòîï-îðäåðà
       Tsmin = Low[iLowest(NULL, 0, MODE_LOW, SSP*1.62, i)];       
       ExtMapBuffer4[i] = (Tsmax + Tsmin) / 2;
       //----
       if(Show_Middle)
         {
           ExtMapBuffer5[i] = ((SsMax + SsMin) / 2 + 
                              (SsMax05 + SsMin05) / 2  ) / 2;
         }
       i--;
     }
   day_bars = MathCeil(1440 / Period());
   //if (Period()==1440) day_bars=5;
   sutki = "ñóòêè";
   if(Period() == 1440)  
     {
       sutki = "íåäåëþ";
       day_bars = 5;
     }  // äåíü
   if(Period() == 10080) 
     {
       sutki = "ìåñÿö"; 
       day_bars = 4;
     }  // íåäåëÿ
   if(Period() == 43200) 
     {
       sutki = "ãîä";  
       day_bars = 12;
     }  // ìåñÿö
   j = SSP*2 + 1;
   while(j >= 0)
     { 
       // îïðåäåëÿåì äíåâíîé äèàïàçîí
       // ëèíèÿ ìàêñ äíÿ  
       Day_max = High[iHighest(NULL, 0,MODE_HIGH, day_bars, j + 1)];   
       // ëèíèÿ ìèí. äíÿ
       Day_min = Low[iLowest(NULL, 0, MODE_LOW, day_bars, j + 1)];           
       j--;
     }      
   AvgRange = (Rsmax / Point) - (Rsmin / Point);
   day_Range = (Day_max / Point) - (Day_min / Point); 
   delta_from_max = (Day_max-Bid) / Point;
   delta_from_min = (Bid - Day_min) / Point;
//----
   comm = " ïàðàìåòðû  SSP , SSK  =   " + SSP + " ,  " + SSK + " ;\n" +
          " âîëàòèëüíîñòü  (çà " + SSP*2 + " áàðîâ) :      " + 
          AvgRange + "  ï.\n" + "\n" +
          " äèàïàçîí çà " + sutki + "  (çà  " + day_bars + 
          "  áàðîâ) :   " + day_Range + "  ï.\n" +
          " îòêëîíåíèå îò ìàêñèìóìà çà " + sutki + ":  " + 
          delta_from_max + "  ï.\n" +
          " îòêëîíåíèå îò ìèíèìóìà  çà " + sutki + ":  " + 
          delta_from_min + "  ï.\n";            
   Comment(comm);
//----
   return(0);
  }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE

Implements a curve of type DRAW_HISTOGRAM

Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: