TAStatistics
统计函数综合策略示例
本文档提供统计函数的实战策略示例。
策略 1:线性回归均值回归策略
策略逻辑
利用价格偏离回归线的特性进行均值回归交易。
python
def main():
while True:
records = exchange.GetRecords()
if len(records) < 100:
Sleep(1000)
continue
closes = [r['Close'] for r in records]
current_price = closes[-1]
# 线性回归及统计指标
lr = TA.LINEARREG(closes, 20)
slope = TA.LINEARREG_SLOPE(closes, 20)
stddev = TA.STDDEV(closes, 20)
# 价格偏离(标准差单位)
deviation = (current_price - lr[-1]) / stddev[-1]
Log(f"偏离度: {deviation:.2f}σ")
Log(f"斜率: {slope[-1]:.4f}")
# 交易逻辑
if deviation < -2 and slope[-1] > 0:
Log("✅ 上升趋势 + 超卖,买入")
# exchange.Buy(...)
elif deviation > 2 and slope[-1] < 0:
Log("❌ 下降趋势 + 超买,卖出")
# exchange.Sell(...)
elif abs(deviation) < 0.5:
Log("💰 价格回归,平仓")
Sleep(60000)策略 2:双资产配对交易策略
策略逻辑
基于相关性进行配对套利交易。
python
def main():
while True:
# 获取两个相关资产
records_btc = exchange.GetRecords()
exchange.IO("currency", "ETH_USDT")
records_eth = exchange.GetRecords()
exchange.IO("currency", "BTC_USDT")
if len(records_btc) < 100:
Sleep(1000)
continue
btc_close = [r['Close'] for r in records_btc]
eth_close = [r['Close'] for r in records_eth]
# 相关性分析
correl = TA.CORREL(btc_close, eth_close, 30)
# 只在高相关时交易
if correl[-1] > 0.8:
# 价格比率
ratio = [btc_close[i] / eth_close[i] for i in range(len(btc_close))]
ratio_ma = sum(ratio[-30:]) / 30
ratio_std = TA.STDDEV(ratio, 30)[-1]
# Z-score
z_score = (ratio[-1] - ratio_ma) / ratio_std
Log(f"相关性: {correl[-1]:.3f}")
Log(f"比率Z-score: {z_score:.2f}")
# 套利信号
if z_score > 2:
Log("✅ BTC相对超买,做空BTC做多ETH")
elif z_score < -2:
Log("✅ BTC相对超卖,做多BTC做空ETH")
elif abs(z_score) < 0.5:
Log("💰 比率回归,平仓")
else:
Log(f"⚠️ 相关性较低 ({correl[-1]:.3f}),不适合配对交易")
Sleep(60000)策略 3:波动率统计分析策略
策略逻辑
使用标准差分析波动率,动态调整交易参数。
python
def main():
while True:
records = exchange.GetRecords()
if len(records) < 100:
Sleep(1000)
continue
closes = [r['Close'] for r in records]
current_price = closes[-1]
# 多周期标准差
std_5 = TA.STDDEV(closes, 5)
std_20 = TA.STDDEV(closes, 20)
std_60 = TA.STDDEV(closes, 60)
# 波动率比率
volatility_ratio = std_5[-1] / std_60[-1]
# 标准差百分比
std_percent = (std_20[-1] / current_price) * 100
Log(f"短期/长期波动比: {volatility_ratio:.2f}")
Log(f"标准差占价格: {std_percent:.2f}%")
# 根据波动率调整策略
if volatility_ratio > 1.5:
Log("⚠️ 短期波动率显著升高")
stop_multiplier = 3 # 扩大止损
position_size = 0.5 # 减小仓位
elif volatility_ratio < 0.7:
Log("💤 短期波动率较低")
stop_multiplier = 2 # 标准止损
position_size = 1.0 # 正常仓位
else:
Log("📊 正常波动环境")
stop_multiplier = 2.5
position_size = 0.8
# 止损距离
stop_distance = stop_multiplier * std_20[-1]
Log(f"建议止损距离: {stop_distance:.2f}")
Log(f"建议仓位比例: {position_size:.1%}")
Sleep(60000)策略 4:TSF 预测辅助策略
策略逻辑
使用时间序列预测辅助判断趋势方向。
python
def main():
while True:
records = exchange.GetRecords()
if len(records) < 100:
Sleep(1000)
continue
closes = [r['Close'] for r in records]
current_price = closes[-1]
# TSF预测
forecast = TA.TSF(closes, 20)
predicted = forecast[-1]
# 线性回归斜率
slope = TA.LINEARREG_SLOPE(closes, 20)
# 标准差
stddev = TA.STDDEV(closes, 20)
# 预测偏离
forecast_deviation = (current_price - predicted) / stddev[-1]
Log(f"当前: {current_price:.2f}")
Log(f"预测: {predicted:.2f}")
Log(f"偏离: {forecast_deviation:.2f}σ")
Log(f"斜率: {slope[-1]:.4f}")
# 综合判断
if slope[-1] > 0.1 and forecast_deviation < -1:
Log("✅ 上升趋势 + 价格低于预测,买入")
elif slope[-1] < -0.1 and forecast_deviation > 1:
Log("❌ 下降趋势 + 价格高于预测,卖出")
Sleep(60000)策略参数建议
线性回归参数
| 周期 | 适用场景 |
|---|---|
| 10-14 | 短线交易 |
| 20-30 | 波段交易 |
| 50-100 | 趋势跟踪 |
标准差阈值
| 偏离度 | 操作 |
|---|---|
| > +2σ | 超买,考虑卖出 |
| +1σ ~ +2σ | 偏高,谨慎 |
| -1σ ~ +1σ | 正常范围 |
| -2σ ~ -1σ | 偏低,关注 |
| < -2σ | 超卖,考虑买入 |
相关性阈值
| 相关系数 | 配对交易适用性 |
|---|---|
| > 0.8 | 强相关,适合 |
| 0.5 ~ 0.8 | 中等,谨慎 |
| < 0.5 | 弱相关,不适合 |
风险控制要点
止损设置
- 标准止损:2 ~ 2.5σ
- 宽松止损:3 ~ 4σ(低波动环境)
- 紧凑止损:1.5 ~ 2σ(高波动环境)
仓位管理
- 高波动(std% > 5%):50% 仓位
- 正常波动(std% 2-5%):100% 仓位
- 低波动(std% < 2%):观望或小仓位
配对交易风险
- 相关性降至0.5以下立即止损
- 单边最大损失不超过2%
- 监控相关性变化趋势
实战技巧总结
统计指标应用场景
| 指标 | 最佳应用 |
|---|---|
| LINEARREG | 趋势判断、均值回归 |
| LINEARREG_SLOPE | 趋势强度、反转检测 |
| STDDEV | 波动率分析、止损设置 |
| CORREL | 配对交易、组合优化 |
| TSF | 价格预测、辅助判断 |
组合使用建议
- 趋势交易:LINEARREG + SLOPE + STDDEV
- 均值回归:LINEARREG + STDDEV (偏离度)
- 配对套利:CORREL + STDDEV (Z-score)
- 波动率交易:STDDEV (多周期对比)