首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFI - scaling pos和neg资金流

MFI - scaling pos和neg资金流
EN

Stack Overflow用户
提问于 2021-03-15 17:14:36
回答 2查看 534关注 0票数 0

代码

代码语言:javascript
复制
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资金流图不符合价格图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-17 16:37:52

资金流指数是一个从0到100的有界函数。为了正确地绘制出我想要的正负资金流,我需要规范最小值和最大值。

结果:

代码语言:javascript
复制
//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')
票数 0
EN

Stack Overflow用户

发布于 2021-03-15 17:43:05

为此,您可能需要使用研究()函数的研究()参数。

它省去了你正常化的麻烦。

参考手册中的研究()函数摘录如下:

标度(const整型)价格标尺,该指标应附加于此。可能的值是: scale.right、scale.left、scale.none。值scale.none只能与“overlay=true”设置结合使用。如果省略,则使用主系列中的比例。

使用scale.left的示例

代码语言:javascript
复制
//@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会产生这样的结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66642574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档