MTF_4TF_FXSniperErgodicCCI_BarsM6

Download script
Author: Copyright � 2006, Eli hayun.
MTF_4TF_FXSniperErgodicCCI_BarsM6

This script is a multi-timeframe analysis tool designed to help traders identify trend directions and signals by consolidating data from several different time periods simultaneously. Instead of looking at just one chart (like a 15-minute or 1-hour chart), it "looks ahead" into higher timeframes to give the user a broader perspective on market movement.

Core Logic and Functionality

Multi-Timeframe Integration The primary purpose of this script is to track four specific higher timeframes: Hourly (H1), 4-Hour (H4), Daily (D1), and Weekly (W1). It retrieves data from these larger scales and maps them onto your current trading chart. This allows you to see how the "big picture" trends align with the immediate price action.

External Data Processing The script relies on an external technical indicator (specifically a custom ergodic-based CCI trigger) to generate its primary signals. It essentially acts as a bridge, pulling specific values from that external tool across all four timeframes and displaying them in a unified window.

Signal Identification The logic works by comparing two different data points from the external indicator:

  • High/Bullish Logic: When the script detects a specific "upward" condition from the source indicator, it triggers an entry point for that timeframe.
  • Low/Bearish Logic: Conversely, when the "downward" condition is met, it registers a corresponding signal.

Visual Representation The tool organizes these signals into eight distinct buffers (visual lines or arrows).

  • Four of these buffers represent "Up" signals for each of the four timeframes.
  • The other four buffers represent "Down" signals for those same timeframes. By observing these, a trader can see at a glance if all timeframes are in agreement (e.g., if all eight signals are showing consistent movement) or if there is a conflict between short-term and long-term trends.

Data Smoothing and Continuity Because higher timeframe data (like a Daily bar) stays the same for many smaller price candles, the script includes a "Refresh" mechanism. This ensures that the signal remains visible and consistent across all the smaller bars until the higher timeframe actually changes. It prevents the visual data from flickering or disappearing between the updates of the larger timeframes, providing a smooth and stable visual experience for the user.

Miscellaneous
Implements a curve of type %1
9 Views
0 Downloads
0 Favorites
MTF_4TF_FXSniperErgodicCCI_BarsM6
//+------------------------------------------------------------------+
//|                                         MTF_Supertrend2_Bars.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Eli hayun."
#property link      "http://www.elihayun.com"

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 5
#property indicator_buffers 8
#property indicator_color1 Crimson
#property indicator_color2 Maroon
#property indicator_color3 FireBrick
#property indicator_color4 Maroon
#property indicator_color5 MediumTurquoise
#property indicator_color6 DarkTurquoise
#property indicator_color7 MediumTurquoise
#property indicator_color8 LightSeaGreen
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];


extern string  CustomIndicator = "FXSnipersErgodic_CCITrigger";


extern int pq =2;
extern int pr = 10;
extern int ps = 5;
extern int trigger =3;

extern int Maxbars   = 1000;

//extern int NbPeriods = 10;
//extern int LSMA_Period = 5;

extern int    TF4  = PERIOD_H1;
extern int    TF3  = PERIOD_H4;
extern int    TF2  = PERIOD_D1;
extern int    TF1  = PERIOD_W1;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,110);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,110);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,110);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexEmptyValue(2,0.0);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,110);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexEmptyValue(3,0.0);
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexArrow(4,110);
   SetIndexBuffer(4,ExtMapBuffer5);
   SetIndexEmptyValue(4,0.0);
   SetIndexStyle(5,DRAW_ARROW);
   SetIndexArrow(5,110);
   SetIndexBuffer(5,ExtMapBuffer6);
   SetIndexEmptyValue(5,0.0);
   SetIndexStyle(6,DRAW_ARROW);
   SetIndexArrow(6,110);
   SetIndexBuffer(6,ExtMapBuffer7);
   SetIndexEmptyValue(6,0.0);
   SetIndexStyle(7,DRAW_ARROW);
   SetIndexArrow(7,110);
   SetIndexBuffer(7,ExtMapBuffer8);
   SetIndexEmptyValue(7,0.0);
