Pine script MFI-按比例调整pos和neg资金流

Pine script MFI-按比例调整pos和neg资金流,pine-script,Pine Script,代码 length=input(title=“length”,type=input.integer,deffal=14,minval=1,maxval=2000) src=hlc3 mfipos=总量*(变化(src)=0?0:src),长度) _rsi(mfipos、mfineg)=> 如果mfipos==0 100 如果mfineg==0 0 100.0-(100.0/(1.0+mfipos/mfineg)) mf=_rsi(mfipos、mfineg) 绘图(mfipos,颜色=#FF70

代码

length=input(title=“length”,type=input.integer,deffal=14,minval=1,maxval=2000)
src=hlc3
mfipos=总量*(变化(src)=0?0:src),长度)
_rsi(mfipos、mfineg)=>
如果mfipos==0
100
如果mfineg==0
0
100.0-(100.0/(1.0+mfipos/mfineg))
mf=_rsi(mfipos、mfineg)
绘图(mfipos,颜色=#FF7000,线宽=2,标题='MFI位置')
绘图(图幅,颜色=#0088FA,线宽=2,标题='MFI neg')
MFI是有界的。
Pos和Neg货币流量图不会绘制以下价格图。

您可能需要使用函数的
比例
参数进行绘制。
它省去了正常化的麻烦

参考手册中的功能摘录:

标度(常量整数)指标应为的价格标度 附属于。可能的值为:scale.right、scale.left、scale.none。 Value scale.none只能与组合应用 “overlay=true”设置。如果省略,则使用主系列中的刻度

左标度为
的示例

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')
/@version=4
研究(“测试”,shorttitle=“TST”,叠加=true,比例=scale.left)
长度=输入(title=“length”,type=input.integer,deffal=14,minval=1,maxval=2000)
src=hlc3
mfiSlow=总量*(变化(src)=0?0:src),长度)
_rsi(mfiSlow,mfiFast)=>
如果mfiFast==0
100
如果mfiSlow==0
0
100.0-(100.0/(1.0+mfiSlow/mfiFast))
mf=_rsi(mfiSlow,mfiFast)
绘图(MFI慢,颜色=#FF7000,线宽=2,标题='MFI慢')
绘图(mfiFast,颜色=#0088FA,线宽=2,标题='MFI Fast')
产生

使用
scale.none
将产生此结果


您可能需要使用函数的
scale
参数进行此操作。
它省去了正常化的麻烦

参考手册中的功能摘录:

标度(常量整数)指标应为的价格标度 附属于。可能的值为:scale.right、scale.left、scale.none。 Value scale.none只能与组合应用 “overlay=true”设置。如果省略,则使用主系列中的刻度

左标度为
的示例

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')
/@version=4
研究(“测试”,shorttitle=“TST”,叠加=true,比例=scale.left)
长度=输入(title=“length”,type=input.integer,deffal=14,minval=1,maxval=2000)
src=hlc3
mfiSlow=总量*(变化(src)=0?0:src),长度)
_rsi(mfiSlow,mfiFast)=>
如果mfiFast==0
100
如果mfiSlow==0
0
100.0-(100.0/(1.0+mfiSlow/mfiFast))
mf=_rsi(mfiSlow,mfiFast)
绘图(MFI慢,颜色=#FF7000,线宽=2,标题='MFI慢')
绘图(mfiFast,颜色=#0088FA,线宽=2,标题='MFI Fast')
产生

使用
scale.none
将产生此结果


货币流量指数是一个从0到100的有界函数。为了正确地绘制出我想要的正、负资金流,我需要将最小值和最大值标准化

结果:

//正常MFI计算
长度=输入(title=“length”,type=input.integer,deffal=14,minval=1,maxval=2000)
src=hlc3
MFI正=总和(体积*(变化(src)=0?0:src),长度)
//用于规范化待绘制数据的MFI变量
mfiLow=最低(长度)
mfiHigh=最高(长度)
min_mfiPos=最低(MFI正,长度)
最小值=最低值(最小值,长度)
max_mfiPos=最高(mfiPositive,长度)
最大值=最高值(最小值,长度)
MFiPosRom=mfiHigh+(mfiPositive-min_-mfiPos)*(mfiHigh-mfiLow)/(max_-mfiPos-min_-mfiPos)
mfiNegNorm=mfiHigh+(mfiNegative-最小值)*(mfiHigh-最小值)/(最大值-最小值)
_rsi(MFI阳性,MFI阴性)=>
如果mfiNegative==0
100
如果mfiPositive==0
0
100-(100/(1.0+MFI正/负))
mf=_rsi(MFI正、MFI负)
绘图(mfiPosNorm,color=colorNavy,线宽=2,title='MFI正向资金流')
绘图(MFINENGNORM,颜色=彩色品红,线宽=2,标题='MFI负资金流')

货币流量指数是一个从0到100的有界函数。为了正确地绘制出我想要的正、负资金流,我需要将最小值和最大值标准化

结果:

//正常MFI计算
长度=输入(title=“length”,type=input.integer,deffal=14,minval=1,maxval=2000)
src=hlc3
MFI正=总和(体积*(变化(src)=0?0:src),长度)
//用于规范化待绘制数据的MFI变量
mfiLow=最低(长度)
mfiHigh=最高(长度)
min_mfiPos=最低(MFI正,长度)
最小值=最低值(最小值,长度)
max_mfiPos=最高(mfiPositive,长度)
最大值=最高值(最小值,长度)
MFiPosRom=mfiHigh+(mfiPositive-min_-mfiPos)*(mfiHigh-mfiLow)/(max_-mfiPos-min_-mfiPos)
mfiNegNorm=mfiHigh+(mfiNegative-最小值)*(mfiHigh-最小值)/(最大值-最小值)
_rsi(MFI阳性,MFI阴性)=>
如果mfiNegative==0
100
如果mfiPositive==0
0
100-(100/(1.0+MFI正/负))
mf=_rsi(MFI正、MFI负)
绘图(mfiPosNorm,color=colorNavy,线宽=2,title='MFI正向资金流')
绘图(MFINENGNORM,颜色=彩色品红,线宽=2,标题='MFI负资金流')

好的,所以我不确定我这方面有什么不同,但我已经尝试过使用scale.left函数,如您所述。但是,我并没有得到与上面相同的结果。相反,我的价格图很小,左边的mfi图范围在0-500之间。从图表上取下指示器,然后重新打开。这应该行得通。好吧,我只想分享一下,在决定寻求帮助之前,我已经尝试过使用这个量表了。删除并读取我的脚本已解决我的问题。注意到了,非常感谢。我已经更新了我原来的帖子。看起来mfi和im绘制的其他图形可能彼此不兼容??我的艾玛,瓦玛,
//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')