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

如何用JavaScript正确计算一目均衡表的TenkanSen与KijunSen

正确计算TenkanSen与KijunSen的JavaScript代码

我们需要基于日线历史数据计算一目均衡表中的两条核心线:

  • TenkanSen(转换线):取最近9个交易日([ih][0]至[ih][8])的最高价最大值与最低价最小值之和,再除以2
  • KijunSen(基准线):取最近26个交易日([ih][0]至[ih][25])的最高价最大值与最低价最小值之和,再除以2

历史数据格式说明

  • [ih][n].PriceMax:第n个历史交易日的最高价([ih][0]代表昨日最高价)
  • [ih][n].PriceMin:第n个历史交易日的最低价

原代码问题

你之前的实现错误地计算了区间内最低价/最高价的平均值,而非提取区间内的最值,这完全不符合指标的定义逻辑。


正确代码实现

// 计算TenkanSen(转换线)
// 提取最近9个交易日的最高价集合
const tenkanMaxPrices = [0,1,2,3,4,5,6,7,8].map(i => ih[i].PriceMax);
// 提取最近9个交易日的最低价集合
const tenkanMinPrices = [0,1,2,3,4,5,6,7,8].map(i => ih[i].PriceMin);
// 按规则计算转换线
const TenkanSen = (Math.max(...tenkanMaxPrices) + Math.min(...tenkanMinPrices)) / 2;

// 计算KijunSen(基准线)
// 生成0-25的索引数组,提取对应交易日的最高价
const kijunMaxPrices = Array.from({length:26}, (_, i) => ih[i].PriceMax);
// 提取对应交易日的最低价
const kijunMinPrices = Array.from({length:26}, (_, i) => ih[i].PriceMin);
// 按规则计算基准线
const KijunSen = (Math.max(...kijunMaxPrices) + Math.min(...kijunMinPrices)) / 2;

兼容低版本环境的写法

如果需要兼容不支持扩展运算符(...)的JS环境,可以改用apply方法:

// 兼容版转换线计算
const TenkanSen = (Math.max.apply(null, tenkanMaxPrices) + Math.min.apply(null, tenkanMinPrices)) / 2;

// 兼容版基准线计算
const KijunSen = (Math.max.apply(null, kijunMaxPrices) + Math.min.apply(null, kijunMinPrices)) / 2;

内容的提问来源于stack exchange,提问作者mohsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:05:29