Silver-channels_v3

Author: Copyright � 2004, AlexSilver
Silver-channels_v3

This technical tool is designed to provide visual structural analysis of market price movements by identifying and plotting specific geometric channels on a trading chart. Rather than using standard moving averages, it focuses on the relationship between historical highs and lows over defined periods to create a multi-layered "channel" system.

Core Logic Overview

The script operates by scanning historical price data to identify the highest and lowest points reached within a specific timeframe (defined by the user). Once these boundaries are established, the logic calculates several distinct sets of horizontal corridors based on percentage offsets from those peaks and troughs.

Key Components of the Analysis

The tool generates four primary types of channels simultaneously:

  • Silver Channels: These represent a foundational set of boundaries calculated using a specific percentage offset (defaulting to 38.2%). They help define the internal structure of the current price action.
  • Sky Channels: These provide an alternative perspective on the price range, utilizing a different percentage threshold (defaulting to 23.6%) to highlight potential support and resistance levels.
  • Zen Channels: These represent the absolute limits of the identified price range—the "ceiling" and "floor"—showing the maximum reach of the high and low points during the calculation period.
  • Future Channels: Unlike the others, these are projected slightly beyond the immediate price action to provide a prospective look at where the price might travel based on the current volatility and range.

How it Functions Dynamically

To ensure accuracy and smoothness on the chart, the logic employs two distinct calculation phases:

  1. Historical Processing: The script looks backward through a set amount of data to build the historical backbone of the channels. It identifies the maximum highs and minimum lows for every bar in the past, ensuring that the lines you see are rooted in actual market history.
  2. Real-Time Adjustment: As new price data arrives, the script automatically recalculates the channels. It "shifts" the data to ensure that the current price is always being measured against a relevant window of time. This allows the channels to expand, contract, or move dynamically as the market's volatility changes.

Practical Application

By visualizing these overlapping boundaries (Silver, Sky, Zen, and Future), the tool allows traders to see a "map" of price action. It highlights where the price is currently sitting relative to historical extremes, helping to identify areas where the market might be overextended or where it may find significant support or resistance.

Miscellaneous
Implements a curve of type %1
18 Views
0 Downloads
0 Favorites
Silver-channels_v3
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                              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 Shift=3;
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[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//----
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,SCH_BufferH);
   SetIndexDrawBegin(0,SSP+Shift-1);
   SetIndexShift(0,Shift);
   SetIndexLabel(0,"Silver-channel High");
//----
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,SCH_BufferL);
   SetIndexDrawBegin(1,SSP+Shift-1);
   SetIndexShift(1,Shift);
   SetIndexLabel(1,"Silver-channel Low");
//----
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,Sky_BufferH);
   SetIndexDrawBegin(2,SSP+Shift-1);
   SetIndexShift(2,Shift);
   SetIndexLabel(2,"Sky-channel High");
//----
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,Sky_BufferL);
   SetIndexDrawBegin(3,SSP+Shift-1);
   SetIndexShift(3,Shift);
   SetIndexLabel(3,"Sky-channel Low");
//----
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,Zen_BufferH);
   SetIndexDrawBegin(4,SSP+Shift-1);
   SetIndexShift(4,Shift);
   SetIndexLabel(4,"Zen-channel High");
//----
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,Zen_BufferL);
   SetIndexDrawBegin(5,SSP+Shift-1);
   SetIndexShift(5,Shift);
   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;
     }
//---- ñòàíäàðòíûå âû÷èñëåíèÿ äî 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+Shift]=low+(high-low)*SilvCh/100;
      SCH_BufferH[i+Shift]=high-(high-low)*SilvCh/100;
      Sky_BufferL[i+Shift]=low+(high-low)*SkyCh/100;
      Sky_BufferH[i+Shift]=high-(high-low)*SkyCh/100;
      Zen_BufferL[i+Shift]=low;
      Zen_BufferH[i+Shift]=high;
      Fut_BufferL[i]=low-(high-low)*FutCh/100;
      Fut_BufferH[i]=high+(high-low)*FutCh/100;
      i--; // äâèãàåì ñ÷åò÷èê
     } i=Shift-1; // Ñ÷èòàåì òî÷êè ñäâèãà - ñïðàâà îò íóëåâîãî
   while(i>=0)
     {
      high=High[0]; low=Low[0]; k=SSP-Shift+i; // êàæäûé ñëåäóþùèé óìåíüøàåò ïåðèîä
      while(k>=0)
        {
         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;
      i--;
     }
   }
//+------------------------------------------------------------------+

Comments