无法获取Nifty正确5分钟EMA200数值技术求助
Pine Script获取Nifty 5分钟EMA200数值异常的解决方法
问题描述
尝试用以下代码获取Nifty当月连续合约的5分钟EMA200数值:
get_EMA200_Stats_res(_res)=> request.security(syminfo.tickerid, _res, ta.ema(close,200) , lookahead =barmerge.lookahead_on) ema200_5m = get_EMA200_Stats_res("5")
实际得到结果为20017447.46525553431,但真实的5分钟EMA200数值应为17447,出现了多余的前缀和小数位。
原因分析
- 前缀"200"的来源:大概率是输出时错误地将EMA周期参数(200)与数值直接拼接,未添加分隔符,导致"200"和真实数值"17447"连在一起,形成
20017447...。 - 多余小数位:
ta.ema()返回的是浮点数类型,默认打印会显示完整的精度位数,因此出现一串多余的小数。
解决办法
- 修正输出逻辑:如果用文本组件(如label)展示数值,确保周期与数值间添加分隔符,示例:
label.new(bar_index, high, "EMA200: " + str.tostring(ema200_5m)) - 控制数值精度:使用
str.tostring()的格式化参数限制小数位数,按需保留整数或指定小数位:// 取整为整数 clean_ema = str.tostring(ema200_5m, "#") // 保留两位小数 clean_ema = str.tostring(ema200_5m, "#.##") - 转换为整数类型:直接用
int()函数将浮点数转换为整数,得到无小数的结果:ema200_5m_int = int(ema200_5m)
内容的提问来源于stack exchange,提问作者life explore
相关产品推荐
相关产品推荐

