TradingView 没有计算和显示 MFI 指标的正确值

TradingView does not calculate and show the correct value of MFI indicator

我的进入条件很简单,但电视没有按正确的条件订购。 MFI实际上低于70

更新

//@version=4

initial_capital = 30000

strategy("test", shorttitle="test", overlay=true, 
       default_qty_type=strategy.fixed, currency=currency.USD, calc_on_every_tick=false,
       initial_capital=initial_capital,commission_type=strategy.commission.percent, commission_value=0, pyramiding=1)
    

src = input(defval=close)
 
start_time = input(type=input.time, defval=timestamp("01 Jan 2018 00:00 +0800"), step=1)
end_time = input(type=input.time, defval=timestamp("10 Jul 2031 00:00 +0800"), step=1)

window() => time >= start_time and time <= end_time ? true : false

debug = input(false)


//MACD
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)


pap = nz(strategy.position_avg_price)
profit = 100*(close - nz(strategy.position_avg_price)) / nz(strategy.position_avg_price) 

var buy_signal_cnt = 0
var last_buy_signal_cnt = 0 
var last_sell_signal_cnt = 0
var last_short_price = 0.0 
var last_long_price = 0.0 

var buy_once = false
buy_once:=false

var sell_once = false
sell_once:=false

stopPer = input(defval=1.5, type=input.float, step=0.01)
takePer = input(defval=0.1, type=input.float, step=0.01)

// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
longTake = strategy.position_avg_price * (1 + takePer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)

slope_limit = input(0.01, step=0.01)

profit_limit1 = input(0.3,step=0.01)

if window() and timeframe.isintraday
    // Long -----------------------------------------------
    //if crossover(ma1, ma2) and long_ma_slope > slope_limit and strategy.position_size == 0
    if mfi(close, 14) < 35 and strategy.position_size == 0
    //if trend == 1 and trend[1] == -1
        strategy.entry("Long", strategy.long, qty=1, comment='B01')
        last_long_price := close
        buy_once := true

        
    strategy.exit("SL/TP", "Long", limit=longTake, stop=longStop)
    
    // Short -----------------------------------------------

    if profit > profit_limit1
        strategy.close('Long', comment='cls0')
        //strategy.entry("Short", strategy.short, qty=contracts, comment='S01')
        last_short_price := close
        sell_once := true
 
//plot(last_buy_signal_cnt)

if not buy_once 
    last_buy_signal_cnt += 1
else
    last_buy_signal_cnt:=0


if not sell_once 
    last_sell_signal_cnt += 1
else
    last_sell_signal_cnt:=0



Money Flow Index 内置指标使用 hlc3 作为源系列。

所以如果你想引用内置的你需要使用

if mfi(hlc3, 14) < 35 and strategy.position_size == 0