简化技术指标
发起人: 反键 ——一个视觉画布,用于构建,回溯测试和优化您的浏览器中的交易策略. 建于此库上.
用于JavaScript / TypeScript的流式,分配轻技术分析工具包. 每个指标都属于一类 nextValue(...) 一次消耗一栏的方法,所以同一代码路径既驱动回试,又驱动活交易而不重建状态. 第二种方法, momentValue(...)中,计算一个假设栏的数值,而不承诺任何状态,对于在未完成的蜡烛内逐一重新计算有用.
特征
- 流出第一义. O(期)每行;无全行重算.
momentValue到处都是. 问"如果这个酒吧现在关闭了会有什么价值?" 没有变异状态.- 类型脚本 . 强型横穿公地表.
- 跨 SDK 验证 . 130+ 滑稽测试 对照外部参考库对照我们的产出进行交叉检查(
lwc财务报告和审定财务报表ti(原始内容存档于2018-09-29) (英语). With epsilon 1e-9. 见 测试 以下指标表格中,每个指标表的参数都经过核实. - 细小的包裹. 只有预造的船
lib/捆-~85 kB 沥青球.
安装
npm install @debut/indicators
快开始
import { SMA, RSI, MACD, BollingerBands } from '@debut/indicators';
const sma = new SMA(20);
const rsi = new RSI(14);
const macd = new MACD(12, 26, 9);
const bb = new BollingerBands(20, 2);
for (const bar of bars) {
const sm = sma.nextValue(bar.close);
const r = rsi.nextValue(bar.close);
const m = macd.nextValue(bar.close); // → { macd, signal, histogram }
const b = bb.nextValue(bar.close); // → { lower, middle, upper }
// ...indicator outputs are `undefined` until each one's warmup completes.
}
nextValue 返回时 undefined 直到该指标看到足够的条来产生结果(它的"温"——典型的 period ) (中文(简体) ). 之后它返回每个呼叫的当前值.
流线模型
nextValue(...) ——关闭栏
每个关上酒吧就叫这个 该方法推进了内部状态并返回了新的指标值. 随后的呼声反映了承诺状态.
momentValue(...) 栏内
用活(还成型)蜡烛的价格/量来称呼它,读取指标 将 如果酒吧现在关闭, 无 实施任何州。 当你想在蜡烛内反应时有用, 但当下一个真实时, 则重排干净 nextValue 来了.
const sma = new SMA(4);
[1, 2, 3].forEach((v) => sma.nextValue(v)); // warmup
sma.momentValue(8); // 3.5 ← preview if close=8
sma.nextValue(4); // 2.5 ← actual close=4 commits state
sma.momentValue(8); // 4.75 ← preview based on committed state
sma.nextValue(8); // 4.25 ← actual close=8 commits state
可用指标
以下是按类别分类的完整目录。 名称在 code style 是精确的命名导出来源 @debut/indicators可链接的指标名称导致在 docs/编辑 测试 列标记跨 SDK 校正运行的外部库 `lwc` =: lightweight-charts-indicators, (中文(简体) ), `ti` =: technicalindicators (见 交叉 SDK 验证 这是什么意思.
移动平均值
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 简单移动平均值 | SMA | ti | 算术的意思是一段时间. |
| 指数移动平均值 | EMA | ti | 加权平均数强调近期价格. |
| 加权移动平均数 | WMA | ti | 线性地增加重量 到最新的酒吧. |
| 线性加权 MA | LWMA | 线性加权变种. | |
| 度量衡 MA | EWMA | 可配置 α; 与 EMA 相较, 用于勾选平滑 . | |
| 平滑移动平均值 | SMMA | 怀德平滑(α = 1/周期). | |
| 威尔德的平滑MA | WEMA | ti | 形状与 RMA,用于兼容性. |
| 威尔德的平滑 | WWS | 经典怀德平滑. | |
| 适应性移动平均值 | AMA | 考夫曼适应性——在趋势上加快,在切片上放慢. | |
| 运行移动平均值 | RMA | α=1期; SMA-种子. | |
| 壳移动平均值 | HMA | lwc | 通过WMA链式(英语:WMA chaining)的减渣MA. |
| 双层EMA | DEMA | lwc | 2×EMA-EMA(EMA). |
| 3个EMA | TEMA | 三阶段EMA减少滞后. | |
| 阿诺·勒古·马 | ALMA | lwc | 高斯加权MA. |
| 加权质量 | VWMA | lwc | 每个栏按体积加权. |
| 麦金莱动态 | McGinleyDynamic | lwc | 自适应MA对市场速度的反应. |
| 最小方块 MA | LSMA | lwc | 滚动线性回归的终点. |
振荡器
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 相对强度指数 | RSI | ti | 经典14期动力振荡器. |
| 扭曲 | Stochastic | ti | 相近相与高低相间. |
| Stochastic RSI (英语) | StochasticRSI | ti | Stochastic应用到RSI. |
| 商品渠道指数 | CCI | ti | 绕行-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从-从 -从-. |
| 威廉姆斯% R | Williams | 反相相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相. | |
| 伟大的振荡器 | AO | ti | 比尔·威廉斯 5/34 SMA差价HL2. |
| 加速振荡器 | AC | 比尔·威廉姆斯AO衍生产品. | |
| 昌德运动振荡器 | CMO | 怀德风格的CMO. | |
| 钱德·莫(LWC) | ChandeMO | lwc | LWC 参考变体;生滚入量. |
| 减价振荡器 | DPO | SMA-调价. | |
| 相对维戈尔索引 | RVI | lwc | SWMA基于活性/信号对. |
| SMI 电子 | SMIErgodic | lwc | 双流出动能(TSI没有100×). |
| 真强指数 | TSI | lwc | 有信号的双EMA动力振荡器. |
| 波林格乐队 %B | BBPercentB | lwc | 相对于BB的价格状况. |
| 费舍尔变形 | FisherTransform | lwc | 高斯的价钱极端. |
| 最终振荡器 | UltimateOscillator | 多时间框架加权势头. | |
| 康纳的RSI | cRSI | 复合 RSI / 螺旋/%- 排名 . | |
| 相对波动指数 | RelativeVolatilityIndex | lwc | RSI在离我们很近的地方. |
时刻
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| MACD 磁共振 | MACD | ti | 两种EMA与信号/相片的相差. |
| 时刻 | Momentum | lwc | close − close[length]。 。 。 . |
| 变化率 | ROC | ti | 一段时间内的百分比变化. |
| 权力平衡 | BOP | lwc | (close − open) / (high − low)。 。 。 . |
| 牛熊电源 | BullBearPower | lwc | 长者: high + low − 2·EMA(close)。 。 。 . |
| 强制指数 | ForceIndex | 长老:签名价格量冲动. | |
| 长老雷 | ElderRay | 公牛/熊分权. | |
| 价格振荡器 | PriceOscillator | lwc | 有信号/相片的百分率-PPO. |
| 笼罩曲线 | CoppockCurve | lwc | 总结的长/短区域办事处. |
| 特里克斯语 | TRIX | ti | 三层烟雾式EMA的ROC. |
| KST (韩语) | KST | lwc | "知道肯定的事情"加权ROC和+信号. |
趋势
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 平均方向指数 | ADX | ti | 不论方向如何,趋势强势. |
| 方向移动指数 | DMI | +DI, (中文(简体) ), −DI(原始内容存档于2019-09-29)., ADX. | |
| 池门云 | Ichimoku | 转换 / 基数 / 跨数 / 滞后 . | |
| 抛物线合成孔径雷达 | PSAR | ti | 威尔斯·威尔德的后站. |
| 超趋势 | SuperTrend | 基于ATR的动态支持/抵抗. | |
| 阿龙 | Aroon | lwc | 酒吧 - 自 - 极端上下行. |
| 短长 | Choppiness | lwc | 射程和挥发力. |
| 质量指数 | MassIndex | lwc | 通过H-LEMA比进行逆向检测. |
| 涡扇 | Vortex | lwc | VI+ / VI− 方向对. |
| 趋势强度指数 | TrendStrengthIndex | lwc | 相近条指数的皮尔逊相关性. |
| 钱德克罗尔停止 | ChandeKrollStop | lwc | 基于 ATR 的长/短站级 . |
波动性
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 平均真实范围 | ATR | ti | 具有可选平滑的Wilder ATR. |
| 日均范围 | ADR | lwc | SMA 数据 high − low。 。 。 . |
| 历史波动 | HistoricalVolatility | lwc | 日志返回的年度 stdev . |
| 博林格乐队 | BBBandWidth | lwc | (upper − lower) / basis × 100。 。 。 . |
| 标准绕行 | StandardDeviation | 流出有偏见的 Stdev 提供者 . |
频道和频段
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 博林格乐队 | BollingerBands | ti | SMA ± k → stdev. 中国植物物种信息数据库. |
| 东莞频道 | DC | 最高高/最低低信封. | |
| Keltner 频道 | KeltnerChannel | ti | EMA / ATR 信封. |
| 信封 | Envelopes | ti | 固定百分比的MA波段. |
| 中位数( 上游准备带) | Median | lwc | 滚动中位数为HL2. |
数量
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 平衡量 | OBV | lwc | 累计签名卷. |
| 资金流动指数 | MFI | ti | 卷加权RSI. |
| 价格卷趋势 | PVT | lwc | 量由相对价格变化所缩放. |
| 音量振荡器 | VolumeOscillator | ti | 体积EMAs之间的差异. |
| 柴金振荡器 | ChaikinOscillator | EMA传播A/D行. | |
| 柴金出钱 | ChaikinMF | lwc | A/D在一扇窗口上除以音量. |
| 移动方便 | EaseOfMovement | lwc | 价格变化对量. |
| 克林格振荡器 | Klinger | lwc | 长行通通通相通. |
| 净量 | NetVolume | lwc | 以蜡烛为方向签名的卷子. |
| 音量简介 | VolumeProfile | 有 POC / VAH / VAL 的会话直方图 . |
蜡烛和相片
| 指标 | 导出 | 测试 | 说明 |
|---|---|---|---|
| 爱克力 | HeikenAshi | 平滑的蜡烛流. | |
| 分形 | Fractal | 比尔·威廉姆斯5巴分形. | |
| 关键等级 | Pivot | 经典 / Woodie / Camarilla / Fibonacci. 古典名著有"活活活活"等. | |
| 趋势线 | TrendLines | 由引出的趋势线检测. | |
| 极端 | Extremums | Fractal-tyle 本地极端供应商. |
移动/ 波浪( 定制)
| 指标 | 导出 | 说明 |
|---|---|---|
| 移动 | Move | 最小功率方向移动 p。 。 。 . |
| 挥手 | Wave | 牛/熊蜡烛系列 p。 。 。 . |
运行时状态保存和恢复( R)
每个状态指标都暴露出两种方法:
dumpState()返回所有内部运行状态的 JSON 安全快照.restoreState(state)恢复该快照为新指标实例并返回实例.
图片包括嵌入式提供者和滚动缓冲器,如 CircularBuffer,因此一个指标可以在进程重启后继续,而不重放全部历史。 构造参数仍然是指标配置的一部分: 将状态恢复为生成快照的相同周期/选项创建的实例.
import { EMA } from '@debut/indicators';
const ema = new EMA(20);
for (const close of history) {
ema.nextValue(close);
}
// Persist this string in your own runtime storage: database, file, Redis, etc.
const serialized = JSON.stringify(ema.dumpState());
// Later, after a restart:
const restored = new EMA(20).restoreState(JSON.parse(serialized));
const liveValue = restored.nextValue(nextClose);
对于活的系统,在承诺每个已关闭的栏后,连同指标配置和溪流身份一起,保存状态. 启动时, 以相同的构造参数重新创建每个指标, 调用 restoreState(...),然后继续通过 nextValue(...)。 。 。 .
烛台图案
每个都是流派:
import { Doji, BullishEngulfingPattern, HammerPattern } from '@debut/indicators';
const doji = new Doji();
const engulfing = new BullishEngulfingPattern();
const hammer = new HammerPattern(); // 5-bar with confirmation candle
for (const bar of bars) {
if (doji.nextValue(bar.open, bar.high, bar.low, bar.close)) console.log('Doji', bar.time);
if (engulfing.nextValue(bar.open, bar.high, bar.low, bar.close)) console.log('Bull Engulfing', bar.time);
if (hammer.nextValue(bar.open, bar.high, bar.low, bar.close)) console.log('Hammer', bar.time);
}
nextValue 返回时 true 当定时, false 如果没有,和 undefined 虽然它仍在变暖(多巴模式首先需要它们完全回放).
可配置阈值
每个图案都接受其构造器中的选项包. 默认匹配 ti 精确的引用; 收紧或放轻松.
| 选项 | 用于 | 默认 | 说明 |
|---|---|---|---|
precision | Doji-family,Marubozu,锤子,HaramiCross,HammerPattern,吊车人,射击之星,被弃用/Doji-Star等变型 | 0.001 | 模糊-相匹配的容忍度:多近 open≈close (或 body- 触摸着..high编号 :low)必须有资格成为"平等". 0.001 0.1%的相对关系. |
shadowToBodyRatio | 锤子-棒子变体 锤子-板子-吊人-射击之星 | 2 | 对立的阴影必须至少是身体长度的多倍. |
minShadowToBodyRatio | 旋转Top 变体 | 1 | 这两个阴影必须严格地以这个比例大于身体. |
equalityTolerance | Wee-相接/相接 | 0 (准确) | 有多近? 这么近 low[i]编号 :high[i] 两道蜡烛必须如此. |
confirm | 锤子板 吊人 射击之星 | true | 需要五号酒吧的确认蜡烛 这个 *Unconfirmed 变体将它翻转到 false。 。 。 . |
const wideDoji = new Doji({ precision: 0.005 }); // 0.5% relative tolerance
const fastHammer = new HammerPattern({ confirm: false }); // skip the confirmation candle
const looseTweezer = new TweezerBottom({ equalityTolerance: 0.0001 });
联合扫描仪
如果你想同时对照许多图案扫描一栏,请使用三个组合扫描仪中的一个. 他们共享单子 OhlcBuffer 在图案模块中声明 这样你就不会支付每平面缓冲器的费用.
import { AllCandlestickPatterns, BullishPatterns, BearishPatterns } from '@debut/indicators';
const all = new AllCandlestickPatterns();
const bull = new BullishPatterns();
const bear = new BearishPatterns();
for (const bar of bars) {
const fired = all.nextValue(bar.open, bar.high, bar.low, bar.close);
if (fired.length) console.log(bar.time, fired);
// → e.g. [1700000000, ['BullishHammerStick', 'BullishMarubozu']]
if (bull.nextValue(bar.open, bar.high, bar.low, bar.close)) console.log('any bullish');
if (bear.nextValue(bar.open, bar.high, bar.low, bar.close)) console.log('any bearish');
}
AllCandlestickPatterns.nextValue 返回向栏下开火的图案名称; BullishPatterns 编号 : BearishPatterns 返回单个布尔 ("did") 任意 模式火".
流之间的 Singleton 缓冲和重置
所有多栏模式共享一个 OhlcBuffer(5) 在模块范围内宣布的 src/candlestick/patterns.ts。第一个看到全新的栏杆推进缓冲器的图案;同一勾中后来的调用被OHLC Equality解开. 这意味着在新的模式实例中下降基本上是免费的——没有按平面分配的环.
如果您在独立的条流间切换( 或想要在测试个案间打扫), 请拨 BasePattern.reset()数字 :
import { BasePattern } from '@debut/indicators/lib/src/candlestick/patterns';
BasePattern.reset(); // clears the singleton OHLC ring + dedupe state
名称空格导入
如果你不想把35个符号拉入范围:
import { Candlestick } from '@debut/indicators';
const doji = new Candlestick.Doji();
const all = new Candlestick.AllCandlestickPatterns();
模式目录
| 回想起来 | 模式 |
|---|---|
| 1个栏 | Doji, (中文(简体) ), DragonFlyDoji, (中文(简体) ), GraveStoneDoji, (中文(简体) ), BearishHammerStick, (中文(简体) ), BullishHammerStick, (中文(简体) ), BearishInvertedHammerStick, (中文(简体) ), BullishInvertedHammerStick, (中文(简体) ), BearishMarubozu, (中文(简体) ), BullishMarubozu, (中文(简体) ), BearishSpinningTop, (中文(简体) ), BullishSpinningTop |
| 2个栏 | BearishEngulfingPattern, (中文(简体) ), BullishEngulfingPattern, (中文(简体) ), BearishHarami, (中文(简体) ), BullishHarami, (中文(简体) ), BearishHaramiCross, (中文(简体) ), BullishHaramiCross, (中文(简体) ), DarkCloudCover, (中文(简体) ), PiercingLine |
| 3个栏 | AbandonedBaby, (中文(简体) ), DownsideTasukiGap, (中文(简体) ), EveningStar, (中文(简体) ), EveningDojiStar, (中文(简体) ), MorningStar, (中文(简体) ), MorningDojiStar, (中文(简体) ), ThreeBlackCrows, (中文(简体) ), ThreeWhiteSoldiers |
| 5个栏 | HammerPattern, (中文(简体) ), HammerPatternUnconfirmed, (中文(简体) ), HangingMan, (中文(简体) ), HangingManUnconfirmed, (中文(简体) ), ShootingStar, (中文(简体) ), ShootingStarUnconfirmed, (中文(简体) ), TweezerBottom, (中文(简体) ), TweezerTop |
会话卷简介
VolumeProfile 跨价格行交易总量和曝光量 POC 移动, (中文(简体) ), VAH 维基百科 编号 : VAL 评价 可配置 tickSize、分发和会议定位'daily' 默认情况下 —— 无限制的流不能永远地长出行图.
import { VolumeProfile } from '@debut/indicators';
const vp = new VolumeProfile({ tickSize: 0.5 });
for (const bar of bars) {
const { poc, val, vah, total } = vp.nextValue(bar);
}
完整的选项、公式、业绩说明和自定义会议配方: 文件/卷。 。 。 .
公用事业
| 导出 | 说明 |
|---|---|
CircularBuffer | 固定大小的环缓冲器 at() 编号 : peek() 编号 : forEach(). 将大多数滚动窗口指标的权力. |
Sampler | 样本-样本提供方用于堆放平滑(例如. SMA(SMA(SMA(...)))) (中文(简体) ). |
Correlation | 流出皮尔逊相关. |
Level, (中文(简体) ), UniLevel | 动态关卡(Unilevel: 平衡于 0左右). |
Extremums | 分形型局部外观. |
Candles | 由图案探测器共享的活烛台上下文(身体,阴影,多吉,趋势). |
交叉 SDK 验证
每个端口指示器和烛台图案都有维特风格的光谱 tests/<name>/<name>.spec.ts 即:
- 生成有种子LCG的确定性合成OHLCV条(见
tests/lwc-fixtures.ts) (中文(简体) ). - 把他们流出河中
@debut/indicators课. - 在同一条行中运行
lwccalculate()(或ti————见 测试 每个指标表格中与该图案对应的参数. - 与 epsilon 1e-9(或为布尔模式射击设定成员)保持数值平等.
运行 npm test 执行完整的套房.
基准
苹果M1 Pro,节点 v16.14.0. 在有100k元素的数据集上测试.
| 指标名称 | @debut/指标(ops/sec) | 技术指标(ops/sec) | 指标(ops/sec) |
|---|---|---|---|
| 超级振荡器 | 318国道 | 第23条 | 158 (中文(简体) ) |
| 备忘 | 358 (韩语) | 第42条 | 页:1 |
| ATR 软件 | 613号 | 136个 | 95 (韩语) |
| 博林格乐队 | 347个 | 第9条 | 页:1 |
| 公民信息中心 | 151 (韩语) | 第12条 | 158 (中文(简体) ) |
| 华盛顿 | 474个 | 页:1 | 第74条 |
| PSAR 搜索和救援系统 | 1 453个 | 278 (韩语) | 第666条 |
| 埃米尔 | 1 720 个 | 452个 | 1 537个 |
| MACD 磁共振 | 1,417个 | 90 (韩语) | 467 (韩语) |
| 区域办事处 | 3 625个 | 64国道 | 页:1 |
| RSI 广播电视服务 | 1 239个 | 第38条 | 页:1 |
| 斯马 | 678号 | 65个 | 645 (中文(简体) ) |
| 韦玛 | 1 462个 | 455 (韩语) | 页:1 |
| 妇女 | 287 (韩语) | 第41条 | 页:1 |
| 扭曲 | 页:1 | 第25条 | 67国道 |
基准结果由 https://github.com/debut-js/indexators-benchmark 页面存档备份,存于互联网档案馆
许可证
GPL-3.0 (英语)