Pharos
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价格预测、辅助判断

组合使用建议

  1. 趋势交易:LINEARREG + SLOPE + STDDEV
  2. 均值回归:LINEARREG + STDDEV (偏离度)
  3. 配对套利:CORREL + STDDEV (Z-score)
  4. 波动率交易:STDDEV (多周期对比)

返回统计函数目录 | 返回 TA 指标总目录