STLM_hist
Download scriptThis script functions as a custom technical analysis indicator designed to visualize specific market momentum patterns through a dual-color histogram. Rather than relying on simple moving averages, it uses a complex weighted calculation to identify shifts in price dynamics.
Core Logic Overview
The script analyzes historical price data by applying two distinct, highly specific mathematical formulas to the closing prices of the asset. These formulas act as "detectors."
Each formula assigns a unique weight (a positive or negative decimal) to various past price points. By summing these weighted values together, the script produces two primary results:
- The Primary Signal: A calculation based on the immediate trend.
- The Secondary Signal: A comparison calculation based on a slightly offset timeframe.
How it Works
The tool constantly compares these two signals against one another to determine the "strength" and "direction" of the market movement:
- Bullish Detection (Green): If the primary signal is greater than the secondary signal, the script identifies this as an upward momentum state. It then draws a Green histogram on your chart to represent this growth.
- Bearish Detection (Red): If the secondary signal is greater than the primary signal, the script identifies this as downward momentum. It responds by drawing a Red histogram.
Key Visual Features
- Histogram Display: Instead of a single line, the indicator provides a clear visual "fence" where the height of the bars shows the magnitude of the momentum.
- Dynamic Filtering: The script is designed to look back across a specific number of historical bars (defaulting to 300) to ensure that the data it uses is relevant to the current market environment.
- Offset Sensitivity: By using shifted calculations (comparing different "snapshots" of weighted data), the tool attempts to filter out noise and highlight meaningful transitions between buying and selling pressure.
Summary for the User
In simple terms, this script acts as a momentum filter. It looks at a complex web of past prices, calculates two different "scores" for the current market, and pits them against each other. You see the result as a visual map: Green shows where the primary momentum is winning, and Red shows where the opposing momentum is taking control.
//+------------------------------------------------------------------+
//| STLM_hist.mq4 |
//| Ramdass - Conversion only |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//----
extern int CountBars = 300;
//---- buffers
double Up[];
double Down[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_HISTOGRAM);
SetIndexBuffer(0, Up);
SetIndexStyle(1, DRAW_HISTOGRAM);
SetIndexBuffer(1, Down);
//----
SetIndexDrawBegin(0, Bars - CountBars + 90);
SetIndexDrawBegin(1, Bars - CountBars + 90);
//----
return(0);
}
//+------------------------------------------------------------------+
//| STLM |
//+------------------------------------------------------------------+
int start()
{
int i, i2, counted_bars = IndicatorCounted();
double STLM, STLM1, value1, value2, value3, value4;
//----
if(Bars <= 90)
return(0);
//---- initial zero
if(counted_bars < 90)
{
for(i = 1; i <= 0; i++)
Up[CountBars-i] = 0.0;
for(i = 1; i <= 0; i++)
Down[CountBars-i] = 0.0;
}
//----
i = CountBars - 90 - 1;
//----
while(i>=0)
{
value1 =
0.0982862174*Close[i+0]
+0.0975682269*Close[i+1]
+0.0961401078*Close[i+2]
+0.0940230544*Close[i+3]
+0.0912437090*Close[i+4]
+0.0878391006*Close[i+5]
+0.0838544303*Close[i+6]
+0.0793406350*Close[i+7]
+0.0743569346*Close[i+8]
+0.0689666682*Close[i+9]
+0.0632381578*Close[i+10]
+0.0572428925*Close[i+11]
+0.0510534242*Close[i+12]
+0.0447468229*Close[i+13]
+0.0383959950*Close[i+14]
+0.0320735368*Close[i+15]
+0.0258537721*Close[i+16]
+0.0198005183*Close[i+17]
+0.0139807863*Close[i+18]
+0.0084512448*Close[i+19]
+0.0032639979*Close[i+20]
-0.0015350359*Close[i+21]
-0.0059060082*Close[i+22]
-0.0098190256*Close[i+23]
-0.0132507215*Close[i+24]
-0.0161875265*Close[i+25]
-0.0186164872*Close[i+26]
-0.0205446727*Close[i+27]
-0.0219739146*Close[i+28]
-0.0229204861*Close[i+29]
-0.0234080863*Close[i+30]
-0.0234566315*Close[i+31]
-0.0231017777*Close[i+32]
-0.0223796900*Close[i+33]
-0.0213300463*Close[i+34]
-0.0199924534*Close[i+35]
-0.0184126992*Close[i+36]
-0.0166377699*Close[i+37]
-0.0147139428*Close[i+38]
-0.0126796776*Close[i+39]
-0.0105938331*Close[i+40]
-0.0084736770*Close[i+41]
-0.0063841850*Close[i+42]
-0.0043466731*Close[i+43]
-0.0023956944*Close[i+44]
-0.0005535180*Close[i+45]
+0.0011421469*Close[i+46]
+0.0026845693*Close[i+47]
+0.0040471369*Close[i+48]
+0.0052380201*Close[i+49]
+0.0062194591*Close[i+50]
+0.0070340085*Close[i+51]
+0.0076266453*Close[i+52]
+0.0080376628*Close[i+53]
+0.0083037666*Close[i+54]
+0.0083694798*Close[i+55]
+0.0082901022*Close[i+56]
+0.0080741359*Close[i+57]
+0.0077543820*Close[i+58]
+0.0073260526*Close[i+59]
+0.0068163569*Close[i+60]
+0.0062325477*Close[i+61]
+0.0056078229*Close[i+62]
+0.0049516078*Close[i+63]
+0.0161380976*Close[i+64];
//----
value2 =
-0.0074151919*Close[i+0]
-0.0060698985*Close[i+1]
-0.0044979052*Close[i+2]
-0.0027054278*Close[i+3]
-0.0007031702*Close[i+4]
+0.0014951741*Close[i+5]
+0.0038713513*Close[i+6]
+0.0064043271*Close[i+7]
+0.0090702334*Close[i+8]
+0.0118431116*Close[i+9]
+0.0146922652*Close[i+10]
+0.0175884606*Close[i+11]
+0.0204976517*Close[i+12]
+0.0233865835*Close[i+13]
+0.0262218588*Close[i+14]
+0.0289681736*Close[i+15]
+0.0315922931*Close[i+16]
+0.0340614696*Close[i+17]
+0.0363444061*Close[i+18]
+0.0384120882*Close[i+19]
+0.0402373884*Close[i+20]
+0.0417969735*Close[i+21]
+0.0430701377*Close[i+22]
+0.0440399188*Close[i+23]
+0.0446941124*Close[i+24]
+0.0450230100*Close[i+25]
+0.0450230100*Close[i+26]
+0.0446941124*Close[i+27]
+0.0440399188*Close[i+28]
+0.0430701377*Close[i+29]
+0.0417969735*Close[i+30]
+0.0402373884*Close[i+31]
+0.0384120882*Close[i+32]
+0.0363444061*Close[i+33]
+0.0340614696*Close[i+34]
+0.0315922931*Close[i+35]
+0.0289681736*Close[i+36]
+0.0262218588*Close[i+37]
+0.0233865835*Close[i+38]
+0.0204976517*Close[i+39]
+0.0175884606*Close[i+40]
+0.0146922652*Close[i+41]
+0.0118431116*Close[i+42]
+0.0090702334*Close[i+43]
+0.0064043271*Close[i+44]
+0.0038713513*Close[i+45]
+0.0014951741*Close[i+46]
-0.0007031702*Close[i+47]
-0.0027054278*Close[i+48]
-0.0044979052*Close[i+49]
-0.0060698985*Close[i+50]
-0.0074151919*Close[i+51]
-0.0085278517*Close[i+52]
-0.0094111161*Close[i+53]
-0.0100658241*Close[i+54]
-0.0104994302*Close[i+55]
-0.0107227904*Close[i+56]
-0.0107450280*Close[i+57]
-0.0105824763*Close[i+58]
-0.0102517019*Close[i+59]
-0.0097708805*Close[i+60]
-0.0091581551*Close[i+61]
-0.0084345004*Close[i+62]
-0.0076214397*Close[i+63]
-0.0067401718*Close[i+64]
-0.0058083144*Close[i+65]
-0.0048528295*Close[i+66]
-0.0038816271*Close[i+67]
-0.0029244713*Close[i+68]
-0.0019911267*Close[i+69]
-0.0010974211*Close[i+70]
-0.0002535559*Close[i+71]
+0.0005231953*Close[i+72]
+0.0012297491*Close[i+73]
+0.0018539149*Close[i+74]
+0.0023994354*Close[i+75]
+0.0028490136*Close[i+76]
+0.0032221429*Close[i+77]
+0.0034936183*Close[i+78]
+0.0036818974*Close[i+79]
+0.0038037944*Close[i+80]
+0.0038338964*Close[i+81]
+0.0037975350*Close[i+82]
+0.0036986051*Close[i+83]
+0.0035521320*Close[i+84]
+0.0033559226*Close[i+85]
+0.0031224409*Close[i+86]
+0.0028550092*Close[i+87]
+0.0025688349*Close[i+88]
+0.0022682355*Close[i+89]
+0.0073925495*Close[i+90];
//----
value3 =
0.0982862174*Close[i+0+1]
+0.0975682269*Close[i+1+1]
+0.0961401078*Close[i+2+1]
+0.0940230544*Close[i+3+1]
+0.0912437090*Close[i+4+1]
+0.0878391006*Close[i+5+1]
+0.0838544303*Close[i+6+1]
+0.0793406350*Close[i+7+1]
+0.0743569346*Close[i+8+1]
+0.0689666682*Close[i+9+1]
+0.0632381578*Close[i+10+1]
+0.0572428925*Close[i+11+1]
+0.0510534242*Close[i+12+1]
+0.0447468229*Close[i+13+1]
+0.0383959950*Close[i+14+1]
+0.0320735368*Close[i+15+1]
+0.0258537721*Close[i+16+1]
+0.0198005183*Close[i+17+1]
+0.0139807863*Close[i+18+1]
+0.0084512448*Close[i+19+1]
+0.0032639979*Close[i+20+1]
-0.0015350359*Close[i+21+1]
-0.0059060082*Close[i+22+1]
-0.0098190256*Close[i+23+1]
-0.0132507215*Close[i+24+1]
-0.0161875265*Close[i+25+1]
-0.0186164872*Close[i+26+1]
-0.0205446727*Close[i+27+1]
-0.0219739146*Close[i+28+1]
-0.0229204861*Close[i+29+1]
-0.0234080863*Close[i+30+1]
-0.0234566315*Close[i+31+1]
-0.0231017777*Close[i+32+1]
-0.0223796900*Close[i+33+1]
-0.0213300463*Close[i+34+1]
-0.0199924534*Close[i+35+1]
-0.0184126992*Close[i+36+1]
-0.0166377699*Close[i+37+1]
-0.0147139428*Close[i+38+1]
-0.0126796776*Close[i+39+1]
-0.0105938331*Close[i+40+1]
-0.0084736770*Close[i+41+1]
-0.0063841850*Close[i+42+1]
-0.0043466731*Close[i+43+1]
-0.0023956944*Close[i+44+1]
-0.0005535180*Close[i+45+1]
+0.0011421469*Close[i+46+1]
+0.0026845693*Close[i+47+1]
+0.0040471369*Close[i+48+1]
+0.0052380201*Close[i+49+1]
+0.0062194591*Close[i+50+1]
+0.0070340085*Close[i+51+1]
+0.0076266453*Close[i+52+1]
+0.0080376628*Close[i+53+1]
+0.0083037666*Close[i+54+1]
+0.0083694798*Close[i+55+1]
+0.0082901022*Close[i+56+1]
+0.0080741359*Close[i+57+1]
+0.0077543820*Close[i+58+1]
+0.0073260526*Close[i+59+1]
+0.0068163569*Close[i+60+1]
+0.0062325477*Close[i+61+1]
+0.0056078229*Close[i+62+1]
+0.0049516078*Close[i+63+1]
+0.0161380976*Close[i+64+1];
//----
value4 =
-0.0074151919*Close[i+0+1]
-0.0060698985*Close[i+1+1]
-0.0044979052*Close[i+2+1]
-0.0027054278*Close[i+3+1]
-0.0007031702*Close[i+4+1]
+0.0014951741*Close[i+5+1]
+0.0038713513*Close[i+6+1]
+0.0064043271*Close[i+7+1]
+0.0090702334*Close[i+8+1]
+0.0118431116*Close[i+9+1]
+0.0146922652*Close[i+10+1]
+0.0175884606*Close[i+11+1]
+0.0204976517*Close[i+12+1]
+0.0233865835*Close[i+13+1]
+0.0262218588*Close[i+14+1]
+0.0289681736*Close[i+15+1]
+0.0315922931*Close[i+16+1]
+0.0340614696*Close[i+17+1]
+0.0363444061*Close[i+18+1]
+0.0384120882*Close[i+19+1]
+0.0402373884*Close[i+20+1]
+0.0417969735*Close[i+21+1]
+0.0430701377*Close[i+22+1]
+0.0440399188*Close[i+23+1]
+0.0446941124*Close[i+24+1]
+0.0450230100*Close[i+25+1]
+0.0450230100*Close[i+26+1]
+0.0446941124*Close[i+27+1]
+0.0440399188*Close[i+28+1]
+0.0430701377*Close[i+29+1]
+0.0417969735*Close[i+30+1]
+0.0402373884*Close[i+31+1]
+0.0384120882*Close[i+32+1]
+0.0363444061*Close[i+33+1]
+0.0340614696*Close[i+34+1]
+0.0315922931*Close[i+35+1]
+0.0289681736*Close[i+36+1]
+0.0262218588*Close[i+37+1]
+0.0233865835*Close[i+38+1]
+0.0204976517*Close[i+39+1]
+0.0175884606*Close[i+40+1]
+0.0146922652*Close[i+41+1]
+0.0118431116*Close[i+42+1]
+0.0090702334*Close[i+43+1]
+0.0064043271*Close[i+44+1]
+0.0038713513*Close[i+45+1]
+0.0014951741*Close[i+46+1]
-0.0007031702*Close[i+47+1]
-0.0027054278*Close[i+48+1]
-0.0044979052*Close[i+49+1]
-0.0060698985*Close[i+50+1]
-0.0074151919*Close[i+51+1]
-0.0085278517*Close[i+52+1]
-0.0094111161*Close[i+53+1]
-0.0100658241*Close[i+54+1]
-0.0104994302*Close[i+55+1]
-0.0107227904*Close[i+56+1]
-0.0107450280*Close[i+57+1]
-0.0105824763*Close[i+58+1]
-0.0102517019*Close[i+59+1]
-0.0097708805*Close[i+60+1]
-0.0091581551*Close[i+61+1]
-0.0084345004*Close[i+62+1]
-0.0076214397*Close[i+63+1]
-0.0067401718*Close[i+64+1]
-0.0058083144*Close[i+65+1]
-0.0048528295*Close[i+66+1]
-0.0038816271*Close[i+67+1]
-0.0029244713*Close[i+68+1]
-0.0019911267*Close[i+69+1]
-0.0010974211*Close[i+70+1]
-0.0002535559*Close[i+71+1]
+0.0005231953*Close[i+72+1]
+0.0012297491*Close[i+73+1]
+0.0018539149*Close[i+74+1]
+0.0023994354*Close[i+75+1]
+0.0028490136*Close[i+76+1]
+0.0032221429*Close[i+77+1]
+0.0034936183*Close[i+78+1]
+0.0036818974*Close[i+79+1]
+0.0038037944*Close[i+80+1]
+0.0038338964*Close[i+81+1]
+0.0037975350*Close[i+82+1]
+0.0036986051*Close[i+83+1]
+0.0035521320*Close[i+84+1]
+0.0033559226*Close[i+85+1]
+0.0031224409*Close[i+86+1]
+0.0028550092*Close[i+87+1]
+0.0025688349*Close[i+88+1]
+0.0022682355*Close[i+89+1]
+0.0073925495*Close[i+90+1];
//----
STLM = value1 - value2;
STLM1 = value3 - value4;
//----
if(STLM > STLM1)
{
Up[i] = STLM;
Down[i] = 0.0;
}
else
{
Down[i] = STLM;
Up[i] = 0.0;
}
i--;
}
return(0);
}
//+------------------------------------------------------------------+
Comments