Pine-Script normalize()和rescale()函数是否有计算或输入错误?

问题描述 投票:1回答:1

(对不起,我写了这个问题作为答案。所以,我问一个新问题。)

我对normalize()函数有两个问题:

1)是否有微小的计算错误?与具有相同参数的标准MACD相比,MACD直方图值之间的差异很小。尤其是具有较小的值。我对函数公式做了很多调整,但到目前为止还没有修复。我将histbase(直方图的零线)提升到50,并且最小到最大之间的归一化范围是0到100。

2)非常罕见,我的股票中标准化MACD直方图显示为完全红色(整个负值)。似乎公式器中存在零行错误。

查看我添加的照片。他们应该把它放好。

这里是代码:

// MACD ################################################

//Inputs MACD
fast_length     = input(title="MACD Fast Length", type=input.integer, defval=10)
slow_length     = input(title="MACD Slow Length", type=input.integer, defval=35)
src             = input(type=input.source, defval=close)
signal_length   = input(title="MACD Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source      = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal      = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)


//Calculating MACD, Signal + Histogram
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd    = fast_ma - slow_ma
signal  = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)


//Reference Declaration
hist    = (macd-signal) // true reference historgram


//Normalize Function when min/max unknown
normalize(_src, _min, _max) => 
    // Normalizes series with unknown min/max using historical min/max.
    // _src: series to rescale.
    // _min: minimum value of rescaled series.
    // _max: maximum value of rescaled series.
    var _historicMin = +10e10
    var _historicMax = -10e10
    _historicMin := min(nz(_src, _historicMin), _historicMin)
    _historicMax := max(nz(_src, _historicMax), _historicMax)
    _min + (_max - _min) * (_src - _historicMin) / max(_historicMax - _historicMin, 10e-10)


//Histogram Colors
col_grow_above  = #26A69A
col_grow_below  = #FFCDD2
col_fall_above  = #B2DFDB
col_fall_below  = #EF5350
col_macd        = #0094ff
col_signal      = #ff6a00
ma_color = normalize(hist, 0,100) // Coloring of histo-bars


//Plot MACD
plot(normalize(hist, 0,100), title="Histogram", style=plot.style_columns, color=color.red, histbase=50.0, color=(ma_color>=50? (ma_color[1] < ma_color ? col_grow_above : col_fall_above) : (ma_color[1] < ma_color ? col_grow_below : col_fall_below)),transp=50)


//END RSI/MACD/MFI ####################################################

1) Calculation Errors

2) Negative bars only

pine-script trading
1个回答
0
投票

您正在将无界信号归一化为新坐标,因此一旦归一化,就无法保证负值将在中心线以上或以下。可视化的最佳方式是随着条形的进展,标准化的中心线正在移动。不同的原始信号值可以映射到您的归一化值中的100,因为会发现新的原始信号历史最高点,而历史最高点是逐渐发现历史的。

© www.soinside.com 2019 - 2024. All rights reserved.