我想在交易视图上编写一个使用不同交易所数据的指示符。它适用于某些滴答器。但是,如果交换没有可用的代码,代码就不再工作了。
我的代码如下所示,用于多个交换:
var ticker = string(syminfo.ticker)
var Coin = str.replace(str.replace(str.replace(ticker, "USDT", "", 0), "USD", "", 0), "PERP", "", 0)
SelectCoin = Coin
Bitmex_perp_usdt = input.bool(title = 'Use Bitmex USDT Perp Data', defval=true)
Bitmex_Perp_USDT = 'Bitmex:' + SelectCoin + 'USDT'
cum_vol_Bitmex_Perp_USDT_Volume = 0.0
Bitmex_Perp_USDT_Volume = request.security(Bitmex_Perp_USDT, timeframe.period, volume)
if Bitmex_perp_usdt == true
cum_vol_Bitmex_Perp_USDT_Volume := math.sum(Bitmex_Perp_USDT_Volume, period)我的想法是忽略输入中缺少的滴答,但是我不能在if语句中使用request.security。是否有可能将request.security与条件结合使用?或者,如果输入是假的,至少我的代码会忽略滴答?例如,如果Bitmex_perp_usdt == false,我不使用request.security,还是它忽略了错误?我也尝试过这样做,但仍然会遇到同样的错误:
var float Bitmex_Perp_USDT_Volume = na
Bitmex_Perp_USDT_Volume := (Bitmex_perp_usdt == true) ? request.security(Bitmex_Perp_USDT, timeframe.period, volume) : na我对Bitmex有另一个问题,他们的比特币符号是'XBT‘,而不是'BTC',如果我想这样修复它的话:
Bitmex_Perp_USDT = 'Bitmex:' + SelectCoin + 'USDT'
Bitmex_Perp_USD = 'Bitmex:' + SelectCoin + 'USD'
if SelectCoin == 'BTC'
Bitmex_Perp_USDT := 'Bitmex:' + 'XBT' + 'USDT'
Bitmex_Perp_USD := 'Bitmex:' + 'XBT' + 'USD'或者像这样:
var string Bitmex_Perp_USDT = na
var string Bitmex_Perp_USD = na
Bitmex_Perp_USDT := (SelectCoin == 'BTC') ? Bitmex + 'XBT' + 'USDT' : Bitmex + SelectCoin + 'USDT'
Bitmex_Perp_USD := (SelectCoin == 'BTC') ? Bitmex + 'XBT' + 'USD' : Bitmex + SelectCoin + 'USD'我知道这个错误:
Cannot use a mutable variable as an argument of the request.security function.我也可以发布我的全部代码,但我认为这足以理解我的问题。
编辑
我用函数修正了XBT/BTC问题。如果其他人对此有异议,下面是我是如何做到的:
fix_bitmex_btc(Select_Coin) =>
return_symbol = Select_Coin
if Select_Coin == 'BTC'
return_symbol := 'XBT'
else
return_symbol := Select_Coin第二版编辑
我用符号输入修正了第一个问题。如果使用或不使用输入,则由bool输入确定。现在看起来是这样的:
Bitmex_Spot_USDT = input.symbol(title = 'Bitmex USDT Spot Pair', defval="SPY")
Bitmex_spot_usdt = input.bool(title = 'Use Binance USDT Spot Data', defval=true)其余的基本上是一样的。这个问题已经解决了,但是手动输入所有的东西都很痛苦,所以如果有人知道解决我最初的问题的方法,我会很高兴听到的!
发布于 2022-07-18 14:21:05
request.security具有ignore_invalid_symbol参数。您可以将其设置为true。如果符号不存在,则脚本继续工作。
https://stackoverflow.com/questions/73012961
复制相似问题