问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

量化交易:建立趋势跟踪策略的五个指标

创作时间:
作者:
@小白创作中心

量化交易:建立趋势跟踪策略的五个指标

引用
CSDN
1.
https://blog.csdn.net/jeffliu123/article/details/134489464

量化交易中的趋势跟踪策略是一种跟随市场趋势进行买卖的策略,其核心在于识别和利用市场趋势。本文将介绍五种常用的量化交易指标:移动平均线、布林带、MACD、相对强弱指数(RSI)和平衡交易量(OBV),并提供Python代码实现,帮助读者更好地理解和应用这些指标。

移动平均线

移动平均线指标是一种广泛使用的技术指标,用于做出不基于一两次价格波动的决定。可以使用一组历史数据来观察股票在预定时间段内的价格波动。这同样有助于描绘趋势流的总体方向。

如何在趋势跟踪策略中使用移动平均线

移动平均线提供了一个清晰的想法,即是对股票进行多头还是空头头寸。如果股票呈现负趋势,即价格低于移动平均线,则对该股票做空(卖出)。另一方面,如果股价高于简单移动平均线,则必须在股票上做多(买入),因为人们预计股价会进一步上涨。

在 Python 中为趋势跟踪策略绘制移动平均线

在绘制移动平均线之前,首先定义一个时间段并选择一个公司股票,以便对其进行分析。在本例中,定义时间段为 2017 年 1 月 1 日至 2018 年 1 月 1 日,选择的公司是特斯拉(TSLA)。

因此,导入相关库并在 python 中定义句点在以下代码中给出:

from iexfinance import get_historical_data
from datetime import datetime
import pandas as pd

start = datetime(2017, 1, 1)
end = datetime(2018, 1, 1)
data = get_historical_data('TSLA', start=start, end=end, output_format='pandas')
data.index = pd.to_datetime(data.index)
data.head()

现在,使用以下 python 代码绘制公司的 SMA 和 EMA:

import talib as ta
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('bmh')

# 简单移动平均线
data['SMA'] = ta.SMA(data.close, timeperiod=20)
# 指数移动平均线
data['EMA'] = ta.EMA(data.close, timeperiod=20)

# 绘制
data[['close', 'SMA', 'EMA']].plot(figsize=(10, 5))
plt.show()

布林带

布林带指标是绘制在一条奇异线上的信号,代表特定股票的价格波动。

它们由三行组成:

  • 上布林带,
  • 中布林带,
  • 较低的布林带。

上布林带和下布林带的绘制距离均值有两个标准差。绘制两个信号或波段以衡量价格波动的波动性。

如何在趋势跟踪策略中使用布林带

当市场变得更加波动时,信号之间的距离会增加,或者简而言之,带宽会变宽,而低波动性则相反。波动性越高,退出交易的提示就越高。

将布林带绘制成距离平均平均值两个标准差的原因是为了确保两个带之间的距离占价格行为的 80% 以上,从而使高于或低于该带的任何价格都非常重要。

在 Python 中绘制布林带以实现趋势跟踪策略

Python 代码如下:

# 布林带
data['upper_band'], data['middle_band'], data['lower_band'] = ta.BBANDS(data.close, timeperiod=20)

# 绘制
data[['close', 'upper_band', 'middle_band', 'lower_band']].plot(figsize=(10, 5))
plt.show()

MACD

移动平均收敛散度指标 (MACD) 是对两个不同数据集的两条移动平均线的比较分析。

根据时间序列的带宽,您可以评估两个不同时间段的价格波动。一个持续一个月,另一个持续 200 天。

这两个数据集的移动平均值的比较是基于三个主要观察结果,即收敛、发散和急剧上升。

如何在趋势跟踪策略中使用 MACD

如果一个数据集的价格波动小于移动平均线,而另一组数据的波动高于移动平均线,则由于价格波动不稳定,因此做空股票更为明智。

在 Python 中为趋势跟踪策略绘制 MACD

Python 代码如下:

# MACD
data['macd'], data['macdsignal'], data['macdhist'] = ta.MACD(data.close, fastperiod=12, slowperiod=26, signalperiod=9)

data[['macd', 'macdsignal']].plot(figsize=(10, 5))
plt.show()

相对强弱指数

相对强弱指数,即 RSI 指标使用以下公式计算:

RSI = 100 – 100 / (1 + RS)

其中 RS = 指定时间范围内上涨时段的平均收益 / 指定时间范围内下跌时段的平均损失。

RSI 用于衡量价格波动的速度和变化。该指标提供了证券近期在股市中的表现的一个概念。它衡量股票在 0 到 100 范围内的强度。

如何在趋势跟踪策略中使用 RSI

股票在 70 范围内被视为超买,在 30 以下被超卖。您可以相应地修改您的交易策略。

在 Python 中为趋势跟踪策略绘制 RSI

Python 代码如下:

# 相对强弱指数
data['RSI'] = ta.RSI(data.close, timeperiod=14)

# 绘制 RSI
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(data.index, data.RSI, label='RSI')
ax.fill_between(data.index, y1=30, y2=70, color='lightcoral', alpha='0.3')
ax.set_xlabel('日期')
ax.set_ylabel('RSI')
plt.show()

OBV

平衡交易量 (OBV) 指标是一种基于动量的指标,可测量交易量以衡量趋势的方向。量和价格的上涨是成正比的。上涨的 OBV 代表价格上涨,而下跌的 OBV 代表价格下跌。如果 OBV 以与价格相同的模式描绘上涨,这是一个积极的指标。而与模式的对比描绘了一个负面指标。

如何在趋势跟踪策略中使用 OBV

OBV 被用作关于价格趋势的确认工具。如果 OBV 相对于价格上涨趋势而增加,则可以推断价格趋势是可持续的。但是,如果 OBV 相对于价格上涨趋势显示下降,那么它可能预示着价格趋势反转。

在 Python 中为趋势跟踪策略绘制 OBV

Python 代码如下:

# OBV
data['OBV'] = ta.OBV(data.close, data.volume) / 10**6

data.close.plot()
plt.ylabel('关闭')
plt.show()

data.OBV.plot()
plt.ylabel('余额交易量(百万)')
plt.show()

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号