我正在尝试追踪前 5 名加密货币捆绑的动向。 这是在交易所提供的产品。 在我的脚本中,我请求了 5 个资产的 OHLC 值。 此外,我还通过将它们乘以一定的百分比来对它们进行加权,从而创建了一个总结这 5 项资产的加权 OHLC。 我使用了plotcandle()函数将加权OHLC绘制为烛台。 然而,问题是加权烛台仅显示第一个资产,即 BTC,其价格的 40%。 看来 Pinescript 以某种方式忽略了其余的计算。 我已经使用 ChatGPT 和 Blackbox 调试了代码,两者均确认代码应按预期工作。 有人知道为什么它不起作用吗?代码贴在下面。
//@version=5
indicator("Finst Top 5 Bundle", overlay=false)
// Top 5 bundle
frst_coin = "COINBASE:BTCEUR"
scnd_coin = "COINBASE:ETHEUR"
thrd_coin = "COINBASE:SOLEUR"
frth_coin = "COINBASE:XRPEUR"
ffth_coin = "COINBASE:ADAEUR"
// Top 5 % inputs
frst_coin_perc = input.float(defval = 40.87, title="1st coin %", group="Top 5 Bundle %")
scnd_coin_perc = input.float(defval = 20.63, title="2nd coin %", group="Top 5 Bundle %")
thrd_coin_perc = input.float(defval = 14.17, title="3rd coin %", group="Top 5 Bundle %")
frth_coin_perc = input.float(defval = 12.32, title="4th coin %", group="Top 5 Bundle %")
ffth_coin_perc = input.float(defval = 12.01, title="5th coin %", group="Top 5 Bundle %")
//Getting OHLC data on daily timeframe
frst_coin_open = request.security(frst_coin, "D", open)
frst_coin_high = request.security(frst_coin, "D", high)
frst_coin_low = request.security(frst_coin, "D", low)
frst_coin_close = request.security(frst_coin, "D", close)
frst_coin_volume = request.security(frst_coin, "D", volume)
frst_coin_vol_weight_EUR = (frst_coin_volume * frst_coin_perc / 100) * frst_coin_close
scnd_coin_open = request.security(scnd_coin, "D", open)
scnd_coin_high = request.security(scnd_coin, "D", high)
scnd_coin_low = request.security(scnd_coin, "D", low)
scnd_coin_close = request.security(scnd_coin, "D", close)
scnd_coin_volume = request.security(scnd_coin, "D", volume)
scnd_coin_vol_weight_EUR = (scnd_coin_volume * scnd_coin_perc / 100) * scnd_coin_close
thrd_coin_open = request.security(thrd_coin, "D", open)
thrd_coin_high = request.security(thrd_coin, "D", high)
thrd_coin_low = request.security(thrd_coin, "D", low)
thrd_coin_close = request.security(thrd_coin, "D", close)
thrd_coin_volume = request.security(thrd_coin, "D", volume)
thrd_coin_vol_weight_EUR = (thrd_coin_volume * thrd_coin_perc / 100) * thrd_coin_close
frth_coin_open = request.security(frth_coin, "D", open)
frth_coin_high = request.security(frth_coin, "D", high)
frth_coin_low = request.security(frth_coin, "D", low)
frth_coin_close = request.security(frth_coin, "D", close)
frth_coin_volume = request.security(frth_coin, "D", volume)
frth_coin_vol_weight_EUR = (frth_coin_volume * frth_coin_perc / 100) * frth_coin_close
ffth_coin_open = request.security(ffth_coin, "D", open)
ffth_coin_high = request.security(ffth_coin, "D", high)
ffth_coin_low = request.security(ffth_coin, "D", low)
ffth_coin_close = request.security(ffth_coin, "D", close)
ffth_coin_volume = request.security(ffth_coin, "D", volume)
ffth_coin_vol_weight_EUR = (ffth_coin_volume * ffth_coin_perc / 100) * ffth_coin_close
// Calculating total weighted volume
tot_weighted_vol_EUR = frst_coin_vol_weight_EUR + scnd_coin_vol_weight_EUR + thrd_coin_vol_weight_EUR + frth_coin_vol_weight_EUR + ffth_coin_vol_weight_EUR
vol_plot_div = input(defval = 10000, title = "Divide volume for readability", group = "Volume")
disp_weight_vol_EUR = tot_weighted_vol_EUR / vol_plot_div
// Calculate weighted OHLC values
weighted_open = ((frst_coin_open * frst_coin_perc / 100) + (scnd_coin_open * scnd_coin_perc / 100) + (thrd_coin_open * thrd_coin_perc / 100) + (frth_coin_open * frth_coin_perc / 100) + (ffth_coin_open * ffth_coin_perc / 100))
weighted_high = ((frst_coin_high * frst_coin_perc / 100) + (scnd_coin_high * scnd_coin_perc / 100) + (thrd_coin_high * thrd_coin_perc / 100) + (frth_coin_high * frth_coin_perc / 100) + (ffth_coin_high * ffth_coin_perc / 100))
weighted_low = ((frst_coin_low * frst_coin_perc / 100) + (scnd_coin_low * scnd_coin_perc / 100) + (thrd_coin_low * thrd_coin_perc / 100) + (frth_coin_low * frth_coin_perc / 100) + (ffth_coin_low * ffth_coin_perc / 100))
weighted_close = ((frst_coin_close * frst_coin_perc / 100) + (scnd_coin_close * scnd_coin_perc / 100) + (thrd_coin_close * thrd_coin_perc / 100) + (frth_coin_close * frth_coin_perc / 100) + (ffth_coin_close * ffth_coin_perc / 100))
candle_color = if(weighted_close > weighted_open)
color.green
else
color.red
wick_color = candle_color
// Plotting weighted candlesticks
plotcandle(open=weighted_open, high=weighted_high, low=weighted_low, close=weighted_close, color = candle_color, wickcolor = wick_color, title="Weighted Candlesticks")
边框显示可能会导致问题。在plotcandle()中默认是黑色的。使用 bordercolor = na 来隐藏它。另外,如果您不需要灯芯来避免点,请使用 wickcolor = na。