- Katılım
- 23 Eki 2020
- Mesajlar
- 1,826
Normalizes indicator to 0~100% boundaries. |
|
Normalized Indicator { From: http://www.metastocktools.com } { User inputs } plot:=Input("plot: [1]Indicator, [2]Oscillator",1,2,2); pds:=Input("Indicator periods",1,2600,21); { Indicator - EMA example } Ind:=Mov(C,pds,E); { Normalize indicator to historical highs/lows } Oscillator:=(Ind-Lowest(Ind)) / Max(Highest(Ind)-Lowest(Ind),.000001)*100; { Plot: Indicator on chart, oscillator in own window } If(plot=1,Ind,Oscillator) |
I often get asked something along this line of thinking:"My price chart is out of scale when I apply the MACD to it - how can I get MACD()/price crossover signals?" Before we can apply any relative comparisons between a chart and unscaled indicator, both plots need to be normalized to a common scale. There are two easy ways to normalize plots to 0~100%: using historical High/Lows, or x periods' High/Low. |
|
Normalization - Price/Indicator { Normalizes two data array plots to within 0~100% boundaries, and allows direct comparisons between the two plots. } {(C)Copyright 2004 Jose Silva. For personal use only. http://www.metastocktools.com } { Choose between normalizing lookback periods or historical High/Low normalization } pds:=Input("Normalizing lookback periods (1= historical Hi/Lo)",1,2600,126); { Plot 1: Price section } PriceX:=C; { Choose x pds or historical Price High/Low } Hi:=If(pds>1,HHV(PriceX,pds),Highest(PriceX)); Lo:=If(pds>1,LLV(PriceX,pds),Lowest(PriceX)); { Price normalized to 0~100% } PriceNorm:=(PriceX-Lo)/Max(Hi-Lo,.000001)*100; { Plot 2: Indicator/Oscillator section } IndX:=MACD(); { Choose x pds or historical Indicator High/Low} Hi:=If(pds>1,HHV(IndX,pds),Highest(IndX)); Lo:=If(pds>1,LLV(IndX,pds),Lowest(IndX)); { Indicator normalized to 0~100% } IndicatorNorm:=(IndX-Lo)/Max(Hi-Lo,.000001)*100; { Plot in own window } PriceNorm; IndicatorNorm |
Source / From: |