SAR抛物线指标策略–量化实战(附Python代码)

在金融市场的波动中,交易者们一直在寻找能够揭示市场趋势的技术指标。抛物线指标(Parabolic SAR, 简称SAR)因其对趋势的敏感性和操作的简便性,成为众多交易者和量化分析师的优选工具。

一、抛物线指标SAR概述

SAR由Welles Wilder提出,是一种趋势跟踪系统,用于确定潜在的停止和反转点。SAR的计算基于价格的变动速度和幅度,通过加速因子(Acceleration Factor, AF)来调整。

  • SAR指标的计算公式拆解

图片

二、交易信号的生成

  • 买入信号:当价格从SAR之下向上穿越SAR时,视为买入信号。

  • 卖出信号:当价格从SAR之上向下穿越SAR时,视为卖出信号。

三、SAR抛物线指标策略量化实战

图片

import pandas as pdimport numpy as npimport matplotlib.pyplot as plt
def calculate_sar(df, initial_af=0.02, af_increment=0.02, max_af=0.2):    df['SAR'] = np.nan  # 初始化SAR列    df['SAR'][0] = df['Low'][0]  # 第一个SAR值设为第一个周期的最低价    df['EP'] = np.nan  # 初始化极值点列    df['EP'][0] = df['High'][0]  # 第一个极值点设为第一个周期的最高价    af = initial_af  # 初始化加速因子    trend = None  # 初始趋势
    for i in range(1, len(df)):        if trend is None and df['High'][i] > df['EP'][i-1]:            trend = 'up'            af = initial_af            df['EP'][i] = df['High'][i]        elif trend is None and df['Low'][i] < df['SAR'][i-1]:            trend = 'down'            af = initial_af            df['EP'][i] = df['Low'][i]                if trend == 'up':            df['SAR'][i] = df['SAR'][i-1] + af * (df['EP'][i-1] - df['SAR'][i-1])            if df['Low'][i] < df['SAR'][i]:                trend = 'down'                af = initial_af                df['EP'][i] = df['Low'][i]        elif trend == 'down':            df['SAR'][i] = df['SAR'][i-1] - af * (df['SAR'][i-1] - df['EP'][i-1])            if df['High'][i] > df['SAR'][i]:                trend = 'up'                af = initial_af                df['EP'][i] = df['High'][i]                af = min(max_af, af + af_increment)  # 更新加速因子
    return df['SAR']
# 假设df是包含股票价格的DataFramedf['SAR'] = calculate_sar(df)
# 生成交易信号df['Signal'] = np.where(df['Close'].shift(1) < df['SAR'].shift(1), -1, 0)df['Signal'] = np.where(df['Signal'].shift(-1) == -1 and df['Close'] > df['SAR'], -df['Signal'].shift(-1), df['Signal'])df['Signal'] = np.where(df['Close'].shift(1) > df['SAR'].shift(1), 1, df['Signal'])
# 绘制SAR指标和交易信号plt.figure(figsize=(14, 7))plt.plot(df['Close'], label='Close Price')plt.plot(df['SAR'], label='SAR', linestyle='--')plt.plot(df[df['Signal'] == 1].index, df['Close'][df['Signal'] == 1], '^', markersize=10, color='green', label='Buy Signal')plt.plot(df[df['Signal'] == -1].index, df['Close'][df['Signal'] == -1], 'v', markersize=10, color='red', label='Sell Signal')plt.legend()plt.show()
  • 策略回测

策略回测是量化交易中验证交易策略有效性的重要步骤。通过历史数据模拟交易,可以评估策略的收益、风险和稳定性。

四、结语

量化交易的未来在于不断探索和应用新的技术指标。抛物线指标SAR作为一种有效的趋势跟踪工具,在量化交易策略中扮演着重要角色。本文通过实战应用展示了SAR指标的计算、交易信号生成和策略回测的全过程,为交易者提供了一种系统的量化交易策略开发和评估方法。需注意,以上内容和代码仅为示例,实际应用中需要根据具体情况进行调整和优化。量化交易涉及复杂的数学模型和编程技能,建议交易者在充分学习和测试后,再将策略应用于实际交易中。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/106022
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 5天前
下一篇 5天前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注