抛物线SAR:原理、公式和 Python 代码

松鼠Quant
2024-04-12

什么是抛物线转向指标?

抛物线转向指标(Parabolic SAR)代表“止损和反转”,是金融市场中使用的一种技术分析指标,用于找出潜在的趋势反转以及设置止损水平。它由 J. Welles Wilder 开发,他还创建了其他流行指标,如相对强弱指数 (RSI)、平均方向指数 (ADX) 和平均真实波幅 (ATR)。

以下是抛物线 SAR 的关键组成部分:

  • 趋势方向

  • 加速系数

趋势方向

  • 由于抛物线转向指标线装饰价格图表的上方或下方,它们提供了辨别潜在趋势的视觉线索——低于时为上升趋势,高于时为下降趋势。

  • 简而言之,您可以看到我如何通过图表将其总结如下。

  • 当抛物转向指标线低于价格时,表明上升趋势(买入信号或做多)。

  • 当抛物转向指标线高于价格时,表明存在下降趋势(卖出信号或做空)。

图片

抛物线 SAR 是如何计算的?

根据以下公式计算每个周期的抛物线转向指标:

SARn = SARn-1 + AF * (EP - SARn-1)

在哪里,

  • SARn 是当前周期的 SAR。

  • SARn-1 是上一周期的 SAR。

  • AF是加速因子

  • EP(Extreme Point)是当前趋势的极值点。如果当前趋势是上升趋势,那么极值将是趋势再次下降之前的最高点;如果当前趋势是下降趋势,则极值将是趋势回升之前下降趋势的最低点。

抛物线 SAR的作用:

  • 趋势识别:抛物线转向指标的主要用途之一是识别潜在趋势的方向。SAR 的点出现在价格图表的上方或下方,表明潜在的趋势方向(向上或向下)。

  • 趋势反转信号:抛物线转向指标旨在提供潜在趋势反转的信号。当转向指标点换边时(例如,从价格下方转至价格上方,反之亦然),则表明趋势方向发生变化。

  • 追踪止损管理:交易者经常使用抛物线转向指标来设置追踪止损单。在上升趋势中,止损随着转向指标点的上升而上升,帮助交易者在价格走高时锁定利润。在下降趋势中,止损向下移动。

  • 动态支撑和阻力: SAR 点可以充当动态支撑或阻力位。在上升趋势中,特区提供支撑,在下降趋势中,特区则充当阻力。交易者可以利用这些水平进行决策和风险管理。

  • 使用简单:抛物线转向指标相对容易理解和使用。它在价格图表上的直观表示使具有不同经验水平的交易者可以使用它。

  • 适应市场条件:抛物线转向指标公式中的加速因子使指标能够适应不断变化的市场条件。随着趋势的延伸,特区加速,捕捉趋势的动力。

  • 与其他指标的补充:交易者经常将抛物线转向指标与其他技术指标结合使用来确认信号并建立更全面的分析。组合指标可以增强交易决策的可靠性。

  • 风险管理:抛物线转向指标通过提供设置止损水平的机制来协助风险管理。这可以帮助交易者限制潜在损失并保护趋势市场的收益。

  • 跨时间范围的多功能性:抛物线转向指标可以应用于各种时间范围,从短期盘中交易到长期投资。它的适应性使其成为具有不同时间范围偏好的交易者的多功能工具

使用 Python 的抛物线 SAR 交易策略

使用 Python 的抛物线 SAR 交易策略结合了技术分析的力量和编程的灵活性。利用流行的 TA-Lib 库,该策略涉及计算和可视化抛物线 SAR 指标,以做出明智的买入和卖出决策。Python 的多功能性增强了这种动态交易方法的实施。

第1步:导入必要的库






import talib as taimport pandas as pdimport talibimport yfinance as yfimport matplotlib.pyplot as plt

步骤 2:定义一个函数来获取历史价格数据





# Function to get historical price datadef get_price_data(ticker, start_date, end_date):   data = yf.download(ticker, start=start_date, end=end_date)return data

此函数使用 yfinance 库下载指定日期范围(start_date 到 end_date)内给定股票(股票代码)的历史价格数据。

步骤 3:定义函数来实现抛物线 SAR 交易策略
















# Function to implement Parabolic SAR trading strategydef parabolic_sar_strategy(data):
   # Calculate Parabolic SARdata['SAR'] = talib.SAR(data['High'], data['Low'], acceleration=0.02, maximum=0.2)
   # Generate trading signalsdata['Signal'] = 0   # 0 means no signaldata['Signal'][data['Close'] > data['SAR']] = 1   # Buy signaldata['Signal'][data['Close'] < data['SAR']] = -1   # Sell signal
   # Generate positions based on signalsdata['Position'] = data['Signal'].diff()
return data

该函数实现抛物线转向指标交易策略。它使用最高价和最低价计算抛物线转向指标值,根据收盘价和转向指标之间的关系生成买入 (1) 和卖出 (-1) 信号,并根据信号变化计算仓位。

步骤 4:定义一个函数来绘制策略结果













# Function to plot the strategy resultsdef plot_strategy(data):   plt.figure(figsize=(12, 6))   plt.plot(data['Close'], label='Close Price', alpha=0.5)   plt.scatter(data[data['Signal'] == 1].index, data['Close'][data['Signal'] == 1], marker='^', color='g', label='Buy Signal')   plt.scatter(data[data['Signal'] == -1].index, data['Close'][data['Signal'] == -1], marker='v', color='r', label='Sell Signal')   plt.plot(data['SAR'], label='Parabolic SAR', linestyle='dashed', alpha=0.5)   plt.title('Parabolic SAR Trading Strategy')   plt.xlabel('Date')   plt.ylabel('Price')   plt.legend()   plt.show()

该函数绘制策略结果。它以可视化方式显示收盘价、买入和卖出信号以及抛物线转向指标值。绿色“^”标记代表买入信号,红色“v”标记代表卖出信号,虚线代表抛物线转向指标。

步骤 5:实施抛物线 SAR 策略及绘制图表



strategy_data = parabolic_sar_strategy(price_data)plot_strategy(strategy_data)

图片

抛物线 SAR 的缺点

现在,让我们看看下面使用抛物线 SAR 的一些缺点。

  • 波动市场中的锯齿状波动:抛物线转向指标可能会在波动或横向市场中产生虚假信号,从而导致锯齿状波动。当价格缺乏明确的趋势时,交易者可能会遭受损失。

  • 强趋势中的后期入场:在强趋势市场中,抛物线转向指标可能会提供后期入场信号,从而导致错失捕捉整个趋势的机会。

  • 取决于参数设置:抛物线 SAR 的有效性受到为其参数选择的值(例如加速因子)的影响。在某些市场条件下,默认设置可能不是最佳的,需要进行调整。

  • 不适合区间市场:抛物线转向指标是为趋势市场而设计的,在价格在一定范围内波动的区间或横盘市场中可能表现不佳。

  • 对价格波动的敏感性:特别行政区对价格波动的敏感性可能会导致方向的频繁变化,尤其是当市场经历突然而剧烈的价格波动时。

  • 缺乏方向偏差信息:虽然抛物线转向指标可以识别趋势的方向,但它不提供有关趋势强度或持续时间的信息。交易者可能需要额外的指标来进行更全面的分析。

图片


分享