代码
length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
mfipos = sum(volume * (change(src) <= 0 ? 0 : src), length)
mfineg = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(mfipos, mfineg) =>
if mfipos == 0
100
if mfineg == 0
0
100.0 - (100.0 / (1.0 + mfipos / mfineg))
mf = _rsi(mfipos, mfineg)
plot(mfipos, color=#FF7000, linewidth=2, title='MFI pos')
plot(mfineg, color=#0088FA, linewidth=2, title='MFI neg')MFI有界。Pos和Neg资金流图不符合价格图。
发布于 2021-03-17 16:37:52
资金流指数是一个从0到100的有界函数。为了正确地绘制出我想要的正负资金流,我需要规范最小值和最大值。
结果:

//Normal MFI calculation
length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
mfiPositive = sum(volume * (change(src) <= 0 ? 0 : src), length)
mfiNegative = sum(volume * (change(src) >= 0 ? 0 : src), length)
//MFI variables to normalize data to be plotted
mfiLow = lowest(length)
mfiHigh = highest(length)
min_mfiPos = lowest(mfiPositive, length)
min_mfiNeg = lowest(mfiNegative, length)
max_mfiPos = highest(mfiPositive, length)
max_mfiNeg = highest(mfiNegative, length)
mfiPosNorm = mfiHigh + (mfiPositive - min_mfiPos) * (mfiHigh - mfiLow) / (max_mfiPos - min_mfiPos)
mfiNegNorm = mfiHigh + (mfiNegative - min_mfiNeg) * (mfiHigh - mfiLow) / (max_mfiNeg - min_mfiNeg)
_rsi(mfiPositive, mfiNegative) =>
if mfiNegative == 0
100
if mfiPositive == 0
0
100 - (100 / (1.0 + mfiPositive / mfiNegative))
mf = _rsi(mfiPositive, mfiNegative)
plot(mfiPosNorm, color=colorNavy, linewidth=2, title='MFI Positive Money Flow')
plot(mfiNegNorm, color=colorFuchsia, linewidth=2, title='MFI Negative Money Flow')发布于 2021-03-15 17:43:05
它省去了你正常化的麻烦。
参考手册中的研究()函数摘录如下:
标度(const整型)价格标尺,该指标应附加于此。可能的值是: scale.right、scale.left、scale.none。值scale.none只能与“overlay=true”设置结合使用。如果省略,则使用主系列中的比例。
使用scale.left的示例
//@version=4
study("Test", shorttitle="TST", overlay=true, scale=scale.left)
length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
mfiSlow = sum(volume * (change(src) <= 0 ? 0 : src), length)
mfiFast = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(mfiSlow, mfiFast) =>
if mfiFast == 0
100
if mfiSlow == 0
0
100.0 - (100.0 / (1.0 + mfiSlow / mfiFast))
mf = _rsi(mfiSlow, mfiFast)
plot(mfiSlow, color=#FF7000, linewidth=2, title='MFI Slow')
plot(mfiFast, color=#0088FA, linewidth=2, title='MFI Fast')产额
使用scale.none会产生这样的结果

https://stackoverflow.com/questions/66642574
复制相似问题