_2523MTF_HULL_TREND

This script is designed to display a modified version of a Hull Moving Average (HMA) on a trading chart, but with a twist: it allows you to view the HMA calculated on a different timeframe than the one currently displayed on your chart.

Here's the breakdown:

  1. Timeframe Selection: The script starts by letting you choose which timeframe's HMA you want to see. You can select from options like 1-minute, 5-minute, 1-hour, daily, etc. If you don't choose a specific timeframe, it defaults to the current chart's timeframe.

  2. HMA Calculation Setup: The script then takes your selected timeframe and sets up the parameters needed to calculate the Hull Moving Average. These parameters include:

    • The period of the HMA, which essentially determines how many past data points are used to calculate the average.
    • The price to be used (open, close, high, low, etc.)
    • A displacement which basically defines how the hull moving average is shifted relative to the current bar.
  3. Data Retrieval and Calculation: The core of the script involves retrieving historical data (prices) from the selected timeframe. It then calculates the Hull Moving Average based on these prices and using the user-defined parameters, just as any other Hull Moving Average indicator. It retrieves two sets of HMA values from another custom indicator named "Hull Trend".

  4. Displaying the Results: Finally, the script plots these two sets of HMA values as lines on your current chart. These lines visually represent the Hull Moving Average calculated on the chosen timeframe, superimposed on your current chart's price action. The two lines are displayed in different colors (hot pink and aqua) to differentiate them.

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

//+------------------------------------------------------------------+
//|                                              #MTF_HULL_TREND.mq4 |
//|------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 HotPink
#property indicator_color2 Aqua

//---- input parameters
/*************************************************************************
PERIOD_M1   1
PERIOD_M5   5
PERIOD_M15  15
PERIOD_M30  30 
PERIOD_H1   60
PERIOD_H4   240
PERIOD_D1   1440
PERIOD_W1   10080
PERIOD_MN1  43200
You must use the numeric value of the timeframe that you want to use
when you set the TimeFrame' value with the indicator inputs.
---------------------------------------*/

extern int    TimeFrame = 0;
extern int    HMA_Period=20;
extern double Price=PRICE_OPEN;
extern double Displacement=0;
double ExtMapBuffer1[];
double ExtMapBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
  {
   
//---- indicator line

   SetIndexStyle(0,DRAW_LINE,EMPTY,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE,EMPTY,1);
   SetIndexBuffer(1,ExtMapBuffer2);

//---- name for DataWindow and indicator subwindow label   

   switch(TimeFrame)
   {
      case 1 : string TimeFrameStr="Period_M1"; break;
      case 5 : TimeFrameStr="Period_M5"; break;
      case 15 : TimeFrameStr="Period_M15"; break;
      case 30 : TimeFrameStr="Period_M30"; break;
      case 60 : TimeFrameStr="Period_H1"; break;
      case 240 : TimeFrameStr="Period_H4"; break;
      case 1440 : TimeFrameStr="Period_D1"; break;
      case 10080 : TimeFrameStr="Period_W1"; break;
      case 43200 : TimeFrameStr="Period_MN1"; break;
      default : TimeFrameStr="Current Timeframe";
   }
   IndicatorShortName("#MTF_HULL_TREND("+TimeFrameStr+")");

  }

//----

   return(0);
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

int start()
  {

   datetime TimeArray[];
   int    i,limit,y=0,counted_bars=IndicatorCounted(); 

// Plot defined time frame on to current time frame

   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); 
   
   limit= Bars-1;
   for(i=0,y=0;i<limit;i++)
   {
   if (Time[i]<TimeArray[y]) y++;

/***********************************************************   
   Add your main indicator loop below.  You can reference an existing
      indicator with its iName  or iCustom.
   Rule 1:  Add extern inputs above for all neccesary values   
   Rule 2:  Use 'TimeFrame' for the indicator time frame
   Rule 3:  Use 'y' for your indicator's shift value
 **********************************************************/  
 
   ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame,"Hull Trend",HMA_Period,Price,Displacement,2,y);
   ExtMapBuffer2[i]=iCustom(Symbol(),TimeFrame,"Hull Trend",HMA_Period,Price,Displacement,3,y); 
   
   }
   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 ---