You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法获取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,出现了多余的前缀和小数位。

原因分析

  1. 前缀"200"的来源:大概率是输出时错误地将EMA周期参数(200)与数值直接拼接,未添加分隔符,导致"200"和真实数值"17447"连在一起,形成20017447...。
  2. 多余小数位: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:05:03