Pharos
TAStatistics

TA.LINEARREG() - 线性回归

线性回归 (Linear Regression)

计算线性回归值,用于预测趋势方向和识别价格偏离。

返回统计函数目录


语法

python
TA.LINEARREG(close, timeperiod=14)

参数

参数名类型必选默认值说明
closeany-收盘价数组
timeperiodany-回归周期,默认 14

返回值

返回线性回归值数组,表示给定周期内的线性拟合值。

计算方法

线性回归使用最小二乘法拟合一条直线:

plaintext
y = a + b×x

其中:
a = 截距 (intercept)
b = 斜率 (slope)
x = 时间索引
y = 回归值

回归线代表了数据的趋势方向,可用于:

  • 判断趋势方向(斜率正负)
  • 识别超买超卖(价格偏离回归线)
  • 预测未来价格走势

信号解读

价格与回归线关系

  • 价格 > 回归线:价格高于趋势,可能超买
  • 价格 < 回归线:价格低于趋势,可能超卖
  • 价格回归回归线:均值回归信号

趋势判断

  • 回归线斜率 > 0:上升趋势
  • 回归线斜率 < 0:下降趋势
  • 回归线斜率 ≈ 0:横盘震荡

基础示例

价格偏离检测

python
def main():
    while True:
        records = exchange.GetRecords()
        if len(records) < 50:
            Sleep(1000)
            continue
        
        closes = [r['Close'] for r in records]
        
        # 计算14周期线性回归
        lr = TA.LINEARREG(closes, 14)
        current_price = closes[-1]
        
        # 价格偏离回归线
        deviation = current_price - lr[-1]
        deviation_percent = (deviation / lr[-1]) * 100
        
        Log(f"当前价格: {current_price}")
        Log(f"回归值: {lr[-1]:.2f}")
        Log(f"偏离: {deviation_percent:.2f}%")
        
        # 判断超买超卖
        if deviation_percent > 5:
            Log("⚠️ 价格显著高于回归线,可能超买")
        elif deviation_percent < -5:
            Log("💡 价格显著低于回归线,可能超卖")
        else:
            Log("📊 价格接近回归线,正常")
        
        Sleep(60000)

高级应用

均值回归交易策略

python
def main():
    while True:
        records = exchange.GetRecords()
        if len(records) < 100:
            Sleep(1000)
            continue
        
        closes = [r['Close'] for r in records]
        
        # 线性回归及标准差
        lr = TA.LINEARREG(closes, 20)
        stddev = TA.STDDEV(closes, 20)
        
        current_price = closes[-1]
        
        # 计算价格偏离(以标准差为单位)
        deviation_std = (current_price - lr[-1]) / stddev[-1]
        
        Log(f"偏离度: {deviation_std:.2f}个标准差")
        
        # 均值回归策略
        if deviation_std < -2:
            Log("✅ 价格远低于回归线(< -2σ),买入信号")
            # exchange.Buy(...)
        elif deviation_std > 2:
            Log("❌ 价格远高于回归线(> +2σ),卖出信号")
            # exchange.Sell(...)
        elif abs(deviation_std) < 0.5:
            Log("💰 价格回归回归线,考虑平仓")
        
        Sleep(60000)

线性回归通道策略

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, 50)
        stddev = TA.STDDEV(closes, 50)
        
        # 构建线性回归通道
        upper_band = lr[-1] + 2 * stddev[-1]
        middle_band = lr[-1]
        lower_band = lr[-1] - 2 * stddev[-1]
        
        Log(f"上轨: {upper_band:.2f}")
        Log(f"回归线: {middle_band:.2f}")
        Log(f"下轨: {lower_band:.2f}")
        Log(f"当前价格: {current_price:.2f}")
        
        # 通道交易
        if current_price > upper_band:
            Log("⚠️ 突破上轨,强势信号")
        elif current_price < lower_band:
            Log("💡 跌破下轨,弱势信号或超卖")
        elif current_price > middle_band:
            Log("📈 价格在回归线上方")
        else:
            Log("📉 价格在回归线下方")
        
        Sleep(60000)

参数优化建议

周期推荐值适用场景
短期10-14短线交易、快速反应
中期20-30波段交易、趋势跟踪
长期50-100长线投资、主趋势判断

与其他指标配合

线性回归 + 斜率

python
lr = TA.LINEARREG(closes, 20)
slope = TA.LINEARREG_SLOPE(closes, 20)

# 上升趋势 + 价格低于回归线
if slope[-1] > 0 and closes[-1] < lr[-1]:
    Log("上升趋势中的回调,买入机会")

线性回归 + RSI

python
lr = TA.LINEARREG(closes, 20)
rsi = TA.RSI(closes, 14)

# 价格低于回归线 + RSI超卖
if closes[-1] < lr[-1] and rsi[-1] < 30:
    Log("双重确认超卖")

线性回归 + MACD

python
lr = TA.LINEARREG(closes, 20)
macd = TA.MACD(closes, 12, 26, 9)

# 回归线向上 + MACD金叉
if lr[-1] > lr[-2] and macd[0][-1] > macd[1][-1]:
    Log("趋势 + 动量双重确认")

注意事项

  1. 滞后性:线性回归是滞后指标,不能预测突发变化
  2. 趋势市场:在强趋势市场更有效
  3. 震荡市场:横盘时回归线可能失效
  4. 周期选择:周期越长越平滑但越滞后
  5. 偏离度量:建议用标准差标准化偏离
  6. 配合使用:不应单独使用,需结合其他指标
  7. 突发事件:重大新闻会使价格快速偏离回归线

相关指标

实战要点

买入信号

✅ 价格低于回归线 2 个标准差 ✅ 上升趋势中价格回调至回归线 ✅ 价格触及下轨后反弹

卖出信号

❌ 价格高于回归线 2 个标准差 ❌ 下降趋势中价格反弹至回归线
❌ 价格触及上轨后回落

风险控制

  • 偏离过大时谨慎追涨杀跌
  • 设置止损在通道之外
  • 结合趋势指标判断方向
  • 注意假突破风险

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