我想在 Pinescript 版本 5 中创建基于 5 个资产的加权烛台

问题描述 投票:0回答:1

我正在尝试追踪前 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")

pine-script pine-script-v5 weighted
1个回答
0
投票

边框显示可能会导致问题。在plotcandle()中默认是黑色的。使用 bordercolor = na 来隐藏它。另外,如果您不需要灯芯来避免点,请使用 wickcolor = na。

© www.soinside.com 2019 - 2024. All rights reserved.