什么是抛物线SAR指标?要如何使用?附Python代码示例
抛物线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的计算公式如下:
SARnew=SARcurrent+AF×(EP–SARcurrent)
这个公式确保随着趋势的发展,SAR值逐渐靠近价格,为市场的变化提供一个动态的指标。
趋势反转
当价格穿越SAR值时,就发生了趋势反转。这时,SAR值会被重置,趋势方向也会切换。新的SAR值将设置为前一个趋势的EP,AF则重新回到初始值。
SAR指标代码示例
下面我们以美股苹果股票为例,从Alltick提供的行情接口获取实时报价和历史成交价,尝试计算SAR指标。
import pandas as pd
import matplotlib.pyplot as plt
import allticks
# 从Alltick的行情接口获取苹果股票价格数据
# 申请免费token:https://alltick.co/register
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()
- 点赞
- 收藏
- 关注作者
评论(0)