Author: Copyright � 2006, Keris2112

Explanation of the MTF_RSI Metatrader Script

This script, named MTF_RSI.mq4, is a custom indicator designed for use within MetaTrader platforms. It allows traders to calculate and visualize the Relative Strength Index (RSI) based on data from different time frames. Below is an explanation of its logic in non-technical terms.

Purpose and Functionality

The RSI is a popular momentum oscillator used by traders to identify overbought or oversold conditions in a market. This script enhances the standard RSI calculation by allowing users to apply it across various time frames, such as one minute (M1), five minutes (M5), or daily periods.

Key Features

  • Custom Time Frames: Users can select different time frames to compute the RSI. This flexibility helps traders analyze market trends at multiple levels of granularity.

  • Indicator Levels: The script defines three key indicator levels—30, 70, and 50. These are standard thresholds used in trading:

    • 30 Level: Indicates a potentially oversold condition (a buying opportunity).
    • 70 Level: Suggests an overbought condition (a selling opportunity).
    • 50 Level: Represents the neutral midpoint of the RSI scale.
  • Visual Representation: The script plots these levels on a separate window, providing clear visual cues for traders to make informed decisions.

Input Parameters

The script allows users to set several parameters:

  1. TimeFrame: Choose from various numeric values representing different periods (e.g., 1 for M1, 5 for M5).
  2. RSIperiod: Set the period length for RSI calculation, typically 14 days.
  3. applied_price: Select which price type to use in calculations—close, open, high, low, median, typical, or weighted.

How It Works

  1. Initialization: The script sets up an indicator line and styles it for easy viewing. It also labels the subwindow based on the selected time frame.

  2. Data Plotting: During execution, the script maps data from the chosen time frame onto the current chart. This involves:

    • Copying timestamps of bars (price movements) for the specified time frame.
    • Adjusting calculations to account for these different periods.
  3. RSI Calculation: For each bar within the limit set by the script, it calculates the RSI value using the chosen parameters and plots this data on the chart.

Practical Use

By allowing traders to view RSI across multiple time frames, this script aids in:

  • Detecting trends and potential reversals.
  • Confirming signals from other technical indicators.
  • Making decisions based on a broader market context rather than short-term fluctuations.

Overall, MTF_RSI.mq4 is a versatile tool for traders who wish to incorporate multi-timeframe analysis into their trading strategies.

Indicators Used
Relative strength index
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
#MTF_RSI
//+------------------------------------------------------------------+
//|                                                     MTF_RSI.mq4 |
//|                                      Copyright © 2006, Keris2112 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Keris2112"
#property link      "http://www.forex-tsd.com"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_level1 30
#property indicator_level2 70
#property indicator_level3 50
#property indicator_minimum 0
#property indicator_maximum 100

//---- 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.
---------------------------------------
PRICE_CLOSE    0 Close price. 
PRICE_OPEN     1 Open price. 
PRICE_HIGH     2 High price. 
PRICE_LOW      3 Low price. 
PRICE_MEDIAN   4 Median price, (high+low)/2. 
PRICE_TYPICAL  5 Typical price, (high+low+close)/3. 
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4. 
You must use the numeric value of the Applied Price that you want to use
when you set the 'applied_price' value with the indicator inputs.
**************************************************************************/
extern int TimeFrame=0;
extern int RSIperiod=14;
extern int applied_price=0;


double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   
//---- indicator line
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(0,DRAW_LINE);
//---- 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_RSI("+RSIperiod+") ("+TimeFrameStr+")");

  }
//----
   return(0);
 
//+------------------------------------------------------------------+
//| MTF RSI                                            |
//+------------------------------------------------------------------+
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-counted_bars;
   limit=Bars-counted_bars+TimeFrame/Period();
   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]=iRSI(NULL,TimeFrame,RSIperiod,applied_price,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 ---