抛物线SAR指标(Stop and Reverse,简称SAR)是技术分析师和交易者常用的一种工具。它能够帮助我们发现潜在的趋势反转点,并指导我们何时入场或退场。在趋势跟踪策略中,这个指标特别有用。掌握SAR的运作原理和应用方法,可以让我们更好地驾驭金融市场的复杂变化。因为简单易懂且在趋势市场中相当可靠,SAR受到了很多资深专业人士和初学者的喜爱。而SAR其实并不复杂,无论你是一个想要提升自己策略的老鸟,还是一个刚入门的小白,都值得你花点时间研究一下这个指标。
下面我们先来了解一下SAR指标能帮我们干什么。
辨别行情趋势
抛物线SAR的主要特点就是它能够识别当前的趋势方向。这个指标会在图表上显示由小红点组成的抛物线:
当抛物线在价格下方时,表示市场处于上升趋势。而抛物线在价格上方时,则代表市场是处于下降趋势的。
发现潜在的行情反转点
SAR指标还可以用来寻找潜在的反转点。我们可以通过观察抛物线的走向,密切留意抛物线是否从价格下方翻转到上方,或从上方翻转到下方时,这表明可能即将发生趋势反转。我们可以根据这个信号来决定入场还是撤资。
SAR指标的计算方法
抛物线SAR指标的计算方法由两个重要部分组成:极端价格和加速因子。
极端价格(EP)
极端价格(EP)表示当前趋势期间记录的最高点或最低点:
- 如果整体趋势是上升的,EP的值等于自趋势开始以来观察到的最高点。
- 反之,在下降趋势中,EP是从趋势开始以来观察到的最低点。
加速因子(AF)
加速因子(AF)决定了SAR指标的灵敏度。它的初始值为0.02,并且在趋势中每达到一个新的极值点时可以逐步增加,最高可达到0.20。AF的调整如下:
– 初始值为0.02。
– 每达到一个新的极值点(最高点或最低点),AF增加0.02。
– 达到0.20后不再增加。
这种调整确保了SAR在趋势加强时变得更加灵敏,能够更紧密地跟踪价格。
抛物线SAR的计算公式 抛物线SAR的计算公式如下:
这个公式确保随着趋势的发展,SAR值逐渐靠近价格,为市场的变化提供一个动态的指标。
趋势反转
当价格穿越SAR值时,就发生了趋势反转。这时,SAR值会被重置,趋势方向也会切换。新的SAR值将设置为前一个趋势的EP,AF则重新回到初始值。
SAR指标代码示例
import pandas as pd import matplotlib.pyplot as plt import allticks # 以下以美股苹果股票为例 # 从Alltick的行情接口获取苹果股票价格数据 apple_stock_data = allticks.get_stock_data('AAPL') # 确保数据按日期排序 apple_stock_data = apple_stock_data.sort_index() # 计算抛物线SAR def calculate_parabolic_sar(data, af_start=0.02, af_increment=0.02, af_max=0.20): # 初始化变量 sar = [0] * len(data) trend = 1 # 1表示上升趋势,-1表示下降趋势 ep = data['Low'][0] # 极端点:上升趋势时为最低价,下降趋势时为最高价 af = af_start # 加速因子 # 设置初始SAR值 sar[0] = data['Low'][0] if trend == 1 else data['High'][0] for i in range(1, len(data)): prev_sar = sar[i - 1] if trend == 1: sar[i] = prev_sar + af * (ep - prev_sar) if data['Low'][i] < sar[i]: trend = -1 sar[i] = ep ep = data['High'][i] af = af_start else: if data['High'][i] > ep: ep = data['High'][i] af = min(af + af_increment, af_max) else: sar[i] = prev_sar - af * (prev_sar - ep) if data['High'][i] > sar[i]: trend = 1 sar[i] = ep ep = data['Low'][i] af = af_start else: if data['Low'][i] < ep: ep = data['Low'][i] af = min(af + af_increment, af_max) return sar # 计算SAR值 apple_stock_data['SAR'] = calculate_parabolic_sar(apple_stock_data) # 可视化结果 plt.figure(figsize=(14, 7)) plt.plot(apple_stock_data['Close'], label='Apple Stock Price') plt.plot(apple_stock_data['SAR'], label='Parabolic SAR', linestyle='--') plt.title('Apple Stock Price with Parabolic SAR') plt.xlabel('Date') plt.ylabel('Price') plt.legend() plt.show()
【推荐阅读】Pairs Trading 配对交易策略