Overview of the Multi-Meter RSI Indicator
This script is designed to provide a comprehensive, multi-timeframe summary of market momentum at a single glance. Instead of requiring you to switch between different charts to see the Relative Strength Index (RSI) for various time periods, this tool consolidates that information into a clean, visual "meter" directly on your current trading screen.
Core Functionality
1. Multi-Timeframe Synchronization The logic automatically calculates and fetches the RSI values for seven different timeframes simultaneously:
- 1 Minute (M1)
- 5 Minutes (M5)
- 15 Minutes (M15)
- 30 Minutes (M30)
- 1 Hour (H1)
- 4 Hours (H4)
- Daily (D1)
2. Visual Heat-Mapping (Color Coding) The script simplifies complex numerical data into an intuitive color system. Based on the specific RSI levels you define, the indicator assigns a unique color to each timeframe's value:
- High Momentum/Overbought Zones: Represented by colors like Red or Orange.
- Neutral Zones: Represented by Yellow or Yellow-Green.
- Low Momentum/Oversold Zones: Represented by Blue or Dark Blue.
By looking at the "meter," you can instantly see if the market is currently trending aggressively in one direction across different time scales (e.g., identifying if a 1-minute move is supported by the daily trend).
3. Customizable Display Layout The script includes several user-friendly settings to ensure it fits your specific workspace:
- Positioning: You can choose which corner of the chart the display appears in (top right is the default).
- Adjustments: It allows for "side-to-side" and "up-down" shifting, so you can move the labels to avoid overlapping with other indicators or price candles.
- Heading Toggle: You can turn on a header that labels each data point (M1, M5, etc.) for better clarity.
User Experience summary
When you load this script, it creates a dashboard of colored labels. As the market moves, these labels update in real-time. This allows a trader to maintain "big picture" awareness without cluttering their main chart with multiple sub-windows, making it an efficient tool for identifying trend alignment across various time horizons.
//+------------------------------------------------------------------+
//| _TRO_Multi_Meter_RSI |
//| |
//| Copyright © 2007, Avery T. Horton, Jr. aka TheRumpledOne |
//| |
//| PO BOX 43575, TUCSON, AZ 85733 |
//| |
//| GIFT AND DONATIONS ACCEPTED |
//| |
//| therumpldone@gmail.com |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern bool Show_Heading = false;
extern string IndName = "RSI" ; // change
//*******************
extern bool Corner_of_Chart_RIGHT_TOP = true;
extern int Shift_UP_DN =0;
extern int Adjust_Side_to_side = 20;
extern color BarLabel_color = LightBlue;
extern color CommentLabel_color = LightBlue;
//*******************
// change inputs for your indicator
string RSI_Settings = "=== RSI Settings ===";
extern int RSIPeriod = 2; // RSI period
extern double Level5 = 95 ;
extern double Level4 = 80 ;
extern double Level3 = 50 ;
extern double Level2 = 20 ;
extern double Level1 = 5 ;
extern double Level0 = 0 ;
extern color colorLevel5 = Red ;
extern color colorLevel4 = Orange ;
extern color colorLevel3 = Yellow ;
extern color colorLevel2 = YellowGreen ;
extern color colorLevel1 = Blue ;
extern color colorLevel0 = DarkBlue;
//*******************
string Obj0001,Obj0002,Obj0003,Obj0004,Obj0005,Obj0006,Obj0007,Obj0008,Obj0009;
//+---------------
color MeterColor( double rsimeter )
{
if( rsimeter > Level5 ) { return( colorLevel5 ); }
if( rsimeter > Level4 ) { return( colorLevel4 ); }
if( rsimeter > Level3 ) { return( colorLevel3 ); }
if( rsimeter > Level2 ) { return( colorLevel2 ); }
if( rsimeter > Level1 ) { return( colorLevel1 ); }
return( colorLevel0 );
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//***********************************************************************************************************************
string LabelTime="";
if (LabelTime=="") {LabelTime=TimeToStr(TimeLocal(),TIME_SECONDS); }
int counted_bars=IndicatorCounted();
if ( Show_Heading) {
if (Corner_of_Chart_RIGHT_TOP == true)
{
Obj0001 = "Numbers" + LabelTime ;
ObjectCreate(Obj0001, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0001, " M1 M5 M15 M30 H1 H4 D1", 7, "Tahoma Narrow", BarLabel_color);
ObjectSet(Obj0001, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0001, OBJPROP_XDISTANCE, 17+Adjust_Side_to_side);
ObjectSet(Obj0001, OBJPROP_YDISTANCE, 28+Shift_UP_DN);
}
if (Corner_of_Chart_RIGHT_TOP == false)
{
ObjectCreate(Obj0001, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0001, " M1 M5 M15 M30 H1 H4 D1", 7, "Tahoma Narrow", BarLabel_color);
ObjectSet(Obj0001, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0001, OBJPROP_XDISTANCE, 17+Adjust_Side_to_side);
ObjectSet(Obj0001, OBJPROP_YDISTANCE, 24+Shift_UP_DN);
}
} // Show_Heading
//******************* change for your indicator ********************
//RSI Signals
string M1_RSI= "",M5_RSI= "", M15_RSI= "", M30_RSI= "", H1_RSI= "", H4_RSI= "", D1_RSI= "",PRC1;
color color_RSIm1,color_RSIm5,color_RSIm15,color_RSIm30,color_RSIm60,color_RSIm240,color_RSIm1440;
double rsi_1=iRSI(NULL,PERIOD_M1,RSIPeriod,PRICE_CLOSE,0);
double rsi_5=iRSI(NULL,PERIOD_M5,RSIPeriod,PRICE_CLOSE,0);
double rsi_15=iRSI(NULL,PERIOD_M15,RSIPeriod,PRICE_CLOSE,0);
double rsi_30=iRSI(NULL,PERIOD_M30,RSIPeriod,PRICE_CLOSE,0);
double rsi_60=iRSI(NULL,PERIOD_H1,RSIPeriod,PRICE_CLOSE,0);
double rsi_240=iRSI(NULL,PERIOD_H4,RSIPeriod,PRICE_CLOSE,0);
double rsi_1440=iRSI(NULL,PERIOD_D1,RSIPeriod,PRICE_CLOSE,0);
M1_RSI= "-"; color_RSIm1 = MeterColor( rsi_1 ) ;
M5_RSI= "-"; color_RSIm5 = MeterColor( rsi_5 ) ;
M15_RSI= "-";color_RSIm15 = MeterColor( rsi_15 ) ;
M30_RSI= "-";color_RSIm30 = MeterColor( rsi_30) ;
H1_RSI= "-";color_RSIm60 = MeterColor( rsi_60) ;
H4_RSI= "-";color_RSIm240 = MeterColor( rsi_240) ;
D1_RSI= "-";color_RSIm1440 = MeterColor( rsi_1440) ;
Obj0002 = "SignalRSIM1t" + LabelTime ;
ObjectCreate(Obj0002, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0002,IndName, 7, "Tahoma Narrow", BarLabel_color);
ObjectSet(Obj0002, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0002, OBJPROP_XDISTANCE, 155+Adjust_Side_to_side);
ObjectSet(Obj0002, OBJPROP_YDISTANCE, 50+Shift_UP_DN);
Obj0003 = "SignalRSIM1" + LabelTime ;
ObjectCreate(Obj0003, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0003, M1_RSI, 40, "Tahoma Narrow", color_RSIm1);
ObjectSet(Obj0003, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0003, OBJPROP_XDISTANCE, 130+Adjust_Side_to_side);
ObjectSet(Obj0003, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
Obj0004 = "SignalRSIM5" + LabelTime ;
ObjectCreate(Obj0004, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0004, M5_RSI, 40, "Tahoma Narrow", color_RSIm5);
ObjectSet(Obj0004, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0004, OBJPROP_XDISTANCE, 110+Adjust_Side_to_side);
ObjectSet(Obj0004, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
Obj0005 = "SignalRSIM15" + LabelTime ;
ObjectCreate(Obj0005, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0005, M15_RSI, 40, "Tahoma Narrow", color_RSIm15);
ObjectSet(Obj0005, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0005, OBJPROP_XDISTANCE, 90+Adjust_Side_to_side);
ObjectSet(Obj0005, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
Obj0006 = "SignalRSIM30" + LabelTime ;
ObjectCreate(Obj0006, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0006, M30_RSI, 40, "Tahoma Narrow", color_RSIm30);
ObjectSet(Obj0006, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0006, OBJPROP_XDISTANCE, 70+Adjust_Side_to_side);
ObjectSet(Obj0006, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
Obj0007 = "SignalRSIM60" + LabelTime ;
ObjectCreate(Obj0007, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0007, H1_RSI, 40, "Tahoma Narrow", color_RSIm60);
ObjectSet(Obj0007, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0007, OBJPROP_XDISTANCE, 50+Adjust_Side_to_side);
ObjectSet(Obj0007, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
Obj0008 = "SignalRSIM240" + LabelTime ;
ObjectCreate(Obj0008, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0008, H4_RSI, 40, "Tahoma Narrow", color_RSIm240);
ObjectSet(Obj0008, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0008, OBJPROP_XDISTANCE, 30+Adjust_Side_to_side);
ObjectSet(Obj0008, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
Obj0009 = "SignalRSIM1440" + LabelTime ;
ObjectCreate(Obj0009, OBJ_LABEL, 0, 0, 0);
ObjectSetText(Obj0009, D1_RSI, 40, "Tahoma Narrow", color_RSIm1440);
ObjectSet(Obj0009, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet(Obj0009, OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet(Obj0009, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll(0,OBJ_HLINE);
ObjectsDeleteAll(0,OBJ_TEXT);
ObjectsDeleteAll(0,OBJ_LABEL);
deleteObject();
//----
return(0);
}
void deleteObject()
{
ObjectDelete(Obj0001);
ObjectDelete(Obj0002);
ObjectDelete(Obj0003);
ObjectDelete(Obj0004);
ObjectDelete(Obj0005);
ObjectDelete(Obj0006);
ObjectDelete(Obj0007);
ObjectDelete(Obj0008);
ObjectDelete(Obj0009);
}
Comments