如何为不同货币对设置独立的price.input参数?
解决Pine Script输入参数跨货币对同步的问题
问题根源是Pine Script默认的input参数为全局共享状态——同一个脚本在不同货币对图表使用时,参数修改会同步到所有关联图表。要实现每个货币对保留独立的PRICE参数,你可以用字典存储各品种的独立参数值,具体修改如下:
修改后的完整代码
indicator("2 Candle Continuation", overlay = true) // 初始化全局字典,存储每个货币对的价格参数 var dict priceDict = dict.new(string, float) // 获取当前货币对的唯一标识ticker currentTicker = syminfo.ticker // 从字典中读取当前货币对的价格,无记录则用0作为默认值 defaultPrice = dict.get(priceDict, currentTicker, 0.0) // 创建价格输入框,默认值为字典中存储的当前货币对价格 PRICE = float(input.price(defval=defaultPrice, title='SELECT PRICE', confirm=true)) // 如果输入值发生变化,更新字典中对应货币对的记录 if PRICE != defaultPrice dict.set(priceDict, currentTicker, PRICE) // 以下为原逻辑代码,无需修改 openBarPrevious = open[1] closeBarPrevious = close[1] openBarCurrent = open closeBarCurrent = close UP_CONTINUATION = (closeBarPrevious > openBarPrevious ) and (closeBarCurrent > openBarCurrent) and (openBarCurrent >= closeBarPrevious) and (closeBarPrevious > PRICE) DOWN_CONTINUATION = (closeBarPrevious < openBarPrevious ) and (closeBarCurrent < openBarCurrent) and (closeBarCurrent <= openBarPrevious) and (openBarPrevious < PRICE) UP_BAR_COLOUR = if UP_CONTINUATION == true color.rgb(0, 255, 0) DOWN_BAR_COLOUR = if DOWN_CONTINUATION == true color.purple barcolor(color=UP_BAR_COLOUR,show_last = 10) barcolor(color=DOWN_BAR_COLOUR,show_last = 10) alertcondition(UP_CONTINUATION, title = "2 CANDLE UP", message = '[CurrencyPair], 2 CANDLE UP') alertcondition(DOWN_CONTINUATION, title = "2 CANDLE DOWN", message = "[CurrencyPair], 2 CANDLE DOWN")
核心逻辑说明
- 全局字典存储:用
var声明的字典会在脚本运行时持续存在,不会随K线刷新重置,专门用来保存每个货币对的PRICE参数。 - 货币对唯一标识:通过
syminfo.ticker获取当前图表的货币对标识,作为字典的键,确保每个品种的参数独立存储、互不干扰。 - 参数读取与更新:打开图表时从字典中读取对应货币对的历史参数作为输入框默认值;修改参数后自动更新字典中的记录,下次打开该货币对图表时会直接加载保存的值。
内容的提问来源于stack exchange,提问作者SpectacularWaffle123
相关产品推荐
相关产品推荐