//----
   SetIndexLabel(0,"MTF_SnErgCCI("+TF4+")");
   SetIndexLabel(1,"MTF_SnErgCCI("+TF3+")");
   SetIndexLabel(2,"MTF_SnErgCCI("+TF2+")");
   SetIndexLabel(3,"MTF_SnErgCCI("+TF1+")");
   SetIndexLabel(4,"MTF_SnErgCCI("+TF4+")");
   SetIndexLabel(5,"MTF_SnErgCCI("+TF3+")");
   SetIndexLabel(6,"MTF_SnErgCCI("+TF2+")");
   SetIndexLabel(7,"MTF_SnErgCCI("+TF1+")");



//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   int limit;
   int TF[] = {0,0,0,0};
   
   TF[0] = TF1;
   TF[1] = TF2;
   TF[2] = TF3;
   TF[3] = TF4;
   
 limit = Bars-counted_bars;
 limit = MathMax(limit,TF1/Period());
 limit = MathMax(limit,TF2/Period());
 limit = MathMax(limit,TF3/Period());
 limit = MathMax(limit,TF4/Period());
 limit = MathMin(limit,Maxbars);
   
   for (int ii=0; ii<limit; ii++)
   {
      ExtMapBuffer1[ii] = 0;
      ExtMapBuffer2[ii] = 0;
      ExtMapBuffer3[ii] = 0;
      ExtMapBuffer4[ii] = 0;
      ExtMapBuffer5[ii] = 0;
      ExtMapBuffer6[ii] = 0;
      ExtMapBuffer7[ii] = 0;
      ExtMapBuffer8[ii] = 0;
      for (int jj=0; jj<4; jj++)
      {
         int y = iBarShift(NULL, TF[jj], Time[ii]);
         SetIndicator(GetCustomBars(TF[jj], y), jj, ii);
      }
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

bool GetCustomBars(int TF, int shift)
{

   double h = iCustom(Symbol(), TF, CustomIndicator, 2,10,5,3,0, shift);
   double l = iCustom(Symbol(), TF, CustomIndicator, 2,10,5,3,1, shift);
   
   
   return(h<l);
}

void SetIndicator(bool isUP, int ind, int shift)
{
   if (isUP)
   {
      switch (ind) 
      {
         case 3:  ExtMapBuffer1[shift] = ind+1; break;
         case 2:  ExtMapBuffer2[shift] = ind+1; break;
         case 1:  ExtMapBuffer3[shift] = ind+1; break;
         case 0:  ExtMapBuffer4[shift] = ind+1; break;
      }
   } else {
         switch (ind)
         { 
            case 3:  ExtMapBuffer5[shift] = ind+1; break;
            case 2:  ExtMapBuffer6[shift] = ind+1; break;
            case 1:  ExtMapBuffer7[shift] = ind+1; break;
            case 0:  ExtMapBuffer8[shift] = ind+1; break;
         }
   }

  //----  Refresh buffers ++++++++++++++++++++ upgrade by Raff  
 int TimeFrame,TimeArray[],i;   if (TimeFrame>Period()) {
     int PerINT=TimeFrame/Period()+1;
     datetime TimeArr[]; ArrayResize(TimeArr,PerINT);
     ArrayCopySeries(TimeArr,MODE_TIME,Symbol(),Period()); 
     for(i=0;i<PerINT+1;i++) {if (TimeArr[i]>=TimeArray[0]) {
//----
 /********************************************************  
    Refresh buffers:         buffer[i] = buffer[0];
 ********************************************************/  


      ExtMapBuffer1[i] = ExtMapBuffer1[0];
      ExtMapBuffer2[i] = ExtMapBuffer2[0];
      ExtMapBuffer3[i] = ExtMapBuffer3[0];
      ExtMapBuffer4[i] = ExtMapBuffer4[0];
      ExtMapBuffer5[i] = ExtMapBuffer5[0];
      ExtMapBuffer6[i] = ExtMapBuffer6[0];
      ExtMapBuffer7[i] = ExtMapBuffer7[0];
      ExtMapBuffer8[i] = ExtMapBuffer8[0];

//----
   } } }
//+++++++++++++++++++++++++++++++++++++++++++++++  Raff  
 


   return(0);
  }

Comments