如何根据syminfo.ticker动态设置订单数量(qty)?代码异常求助
动态设置订单数量失效的解决方案
问题根源分析
你的代码逻辑本身无语法错误,但订单数量始终为1,大概率是以下两个原因:
syminfo.ticker的实际返回值和你代码里写的"OANDA:XAUUSD"这类字符串不匹配,导致所有条件都不触发,最终qtyValue返回na,而strategy.entry遇到na时会自动使用默认订单数量1。- 最后一个分支用
na作为 fallback,未指定明确默认数量,触发了策略的默认行为。
修复步骤
1. 验证syminfo.ticker的实际值
先添加调试代码,确认当前图表的ticker格式:
label.new(bar_index, high, syminfo.ticker, color=color.blue, textcolor=color.white)
切换不同图表后,查看标签显示的内容——比如实际返回的可能是不带经纪商前缀的"XAUUSD",而非"OANDA:XAUUSD"。
2. 修正qtyValue的匹配逻辑和默认值
根据验证结果调整匹配字符串,同时把最后的na改为明确的默认数量:
// 示例:若验证后syminfo.ticker返回不带前缀的格式 qtyValue = syminfo.ticker == "XAUUSD" ? 7 : syminfo.ticker == "XAGUSD" ? 550 : syminfo.ticker == "EURUSD" ? 225000 : syminfo.ticker == "GBPUSD" ? 39000 : 1 // 明确默认数量,避免返回na
如果验证后确实是带OANDA:前缀,保留原匹配字符串,仅将na替换为默认数值即可。
3. 确认策略设置
检查策略设置面板,确保未手动设置“默认订单数量”(即便删除了default_qty_value参数,面板设置仍可能产生影响)。
内容的提问来源于stack exchange,提问作者marcq
相关产品推荐
相关产品推荐

