This tool is a specialized visual indicator designed for the MetaTrader platform to help traders monitor market momentum and identify potential price reversals. It focuses on the Relative Strength Index (RSI), a standard technical analysis tool used to determine whether an asset is overbought or oversold.
Core Functionality
The script provides a dual-layered visual representation of the RSI. Instead of simply showing a single line, it displays two distinct elements simultaneously:
- A Continuous Line: This represents the standard flow of momentum. It allows you to see the general trend of price strength over time.
- Dynamic Markers (Dots): The script mirrors the RSI value using specific symbols or dots on the chart. This visual redundancy is designed to highlight the current state of the market more clearly, making it easier for a trader to spot significant shifts at a glance.
Smart Configuration and "Super-RSI" Mode
One of the key professional features of this script is its ability to handle specialized settings intelligently:
- Memory Persistence: The tool is designed to remember your preferred settings. It uses "Global Variables" to store your specific RSI period. This means if you customize the tool to a certain timeframe or sensitivity, it will remember that choice even after you close and reopen the software.
- Dynamic Adaptation: The script automatically detects if it is being used in "Super-RSI Mode." It adjusts its display name and behavior based on these saved preferences, ensuring that the visual data remains consistent with your specific trading strategy.
Visual Guidance for Traders
To assist in making faster decisions, the indicator is framed with specific pre-defined levels:
- Overbought/Oversold Zones: The tool highlights key thresholds (such as 75, 65, 35, and 25). These act as visual "warning signs." When the RSI line moves into these zones, it suggests that the market may be stretched too far in one direction and could be due for a correction.
- Real-Time Tracking: The script constantly calculates the data from the most recent price closes, ensuring that the line and dots move in real-time as new market data enters the system.
Summary
In short, this script takes the standard RSI indicator and enhances it with dual visual cues (lines and dots) and an intelligent memory system. It is designed for traders who want a highly visible, persistent, and customized way to monitor whether a market is becoming overextended or gaining significant momentum.
//+------------------------------------------------------------------+
//| RSI_LiDo.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//| original "RSI_dot" concept by Accrete, and nicely tweaked by |
//| telsa of ForexFactory fame !! Many thanks telsa...Accrete |
//| |
//| Tweaked by Bluto 06/23/07 to work with Super RSI |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Lime
#property indicator_level1 75
#property indicator_level2 65
#property indicator_level3 35
#property indicator_level4 25
//---- input parameters
extern int Default_RSIPeriod = 4;
//---- buffers
double dRsiLine[];
double dRsiDots[];
//---- vars
string SR_RSIPeriod;
int RSIPeriod = 0;
int init() {
SR_RSIPeriod=AccountNumber()+"_"+Symbol()+"_SR_RSIPeriod";
if (GlobalVariableCheck(SR_RSIPeriod))
{
RSIPeriod = GlobalVariableGet(SR_RSIPeriod);
IndicatorShortName("RSI LiDo @ Super-RSI Mode (" + RSIPeriod + ")");
}
else
{
RSIPeriod = Default_RSIPeriod;
IndicatorShortName("RSI LiDo (" + RSIPeriod + ")");
}
SetIndexBuffer(0,dRsiLine);
SetIndexStyle (0,DRAW_LINE);
SetIndexLabel (0,"RSI");
SetIndexBuffer(1,dRsiDots);
SetIndexStyle (1,DRAW_ARROW);
SetIndexArrow (1,159);
SetIndexLabel (1,"RSI");
return(0);
}
int start() {
if (GlobalVariableCheck(SR_RSIPeriod))
{
if (GlobalVariableGet(SR_RSIPeriod)!= RSIPeriod)
{
RSIPeriod = GlobalVariableGet(SR_RSIPeriod);
IndicatorShortName("RSI LiDo @ Super-RSI Mode (" + RSIPeriod + ")");
}
}
// Determine how far back to iterate
int iBarsToCalc = Bars - IndicatorCounted();
if (iBarsToCalc < Bars) iBarsToCalc++;
for (int i=iBarsToCalc-1;i>=0;i--) {
dRsiLine[i] = iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i);
dRsiDots[i] = dRsiLine[i];
}
}
//__________________
//Will Code For Pips
Comments