Silver-channels_v1

Download script
Author: Copyright � 2004, AlexSilver
Silver-channels_v1

The Silver-channels indicator is a technical analysis tool designed to help traders visualize market structure by projecting multiple dynamic price channels based on historical price extremes. Rather than simply drawing static lines, it automatically identifies volatility ranges to help users perceive potential support and resistance levels.

Core Logic and Functionality

The indicator operates by scanning a specific window of historical data (defined by the "SSP" parameter). For every point on the chart, it looks back through this timeframe to identify the highest price reached (peak) and the lowest price reached (trough). Once these two extremes are established, the script calculates four distinct types of channels based on specific percentage offsets:

  • Silver-channels: These are primary projected boundaries calculated using a custom percentage offset. They serve as the main visual framework for identifying the current market's "corridor."
  • Sky-channels: These provide an alternative set of boundaries using a different percentage calculation, offering a secondary perspective on the price range.
  • Zen-channels: These represent the absolute extremes of the identified period, marking the literal high and low points of the price action.
  • Future-channels: Unlike the others, these are projected beyond the current price range. They are shifted forward on the chart to predict where potential future boundaries might emerge based on the current volatility percentage.

How It Works for the Trader

Instead of requiring the user to manually draw lines, the script performs the following automated steps:

  1. Range Identification: It continuously monitors a set number of bars to find the "High" and "Low" boundaries.
  2. Dynamic Calculation: For every new candle, it recalculates the distance between that high and low.
  3. Proportional Mapping: It applies the specific percentage inputs (Silver, Sky, Zen, and Future) to that distance to plot several parallel lines across the screen simultaneously.
  4. Visual Projection: By shifting the "Future" channels forward in time, it gives traders a visual ahead-of-time look at where price might find resistance or support if current trends continue.

In essence, this tool provides a multi-layered view of market volatility, allowing traders to see not just where the price has been, but where specific mathematical proportions suggest the price may react in the future.

Miscellaneous
Implements a curve of type %1
8 Views
0 Downloads
0 Favorites
Silver-channels_v1
//+------------------------------------------------------------------+
//|                                              Silver-channels.mq4 |
//|                                     Copyright © 2004, AlexSilver |
//|                                                  http://viac.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, AlexSilver"
#property link      "http://viac.ru/"

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Silver
#property indicator_color2 Silver
#property indicator_color3 SkyBlue
#property indicator_color4 SkyBlue
#property indicator_color5 YellowGreen
#property indicator_color6 YellowGreen
#property indicator_color7 Magenta
#property indicator_color8 Magenta
//---- input parameters
extern int TSP=9;
extern int SSP=26;
extern double SilvCh=38.2;
extern double SkyCh=23.6;
extern double ZenCh=0;
extern double FutCh=61.8;
//---- buffers
double SCH_BufferH[];
double SCH_BufferL[];
double Sky_BufferH[];
double Sky_BufferL[];
double Zen_BufferH[];
double Zen_BufferL[];
double Fut_BufferL[];
double Fut_BufferH[];
//----
int a_begin;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,SCH_BufferH);
   SetIndexDrawBegin(0,SSP-1);
   SetIndexLabel(0,"Silver-channel High");
//----
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,SCH_BufferL);
   SetIndexDrawBegin(1,SSP-1);
   SetIndexLabel(1,"Silver-channel Low");
//----
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,Sky_BufferH);
   SetIndexDrawBegin(2,SSP-1);
   SetIndexLabel(2,"Sky-channel High");
//----
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,Sky_BufferL);
   SetIndexDrawBegin(3,SSP-1);
   SetIndexLabel(3,"Sky-channel Low");
//----
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,Zen_BufferH);
   SetIndexDrawBegin(4,SSP-1);
   SetIndexLabel(4,"Zen-channel High");
//----
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,Zen_BufferL);
   SetIndexDrawBegin(5,SSP-1);
   SetIndexLabel(5,"Zen-channel Low");
//----
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,Fut_BufferL);
   SetIndexDrawBegin(6,SSP+TSP-1);
   SetIndexShift(6,TSP);
   SetIndexLabel(6,"Future-channel Low");
//----
   SetIndexStyle(7,DRAW_LINE);
   SetIndexBuffer(7,Fut_BufferH);
   SetIndexDrawBegin(7,SSP+TSP-1);
   SetIndexShift(7,TSP);
   SetIndexLabel(7,"Future-channel High");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Silver-channels                                                       |
//+------------------------------------------------------------------+
int start()
  {
   int    i,k;
   int    counted_bars=IndicatorCounted();
   double high,low,price;
//----
   if(Bars<=SSP) return(0);
//---- initial zero
   if(counted_bars<1)
     {
      for(i=1;i<=SSP;i++) SCH_BufferH[Bars-i]=0; SCH_BufferL[Bars-i]=0; Sky_BufferH[Bars-i]=0; Sky_BufferL[Bars-i]=0; Zen_BufferH[Bars-i]=0; Zen_BufferL[Bars-i]=0; Fut_BufferL[Bars-i]=0; Fut_BufferH[Bars-i]=0;
     }
//---- 
   i=Bars-SSP;
   if(counted_bars>SSP) i=Bars-counted_bars-1;
   while(i>=0)
     {
      high=High[i]; low=Low[i]; k=i-1+SSP;
      while(k>=i)
        {
         price=High[k];
         if(high<price) high=price;
         price=Low[k];
         if(low>price)  low=price;
         k--;
        }
      SCH_BufferL[i]=low+(high-low)*SilvCh/100;
      SCH_BufferH[i]=high-(high-low)*SilvCh/100;
      Sky_BufferL[i]=low+(high-low)*SkyCh/100;
      Sky_BufferH[i]=high-(high-low)*SkyCh/100;
      Zen_BufferL[i]=low;
      Zen_BufferH[i]=high;
      Fut_BufferL[i]=low-(high-low)*FutCh/100;
      Fut_BufferH[i]=high+(high-low)*FutCh/100;
      i--;
     }
   }
//+------------------------------------------------------------------+

Comments