TA-Lib-style technical analysis indicator library for MoonBit
TA-Lib-style technical analysis indicator library for MoonBit. Pure MoonBit, zero third-party dependencies, works on native / wasm / js backends.
| 函数 | lookback | 说明 |
|---|---|---|
| sma | n−1 | 简单移动平均 |
| ema / ema_from | n−1 | 指数移动平均(前 n 个值的 SMA 作种子,TA-Lib 约定) |
| wma | n−1 | 线性加权移动平均(最新一根权重 n) |
| hma | n+⌊√n⌋−2 | Hull 移动平均 |
| dema | 2(n−1) | 双重指数移动平均 |
| tema | 3(n−1) | 三重指数移动平均 |
| bbands | n−1 | 布林带(总体标准差,上/中/下轨) |
| vwma | n−1 | 成交量加权移动平均 |
| midpoint | n−1 | 滚动中点价:(max + min) / 2 |
| midprice | n−1 | K 线滚动中点价:(最高价 + 最低价) / 2 |
| moving_average | — | SMA/EMA 选择器(APO/PPO 共用) |
| 函数 | lookback | 说明 |
|---|---|---|
| rsi | n | 相对强弱指数(Wilder 平滑) |
| macd | (slow−1)+(signal−1) | MACD 线 / 信号线 / 柱状图 |
| roc | n | 变动率(百分比) |
| mom | n | 动量 |
| cmo | n | Chande 动量振荡器 |
| willr | n−1 | 威廉 %R |
| stoch / stochf | (p−1)+(ks−1)+(d−1) | 随机指标(慢速 / 快速) |
| cci | n−1 | 顺势指标(0.015 归一化常数) |
| trix | 3(n−1)+1 | 三重 EMA 的百分比变动率 |
| adx | 2n−1 | 平均趋向指数(同时返回 +DI / −DI) |
| apo / ppo | slow−1 | 绝对 / 百分比价格振荡器 |
| ultosc | p3 | 终极振荡器(三周期 4:2:1 加权,默认 7/14/28) |
| bop | 0 | 平衡量:(close − open) / (high − low) |
| aroon | n | 阿隆指标(窗口 period+1 根含当前 K 线;并列极值取最近者) |
| aroonosc | n | 阿隆振荡线:up − down |
| 函数 | lookback | 说明 |
|---|---|---|
| obv | 0 | 能量潮(OBV) |
| mfi | n | 资金流量指标(MFI) |
| ad | 0 | Chaikin 集散线(A/D Line) |
| adosc | slow−1 | Chaikin A/D 振荡器 |
| 函数 | lookback | 说明 |
|---|---|---|
| tr_range | 0 | 每根 K 线的真实波幅 |
| atr | n | 真实波幅均值(Wilder 平滑) |
| natr | n | 归一化 ATR(占收盘价百分比) |
| stddev / variance | n−1 | 滚动总体标准差 / 方差 |
| 函数 | lookback | 说明 |
|---|---|---|
| avg_price / med_price / typ_price / wcl_price | 0 | 四种经典价格变换 |
| max / min / sum | n−1 | 滚动窗口最大 / 最小 / 求和 |
| linearreg_slope / linearreg_intercept | n−1 | 滚动最小二乘的斜率 / 截距 |
| linearreg / linearreg_angle / tsf | n−1 | 回归端点 / 斜率角度(度) / 前瞻一期预测 |
| correl | n−1 | 滚动皮尔逊相关系数(双序列,-1..+1) |
# 已发布到 mooncakes 后(把 yiii0012 换成发布者 ID)
moon add yiii0012/moontalibimport {
"yiii0012/moontalib",
"yiii0012/moontalib/base",
}
/// 所有不可恢复的输入问题都会以 `TaError` 抛出,
/// 可在任意 raise 上下文中直接调用。
fn analyze(candles : @base.Candles) -> Unit raise @base.TaError {
let closes = candles.close
let sma20 = @moontalib.sma(closes, 20)
let rsi14 = @moontalib.rsi(closes, 14)
let bb = @moontalib.bbands(closes, 20, ndev=2.0)
let macd = @moontalib.macd(closes, 12, 26, 9)
// 所有输出与输入等长;前 lookback 个位置是 NaN
let last = closes.length() - 1
println("close=\{closes[last]} sma20=\{sma20[last]} rsi=\{rsi14[last]}")
println("bb.upper=\{bb.upper[last]} macd.hist=\{macd.hist[last]}")
}moon run cmd/demomoon check # 类型检查,零警告
moon test # 65 个单元测试(golden 值 + 交叉不变量)moontalib/
├── moontalib.mbt 门面:import 一次拿到全部指标(@moontalib.sma 等)
├── base/ Candle/Candles 数据模型、TaError、NaN 与校验原语
├── overlap/ 均线族(SMA/EMA/WMA/HMA/DEMA/TEMA/BBANDS/VWMA)
├── momentum/ 动量族(RSI/MACD/STOCH/CCI/ADX/TRIX/...)
├── volume/ 成交量族(OBV/MFI/AD/ADOSC)
├── volatility/ 波动率族(ATR/NATR/STDDEV/VARIANCE/TRANGE)
├── statistic/ 价格变换与滚动工具
└── cmd/demo/ 可运行示例(moon run cmd/demo)moon login # 填入 mooncakes.io 的 token
moon publish # 首次发布前先把 yiii0012 替换成你的 mooncakes 用户名Install
Download zipTA-Lib-style technical analysis indicator library for MoonBit