重叠研究指标
重叠研究指标是直接叠加在价格图表上的技术指标,提供趋势跟踪和支撑/阻力位信息。
SMA - 简单移动平均线
简单移动平均线计算指定周期内价格的算术平均值,提供价格趋势的平滑表示。
公式
其中 \(n\) 为周期。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
平均计算的周期数 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (SMA) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import SMA
# Object-oriented API
sma = SMA(period=20)
result = sma.update(close_price)
if result.valid:
print(f"SMA: {result.value:.2f}")
# TA-Lib compatible API
from techkit import talib_compat as ta
sma_values = ta.SMA(close_prices, timeperiod=20)
const tk = require('techkit');
// Streaming API
const sma = tk.sma(20);
const result = sma.update(closePrice);
// Batch API
const values = tk.SMA(closePrices, 20);
#include <techkit/techkit.hpp>
techkit::SMA sma(20);
auto result = sma.update(closePrice);
#include <techkit/techkit_c.h>
tk_indicator sma = tk_sma_new(20);
tk_result r = tk_update(sma, closePrice);
tk_free(sma);
交易应用
趋势识别: 价格在 SMA 上方 = 上升趋势,下方 = 下降趋势
支撑/阻力: SMA 作为动态支撑/阻力位
交叉信号: 价格穿越 SMA 表示潜在趋势变化
多时间框架: 使用不同周期(50、200)进行多时间框架分析
常用周期值
周期 |
使用场景 |
|---|---|
5-10 |
短期趋势,剥头皮交易 |
20 |
标准短期趋势 |
50 |
中期趋势 |
200 |
长期趋势,主要支撑/阻力 |
EMA - 指数移动平均线
指数移动平均线对近期价格赋予更大权重,使其对价格变化的响应比 SMA 更快。
公式
其中 \(\alpha = \frac{2}{period + 1}\)(平滑因子)。
第一个 EMA 值使用前 period 个值的 SMA 初始化。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
平滑计算的周期数 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (EMA) |
回看 |
period - 1 |
内存 |
O(1) |
API 使用
from techkit import EMA
ema = EMA(period=20)
result = ema.update(close_price)
if result.valid:
print(f"EMA: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
ema_values = ta.EMA(close_prices, timeperiod=20)
const ema = tk.ema(20);
const result = ema.update(closePrice);
techkit::EMA ema(20);
auto result = ema.update(closePrice);
tk_indicator ema = tk_ema_new(20);
tk_result r = tk_update(ema, closePrice);
交易应用
更快响应: EMA 对价格变化的反应比 SMA 更快
趋势跟踪: 使用 EMA 交叉作为入场/出场信号
金叉/死叉: EMA(50) 穿越 EMA(200) 表示主要趋势变化
支撑/阻力: EMA 提供动态支撑/阻力位
常用周期值
周期 |
使用场景 |
|---|---|
9-12 |
短期动量 |
21-26 |
中期趋势 |
50 |
长期趋势 |
200 |
主要趋势过滤器 |
WMA - 加权移动平均线
加权移动平均线对近期价格赋予线性递增的权重,在 SMA 和 EMA 的响应性之间提供折中。
公式
其中最近的价格权重为 \(n\),第二近的价格权重为 \(n-1\),以此类推。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
平均计算的周期数 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (WMA) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import WMA
wma = WMA(period=20)
result = wma.update(close_price)
if result.valid:
print(f"WMA: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
wma_values = ta.WMA(close_prices, timeperiod=20)
const wma = tk.wma(20);
const result = wma.update(closePrice);
techkit::WMA wma(20);
auto result = wma.update(closePrice);
tk_indicator wma = tk_wma_new(20);
tk_result r = tk_update(wma, closePrice);
交易应用
平衡平滑: 滞后小于 SMA,稳定性高于 EMA
趋势确认: 与其他指标结合使用进行趋势确认
支撑/阻力: WMA 水平可作为支撑/阻力
常用周期值
周期 |
使用场景 |
|---|---|
10-20 |
短期趋势 |
30-50 |
中期趋势 |
DEMA - 双指数移动平均线
双指数移动平均线通过应用两次 EMA 并从两倍的第一 EMA 中减去第二 EMA 来减少滞后。
公式
此公式在保持趋势跟踪特性的同时减少滞后。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
两次计算的 EMA 周期 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (DEMA) |
回看 |
period - 1 |
内存 |
O(1) |
API 使用
from techkit import DEMA
dema = DEMA(period=20)
result = dema.update(close_price)
if result.valid:
print(f"DEMA: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
dema_values = ta.DEMA(close_prices, timeperiod=20)
const dema = tk.dema(20);
const result = dema.update(closePrice);
techkit::DEMA dema(20);
auto result = dema.update(closePrice);
tk_indicator dema = tk_dema_new(20);
tk_result r = tk_update(dema, closePrice);
交易应用
减少滞后: DEMA 对价格变化的响应比 EMA 更快
趋势跟踪: 非常适合早期捕捉趋势变化
交叉信号: DEMA 交叉提供及时的入场/出场信号
常用周期值
周期 |
使用场景 |
|---|---|
10-15 |
短期动量 |
20-30 |
中期趋势 |
TEMA - 三重指数移动平均线
三重指数移动平均线应用三重平滑以进一步减少滞后,同时保持趋势跟踪特性。
公式
其中:
\(EMA_1 = EMA(price, period)\)
\(EMA_2 = EMA(EMA_1, period)\)
\(EMA_3 = EMA(EMA_2, period)\)
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
所有计算的 EMA 周期 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (TEMA) |
回看 |
period - 1 |
内存 |
O(1) |
API 使用
from techkit import TEMA
tema = TEMA(period=20)
result = tema.update(close_price)
if result.valid:
print(f"TEMA: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
tema_values = ta.TEMA(close_prices, timeperiod=20)
const tema = tk.tema(20);
const result = tema.update(closePrice);
techkit::TEMA tema(20);
auto result = tema.update(closePrice);
tk_indicator tema = tk_tema_new(20);
tk_result r = tk_update(tema, closePrice);
交易应用
最小滞后: TEMA 在指数移动平均线中滞后最小
趋势跟踪: 非常适合快速变化的市场
敏感: 在震荡市场中更容易出现假信号
常用周期值
周期 |
使用场景 |
|---|---|
5-10 |
极短期动量 |
15-20 |
短期趋势 |
KAMA - 考夫曼自适应移动平均线
考夫曼自适应移动平均线根据市场效率调整其平滑因子,在趋势市场中更敏感,在震荡市场中较不敏感。
公式
其中:
\(ER = \frac{|price_t - price_{t-period}|}{\sum_{i=1}^{period} |price_i - price_{i-1}|}\)(效率比率)
\(SC = \left[ER \times (fast - slow) + slow\right]^2\)
\(fast = \frac{2}{2+1} = 0.6667\)(快速平滑常数)
\(slow = \frac{2}{30+1} = 0.0645\)(慢速平滑常数)
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
10 |
1-100000 |
效率比率计算的周期 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (KAMA) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import KAMA
kama = KAMA(period=10)
result = kama.update(close_price)
if result.valid:
print(f"KAMA: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
kama_values = ta.KAMA(close_prices, timeperiod=10)
const kama = tk.kama(10);
const result = kama.update(closePrice);
techkit::KAMA kama(10);
auto result = kama.update(closePrice);
tk_indicator kama = tk_kama_new(10);
tk_result r = tk_update(kama, closePrice);
交易应用
自适应平滑: 自动适应市场条件
趋势跟踪: 在趋势市场中更敏感
噪音减少: 在震荡市场中较不敏感,减少假信号
支撑/阻力: KAMA 水平作为动态支撑/阻力
常用周期值
周期 |
使用场景 |
|---|---|
10 |
标准自适应平滑 |
20-30 |
长期自适应趋势 |
TRIMA - 三角移动平均线
三角移动平均线应用两次 SMA,创建具有三角权重函数的更平滑平均值。
公式
对于偶数周期:\(TRIMA = SMA(SMA(price, n/2+1), n/2)\) 对于奇数周期:\(TRIMA = SMA(SMA(price, (n+1)/2), (n+1)/2)\)
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
三角平滑的总周期 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (TRIMA) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import TRIMA
trima = TRIMA(period=20)
result = trima.update(close_price)
if result.valid:
print(f"TRIMA: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
trima_values = ta.TRIMA(close_prices, timeperiod=20)
const trima = tk.trima(20);
const result = trima.update(closePrice);
techkit::TRIMA trima(20);
auto result = trima.update(closePrice);
tk_indicator trima = tk_trima_new(20);
tk_result r = tk_update(trima, closePrice);
交易应用
平滑趋势: TRIMA 提供非常平滑的趋势线
滞后: 滞后大于 SMA 但输出更平滑
支撑/阻力: 强支撑/阻力位
常用周期值
周期 |
使用场景 |
|---|---|
20-30 |
中期平滑趋势 |
50 |
长期平滑趋势 |
T3 - 三重指数移动平均线(Tilson)
T3 移动平均线使用广义 DEMA(GD)方法应用三次,提供平滑输出并减少滞后。
公式
T3 使用六个 EMA,系数为:
\(c_1 = -v^3\)
\(c_2 = 3v^2 + 3v^3\)
\(c_3 = -6v^2 - 3v - 3v^3\)
\(c_4 = 1 + 3v + v^3 + 3v^2\)
其中 \(v\) 为成交量因子(默认 0.7)。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
T3 计算的 EMA 周期 |
volume_factor |
double |
0.7 |
0.0-1.0 |
平滑因子(v 因子) |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (T3) |
回看 |
6 × (period - 1) |
内存 |
O(1) |
API 使用
from techkit import T3
t3 = T3(period=20, volume_factor=0.7)
result = t3.update(close_price)
if result.valid:
print(f"T3: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
t3_values = ta.T3(close_prices, timeperiod=20, vfactor=0.7)
const t3 = tk.t3(20, 0.7);
const result = t3.update(closePrice);
techkit::T3 t3(20, 0.7);
auto result = t3.update(closePrice);
tk_indicator t3 = tk_t3_new(20, 0.7);
tk_result r = tk_update(t3, closePrice);
交易应用
平滑且低滞后: T3 提供平滑输出且滞后最小
成交量因子: 较低的 v 因子(0.5-0.6)= 更平滑,较高的(0.8-0.9)= 更敏感
趋势跟踪: 非常适合趋势识别
常用参数值
周期 |
成交量因子 |
使用场景 |
|---|---|---|
10-15 |
0.7 |
短期趋势 |
20-30 |
0.7 |
中期趋势 |
20 |
0.5 |
非常平滑的趋势 |
20 |
0.9 |
更敏感的趋势 |
BBANDS - 布林带
布林带由中间带(SMA)和两个基于标准差的外带组成,提供动态支撑/阻力位和波动率信息。
公式
其中 \(\sigma\) 为周期内价格的标准差。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
中间带的 SMA 周期 |
nbdev_up |
double |
2.0 |
0.1-10.0 |
上带的标准差倍数 |
nbdev_down |
double |
2.0 |
0.1-10.0 |
下带的标准差倍数 |
matype |
int |
0 |
0-8 |
移动平均类型(0=SMA,1=EMA 等) |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
三个值(上、中、下) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import BBANDS
bbands = BBANDS(period=20, std_dev_up=2.0, std_dev_down=2.0)
result = bbands.update(close_price)
if result.valid:
print(f"Upper: {result.upper:.2f}, Middle: {result.middle:.2f}, Lower: {result.lower:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
upper, middle, lower = ta.BBANDS(close_prices, timeperiod=20, nbdevup=2.0, nbdevdn=2.0)
const bbands = tk.bbands(20, 2.0, 2.0);
const result = bbands.update(closePrice);
// result.upper, result.middle, result.lower
techkit::BBANDS bbands(20, 2.0, 2.0);
auto result = bbands.update(closePrice);
tk_indicator bbands = tk_bbands_new(20, 2.0, 2.0);
tk_bbands_result r = tk_bbands_update(bbands, closePrice);
// r.upper, r.middle, r.lower
交易应用
波动率指标: 带宽表示波动率(更宽 = 更波动)
超买/超卖: 价格触及上带 = 超买,下带 = 超卖
挤压: 窄带表示低波动率,通常预示着大幅波动
支撑/阻力: 带作为动态支撑/阻力位
均值回归: 价格倾向于回归中间带
常用参数值
周期 |
nbdev |
使用场景 |
|---|---|---|
20 |
2.0 |
标准布林带 |
20 |
1.5 |
更紧的带,更多信号 |
20 |
2.5 |
更宽的带,更少信号 |
10 |
2.0 |
短期波动率 |
SAR - 抛物线止损和反转
抛物线 SAR 提供跟踪止损位和趋势反转信号,随着趋势加速,SAR 点向价格靠近。
公式
对于上升趋势: $\(SAR_t = SAR_{t-1} + AF \times (EP - SAR_{t-1})\)$
其中:
\(EP\) = 极值点(上升趋势中的最高价)
\(AF\) = 加速因子(从
acceleration开始,达到新 EP 时增加acceleration,上限为maximum)
对于下降趋势,公式反转(使用最低价作为 EP)。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
acceleration |
double |
0.02 |
0.001-0.1 |
初始加速因子 |
maximum |
double |
0.20 |
0.01-1.0 |
最大加速因子 |
特性
属性 |
值 |
|---|---|
输入 |
OHLC(最高价、最低价) |
输出 |
单个值(SAR 价格水平) |
回看 |
1 |
内存 |
O(1) |
API 使用
from techkit import SAR
sar = SAR(acceleration=0.02, maximum=0.20)
result = sar.update_ohlcv(open, high, low, close)
if result.valid:
print(f"SAR: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
sar_values = ta.SAR(high, low, acceleration=0.02, maximum=0.20)
const sar = tk.sar(0.02, 0.20);
const result = sar.updateOHLCV({open, high, low, close});
techkit::SAR sar(0.02, 0.20);
techkit::OHLCV bar{open, high, low, close, volume};
auto result = sar.update(bar);
tk_indicator sar = tk_sar_new(0.02, 0.20);
tk_ohlcv bar = {open, high, low, close, volume};
tk_result r = tk_update_ohlcv(sar, &bar);
交易应用
跟踪止损: SAR 提供动态跟踪止损位
趋势跟踪: SAR 低于价格 = 上升趋势,高于 = 下降趋势
反转信号: 价格穿越 SAR 表示趋势反转
止损: 使用 SAR 作为止损位
加速: 更高的加速 = 更紧的止损,更多反转
常用参数值
加速 |
最大 |
使用场景 |
|---|---|---|
0.02 |
0.20 |
标准 SAR(最常见) |
0.01 |
0.10 |
更慢,更宽的止损 |
0.03 |
0.30 |
更快,更紧的止损 |
MIDPOINT - 周期中点
中点指标计算指定周期内最高价和最低价之间的中点。
公式
其中 highest 和 lowest 为周期内的最高和最低收盘价。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
14 |
1-100000 |
最高/最低计算的周期数 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值(中点) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import MIDPOINT
midpoint = MIDPOINT(period=14)
result = midpoint.update(close_price)
if result.valid:
print(f"MidPoint: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
midpoint_values = ta.MIDPOINT(close_prices, timeperiod=14)
const midpoint = tk.midpoint(14);
const result = midpoint.update(closePrice);
techkit::MIDPOINT midpoint(14);
auto result = midpoint.update(closePrice);
tk_indicator midpoint = tk_midpoint_new(14);
tk_result r = tk_update(midpoint, closePrice);
交易应用
支撑/阻力: 中点作为支撑/阻力位
区间交易: 在震荡市场中很有用
价格位置: 比较当前价格与中点以判断在区间中的位置
常用周期值
周期 |
使用场景 |
|---|---|
14 |
标准中点 |
20-30 |
长期中点 |
MIDPRICE - 周期中点价格
中点价格指标计算最高价和最低价之间的中点(使用最高价和最低价,而非收盘价)。
公式
其中 highest_high 和 lowest_low 为周期内的最高最高价和最低最低价。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
14 |
1-100000 |
最高/最低计算的周期数 |
特性
属性 |
值 |
|---|---|
输入 |
OHLC(最高价、最低价) |
输出 |
单个值(中点价格) |
回看 |
period - 1 |
内存 |
O(period) |
API 使用
from techkit import MIDPRICE
midprice = MIDPRICE(period=14)
result = midprice.update_ohlcv(open, high, low, close)
if result.valid:
print(f"MidPrice: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
midprice_values = ta.MIDPRICE(high, low, timeperiod=14)
const midprice = tk.midprice(14);
const result = midprice.updateOHLCV({open, high, low, close});
techkit::MIDPRICE midprice(14);
techkit::OHLCV bar{open, high, low, close, volume};
auto result = midprice.update(bar);
tk_indicator midprice = tk_midprice_new(14);
tk_ohlcv bar = {open, high, low, close, volume};
tk_result r = tk_update_ohlcv(midprice, &bar);
交易应用
真实区间中点: 使用实际最高/最低区间,比 MidPoint 更准确
支撑/阻力: 中点价格提供支撑/阻力位
区间分析: 比较当前价格与中点价格以判断区间位置
常用周期值
周期 |
使用场景 |
|---|---|
14 |
标准中点价格 |
20-30 |
长期中点价格 |
MA - 移动平均线(通用)
MA 函数是一个通用包装器,支持多种移动平均类型,允许在不同 MA 算法之间轻松切换。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
period |
int |
20 |
1-100000 |
周期数 |
matype |
int |
0 |
0-8 |
移动平均类型(见下表) |
MA 类型值
值 |
类型 |
描述 |
|---|---|---|
0 |
SMA |
简单移动平均线 |
1 |
EMA |
指数移动平均线 |
2 |
WMA |
加权移动平均线 |
3 |
DEMA |
双指数移动平均线 |
4 |
TEMA |
三重指数移动平均线 |
5 |
TRIMA |
三角移动平均线 |
6 |
KAMA |
考夫曼自适应移动平均线 |
7 |
MAMA |
MESA 自适应移动平均线 |
8 |
T3 |
三重指数移动平均线(T3) |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值 (MA) |
回看 |
取决于 matype(通常为 period - 1) |
内存 |
取决于 matype |
API 使用
from techkit import MA
# Use SMA (matype=0)
ma = MA(period=20, matype=0)
result = ma.update(close_price)
# Use EMA (matype=1)
ma = MA(period=20, matype=1)
result = ma.update(close_price)
# TA-Lib compatible
from techkit import talib_compat as ta
ma_values = ta.MA(close_prices, timeperiod=20, matype=0) # SMA
const ma = tk.ma(20, 0); // period=20, matype=0 (SMA)
const result = ma.update(closePrice);
techkit::MA ma(20, techkit::MA_SMA);
auto result = ma.update(closePrice);
tk_indicator ma = tk_ma_new(20, TK_MA_SMA);
tk_result r = tk_update(ma, closePrice);
交易应用
灵活的 MA 选择: 无需更改代码即可在不同 MA 类型之间切换
策略测试: 测试不同 MA 类型以获得最佳性能
兼容性: 匹配 TA-Lib 的 MA 函数接口
MAVP - 可变周期移动平均线
MAVP 指标计算每个 K 线周期都变化的移动平均线,允许基于市场条件进行自适应平滑。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
min_period |
int |
2 |
1-100000 |
允许的最小周期 |
max_period |
int |
30 |
1-100000 |
允许的最大周期 |
matype |
int |
0 |
0-8 |
移动平均类型(见 MA 部分) |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 + 周期值(每个 K 线) |
输出 |
单个值(可变周期 MA) |
回看 |
max_period - 1 |
内存 |
O(max_period) |
API 使用
from techkit import MAVP
mavp = MAVP(min_period=2, max_period=30, matype=0)
# Each update requires both price and period
result = mavp.update_with_period(close_price, period_value)
# TA-Lib compatible
from techkit import talib_compat as ta
ma_values = ta.MAVP(close_prices, periods_array, minperiod=2, maxperiod=30, matype=0)
const mavp = tk.mavp(2, 30, 0);
const result = mavp.updateWithPeriod(closePrice, periodValue);
techkit::MAVP mavp(2, 30, techkit::MA_SMA);
auto result = mavp.updateWithPeriod(closePrice, periodValue);
tk_indicator mavp = tk_mavp_new(2, 30, TK_MA_SMA);
tk_result r = tk_mavp_update(mavp, closePrice, periodValue);
交易应用
自适应平滑: 周期适应市场波动率
基于波动率: 在波动市场中使用更高周期,在平静市场中使用更低周期
自定义逻辑: 基于指标实现自己的周期选择逻辑
常用参数值
min_period |
max_period |
matype |
使用场景 |
|---|---|---|---|
2 |
30 |
0 (SMA) |
标准可变 MA |
5 |
50 |
1 (EMA) |
长期可变 MA |
MAMA - MESA 自适应移动平均线
MESA 自适应移动平均线使用希尔伯特变换检测周期,并相应地调整平滑因子。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
fastlimit |
double |
0.5 |
0.01-0.99 |
快速平滑的上限 |
slowlimit |
double |
0.05 |
0.01-0.99 |
慢速平滑的下限 |
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
两个值(mama, fama) |
回看 |
32(近似) |
内存 |
O(1) |
API 使用
from techkit import MAMA
mama = MAMA(fastlimit=0.5, slowlimit=0.05)
result = mama.update(close_price)
if result.valid:
print(f"MAMA: {result.mama:.2f}, FAMA: {result.fama:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
mama, fama = ta.MAMA(close_prices, fastlimit=0.5, slowlimit=0.05)
const mama = tk.mama(0.5, 0.05);
const result = mama.update(closePrice);
// result.mama, result.fama
techkit::MAMA mama(0.5, 0.05);
auto result = mama.update(closePrice);
tk_indicator mama = tk_mama_new(0.5, 0.05);
tk_mama_result r = tk_mama_update(mama, closePrice);
// r.mama, r.fama
交易应用
基于周期的自适应: 自动适应市场周期
MAMA/FAMA 交叉: MAMA 穿越 FAMA 提供入场/出场信号
趋势跟踪: 非常适合趋势跟踪策略
快/慢限制: 调整限制以控制自适应速度
常用参数值
fastlimit |
slowlimit |
使用场景 |
|---|---|---|
0.5 |
0.05 |
标准 MAMA(最常见) |
0.6 |
0.04 |
更快自适应 |
0.4 |
0.06 |
更慢自适应 |
HT_TRENDLINE - 希尔伯特变换瞬时趋势线
HT_TRENDLINE 使用希尔伯特变换创建适应市场周期的平滑趋势线,提供无滞后的趋势指标。
参数
无需参数。
特性
属性 |
值 |
|---|---|
输入 |
收盘价 |
输出 |
单个值(趋势线) |
回看 |
32(近似) |
内存 |
O(1) |
API 使用
from techkit import HT_TRENDLINE
ht_trendline = HT_TRENDLINE()
result = ht_trendline.update(close_price)
if result.valid:
print(f"HT Trendline: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
trendline_values = ta.HT_TRENDLINE(close_prices)
const ht_trendline = tk.ht_trendline();
const result = ht_trendline.update(closePrice);
techkit::HT_TRENDLINE ht_trendline;
auto result = ht_trendline.update(closePrice);
tk_indicator ht_trendline = tk_ht_trendline_new();
tk_result r = tk_update(ht_trendline, closePrice);
交易应用
无滞后趋势: HT_TRENDLINE 与传统 MA 相比滞后最小
周期自适应: 自动适应市场周期
趋势识别: 价格在趋势线上方 = 上升趋势,下方 = 下降趋势
支撑/阻力: 趋势线作为动态支撑/阻力
SAREXT - 抛物线 SAR 扩展
SAREXT(抛物线 SAR 扩展)提供对 SAR 行为的增强控制,具有针对多头和空头头寸的独立加速因子,以及用于微调的附加参数。
参数
参数 |
类型 |
默认值 |
范围 |
描述 |
|---|---|---|---|---|
start_value |
double |
0.0 |
任意 |
初始 SAR 值(0 = 自动检测) |
offset_on_reverse |
double |
0.0 |
任意 |
趋势反转时添加/减去的偏移量 |
accel_init_long |
double |
0.02 |
0.001-0.1 |
多头头寸的初始 AF |
accel_long |
double |
0.02 |
0.001-0.1 |
多头头寸的 AF 增量 |
accel_max_long |
double |
0.20 |
0.01-1.0 |
多头头寸的最大 AF |
accel_init_short |
double |
0.02 |
0.001-0.1 |
空头头寸的初始 AF |
accel_short |
double |
0.02 |
0.001-0.1 |
空头头寸的 AF 增量 |
accel_max_short |
double |
0.20 |
0.01-1.0 |
空头头寸的最大 AF |
特性
属性 |
值 |
|---|---|
输入 |
OHLC(最高价、最低价) |
输出 |
单个值(SAR 价格水平) |
回看 |
1 |
内存 |
O(1) |
API 使用
from techkit import SAREXT
sarext = SAREXT(
start_value=0.0,
offset_on_reverse=0.0,
accel_init_long=0.02,
accel_long=0.02,
accel_max_long=0.20,
accel_init_short=0.02,
accel_short=0.02,
accel_max_short=0.20
)
result = sarext.update_ohlcv(open, high, low, close)
if result.valid:
print(f"SAREXT: {result.value:.2f}")
# TA-Lib compatible
from techkit import talib_compat as ta
sar_values = ta.SAREXT(
high, low,
startvalue=0.0, offsetonreverse=0.0,
accelerationinitlong=0.02, accelerationlong=0.02, accelerationmaxlong=0.20,
accelerationinitshort=0.02, accelerationshort=0.02, accelerationmaxshort=0.20
)
const sarext = tk.sarext(0.0, 0.0, 0.02, 0.02, 0.20, 0.02, 0.02, 0.20);
const result = sarext.updateOHLCV({open, high, low, close});
techkit::SAREXT sarext(0.0, 0.0, 0.02, 0.02, 0.20, 0.02, 0.02, 0.20);
techkit::OHLCV bar{open, high, low, close, volume};
auto result = sarext.update(bar);
tk_indicator sarext = tk_sarext_new(
0.0, 0.0, 0.02, 0.02, 0.20, 0.02, 0.02, 0.20
);
tk_ohlcv bar = {open, high, low, close, volume};
tk_result r = tk_update_ohlcv(sarext, &bar);
交易应用
非对称止损: 多头与空头头寸的不同加速
自定义初始化: 为特定入场点设置 start_value
反转偏移: offset_on_reverse 在趋势反转时调整 SAR
高级控制: 为特定交易策略微调 SAR 行为
常用参数值
使用场景 |
多头 AF |
空头 AF |
备注 |
|---|---|---|---|
标准 |
0.02/0.20 |
0.02/0.20 |
与常规 SAR 相同 |
更紧的多头止损 |
0.03/0.30 |
0.02/0.20 |
多头头寸的更快止损 |
更紧的空头止损 |
0.02/0.20 |
0.03/0.30 |
空头头寸的更快止损 |
相关指标
价格转换: AVGPRICE, MEDPRICE, TYPPRICE, WCLPRICE
统计: STDDEV, VAR 用于基于波动率的带
周期指标: HT_TRENDLINE 使用希尔伯特变换进行周期检测