分享

建立趋势跟踪战略的五个指标

 平安货运夏 2022-12-10 发布于辽宁

文章摘要

趋势跟踪策略是交易者中最受欢迎的策略,因为该股票的趋势可以决定对该特定股票进行长时间或缩短。2022年5月,据观察,法国兴业银行(Societe Generale)主导的趋势跟踪策略指数今年迄今上升了26% 以上。

让我们透过文章,了解更多有关趋势跟踪策略及五个最常用的趋势交易指标:

  • 什么是趋势策略?

  • 趋势跟随策略的示例

  • 趋势如何出现?

  • 交易趋势类型

  • 实施趋势跟随策略

  • 趋势跟随策略的优点

  • 趋势跟随策略的缺点

什么是趋势策略?

趋势跟踪策略是这样一种策略,你只需要跟随趋势,即在价格上涨的时候买入,在价格开始下跌的时候卖出(两种策略都需要很长时间)。采用趋势跟踪策略时,人们并不打算进行预测或预测,而只是需要密切关注市场上出现的任何新趋势。

趋势跟随策略的示例

让我们以亚马逊的股票为趋势策略的例子。在下图中,我标记了两条蓝线,亚马逊的价格显示了两个趋势,即上升趋势和下降趋势。

文章图片1

你可以从图中清楚地看到,在2020年5月左右,亚马逊的股价一直在上涨,甚至更进一步,大部分时间只是保持上涨趋势。

可以清楚地看到,直到2022年5月,价格的高点和低点基本上都在上升。在上升趋势的情况下,趋势交易者做多并购买股票,希望价格进一步上涨。

但是,你可以说,在2022年5月,亚马逊的股价大部分下跌,蓝色直线显示出一个急剧下降的趋势,随后是低点和低点高点。

在下跌趋势的情况下,趋势交易者通常会做空并且更喜欢卖出股票。如果趋势低于某一点,趋势交易者甚至会退出市场。

一种趋势是如何出现的?

虽然我们使用算法交易,即定量交易策略来抑制情绪交易,同样也可以用来利用和货币化情绪。多亏了互联网的力量,我们都听说过病毒式传播的事情。这是同样的概念,尽管目标不同。

在金融领域也存在“害怕错过”(FOMO) ,尽管在这里,原因是人们普遍希望站在胜利的一方。因此,这种趋势的出现是人类情感和追随大众愿望的结果,因为一群人可以根据一个事件引发的情感做出交易决定。

交易趋势的类型

趋势跟踪是最常见和最受欢迎的交易策略,因为趋势在交易者中扮演着重要的角色。趋势非常重要,因为趋势可以帮助交易者识别金融市场(股票、商品、货币等)的进入和退出头寸。

因此,交易员可以跟随趋势,在上升趋势的情况下买入(进入)股票,在反向趋势的情况下,交易员可以卖出(退出)股票。

以下是一般的三种不同趋势:

  • 上升趋势

  • 下降趋势

  • 横向趋势

上升趋势

上升趋势意味着股票价格正在上涨。在上升趋势的情况下,交易者的目的是通过进入多头位置来获利,以便在稍后高价卖出。

例如,如果一支股票的价格上涨40美元,下跌20美元,然后再次上涨25美元,达到45美元,股票价格处于上升趋势,因为它在价格中显示出更高的高点(价格的上涨更经常地使价格线向上走)和更高的低点(偶尔的价格下跌并不使价格线向下走)。

下降趋势

如果出现下跌趋势,股票价格将面临价值下跌。在下跌趋势中,趋势交易者进入空头仓位。而且,当股票价格似乎跌到可能的最低点(这使得价格太低)以下时,趋势交易者更愿意卖出股票并退出市场。

例如,如果股票价格下跌70美元,然后增加40美元,然后再次下跌50美元,达到80美元,交易员将看到一个形成向下的趋势。

它表现为股价在下跌趋势中的较低高点(偶尔的价格上涨不会使价格线向上方向移动)和较低低点(价格的下跌更经常使价格线向下方向移动)。

横向趋势

横向趋势意味着市场是静态的,即股票价格既没有达到最高点,也没有达到最低点。通常,趋势交易者会忽略横向趋势,但黄牛党会在市场上建立短期头寸,以便利用横向趋势。

实施趋势跟踪战略

趋势跟踪策略旨在有利地利用市场情景。原因是高风险和同样高数额的利益附加在同一。

没有一个单一的指标能够预测一种安全的买卖证券的方式。然而,为了获得分析视角和逻辑决策,人们经常使用一些著名的方法。

以下是有助于制定趋势跟踪战略的最佳交易指标:

  • 移动平均线

  • 布林带指标

  • MACD

  • RSI

  • OBV

移动平均线

移动平均数指标是一个广泛使用的技术指标,用于作出不以一次或两次价格波动为基础的决定。

可以使用一组历史数据来观察股票在预定时间内的价格波动。同样有助于描绘趋势流的总体方向。

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

移动平均线提供了一个明确的想法,是否采取多头或空头的股票。如果股票呈现负趋势,即价格低于移动平均线,那么就做空该股票。

另一方面,如果股票价格高于简单移动平均线,人们必须对股票持有多头仓位(买入) ,因为预期股票价格将进一步上涨。

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

在我们绘制移动平均线之前,我们首先要定义一个时间段,然后选择一只股票,这样我们就可以对它进行分析。对于本文,让我们保持范围从2020年1月1日至2022年1月1日,并使用的公司细节是特斯拉(TSLA)。

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

# For data manipulationimport numpy as npfrom datetime import datetimeimport pandas as pdimport yfinance as yfimport talib as taimport matplotlib.pyplot as pltimport seaborn as snsstart = datetime(2020,1,1)end = datetime(2022,1,1)ohlcv_price_data = yf.download('TSLA', start =start, end=end, output_format='pandas')ohlcv_price_data.index= pd.to_datetime(ohlcv_price_data.index)ohlcv_price_data.head()

输出:

文章图片2

现在,我们使用下面的 python 代码绘制 TESLA 的 SMA 和 EMA:

# Calculate simple moving average using .rolling(window).mean() , with window size = 30ohlcv_price_data['SMA30'] = ohlcv_price_data['Adj Close'].rolling(30).mean() # Remove all the NULL values using# dropna() methodohlcv_price_data.dropna(inplace=True)# Calculate the EMA creating a dataframestockValues = pd.DataFrame(ohlcv_price_data['Adj Close'])ohlcv_price_data['EMA']= stockValues['Adj Close'].ewm(com=0.4).mean()# Print Dataframeohlcv_price_data.head()

输出:

文章图片3

30天的 SMA 和 EMA

现在,我们将绘制显示SMA30和EMA的图表。

# Plotdata[['Adj Close','SMA30','EMA']].plot(figsize=(10,5))plt.show()

图表如下:

文章图片4

在上图中,Adj Close 线与 EMA 线相交,因此,Adj Close 线与 EMA 线重叠。

布林带指标

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

布林带由三条线组成:

  • 上布林带

  • 中布林带

  • 下布林带

上下布林带被绘制成与平均值相差两个标准差。绘制这两个信号或波段是为了测量价格波动的波动性。

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

当市场变得更加不稳定,信号之间的距离增加或在短期内带宽扩大,反之为低波动性。波动性越大,退出交易的提示就越高。

布林带与平均值之间有两个标准差的原因是为了确保两个带之间的距离占价格波动的80% 以上,因此任何高于或低于这两个带的价格都是非常显著的。

使用相同的股票TSLA在 Python中绘制趋势跟踪策略的布林带

Python 代码如下:

std = ohlcv_price_data['Adj Close'].rolling(30).std() # <-- Get rolling standard deviation for 30 daysbollinger_middle = ohlcv_price_data['SMA30'] # Calculate middle bandbollinger_up = ohlcv_price_data['SMA30'] + std * 2 # Calculate top bandbollinger_down = ohlcv_price_data['SMA30'] - std * 2 # Calculate bottom band#plotplt.plot(ohlcv_price_data['SMA30'], label= 'Middle band')plt.plot(ohlcv_price_data['SMA30'] + std * 2, label='Upper band')plt.plot(ohlcv_price_data['SMA30'] - std * 2, label='Lower band')#labelsplt.xlabel('Date')plt.ylabel('Adjusted Closing Prices')plt.legend()plt.show()


输出:

文章图片5

上中下布林带

MACD

移动平均收敛差异指标(MACD)是对两个不同数据集的两个移动平均值的比较分析。

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

这两个数据集的移动平均值的比较是根据三个主要观察结果进行的,即收敛,差异和戏剧性上升。

在趋势范围内使用MACD

如果一个数据集的价格波动少于移动平均值,而对于其他数据的波动则高于移动平均值,那么在股票上占据较短的位置是更明智的,因为价格变化不稳定。

在Python中绘制MACD,以获取趋势跟随策略

Python代码如下:

# Calculating the MACD line, signal line and MACD histogramohlcv_price_data['macd_line'], \ohlcv_price_data['macd_signal_line'], \ohlcv_price_data['macd_hist'] = ta.MACD(ohlcv_price_data['Close'])# Drop the NaN valuesohlcv_price_data.dropna(inplace=True)# Generate buy signals# Use 1 for buy and 0 for no actionohlcv_price_data['macd_signal'] = np.where( ohlcv_price_data['macd_line'] > ohlcv_price_data['macd_signal_line'], 1, 0)# Show the last 100 points for illustration purposesdata_for_plot = ohlcv_price_data[-100:]num_of_x_values = data_for_plot['Close'].shape[0]# For plotting# Define the plot figurefig = plt.figure(figsize=(15, 10))# Sub plot for the close price and entry signalax1 = fig.add_subplot(211)# Set the title and axis labelsax1.set_title('Long Entry Signal', fontsize=14)ax1.set_xlabel('Days', fontsize=12)ax1.set_ylabel('Price', fontsize=12)# Plot close priceax1.plot(range(num_of_x_values), data_for_plot['Close'])# Plot long entry pointsentry_condition_to_plot = np.where((data_for_plot['macd_signal'] == 1) & (data_for_plot['macd_signal'].shift(1) == 0), data_for_plot['Close'], np.nan)ax1.plot(range(num_of_x_values), entry_condition_to_plot, '^', ms=10, label='Entry Signal', color='green')ax1.legend()# Sub plot for the MACD line, signal line and MACD histogramax2 = fig.add_subplot(212)ax2.set_title(('MACD (12, 26, 9)'), fontsize=14)ax2.set_xlabel('Days', fontsize=12)ax2.set_ylabel('MACD Value', fontsize=12)# Plot the MACD line and signal lineax2.plot(range(num_of_x_values), data_for_plot['macd_line'], label='MACD Line', color='blue')ax2.plot(range(num_of_x_values), data_for_plot['macd_signal_line'], label='MACD Signal Line', color='orange')# Set colour of the MACD histogrammacd_hist_colour = ['green' if ( x > 0) else 'red' for x in data_for_plot.macd_hist]# Plot MACD histogramax2.bar(range(num_of_x_values), data_for_plot['macd_hist'], color=macd_hist_colour)ax2.legend()plt.show()

输出:

文章图片6

在上图中,当蓝线穿过橙线上方时,就会产生长的进入信号。

换句话说,当 MACD 线从上面穿过信号线时,就会产生一个买入信号。

因此,买如果 MACD 线 > 信号线。

RSI

相对强弱指数,即相对强弱指标,是按以下公式计算:

RSI = 100-100/(1 + RS)

其中,RS = 指定时间框架内上升期的平均增益/指定时间框架内下降期的平均损失

RSI 是用来测量价格波动的速度和变化。这个指标提供了证券最近在股票市场的表现的一个想法。它测量股票的强度在0到100之间。

在趋势跟踪策略中使用 RSI

一只股票被认为超买超过70,超卖低于30。你可以相应地修改你的交易策略。

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

Python 代码如下:

# RSIdef get_rsi(close, lookback):    ret = close.diff()    up = []    down = []    for i in range(len(ret)):         if ret[i] < 0:             up.append(0)             down.append(ret[i])          else:                up.append(ret[i])                down.append(0)    up_series = pd.Series(up)    down_series = pd.Series(down).abs()    up_ewm = up_series.ewm(com = lookback - 1, adjust = False).mean()    down_ewm = down_series.ewm(com = lookback - 1, adjust = False).mean()    rs = up_ewm/down_ewm    rsi = 100 - (100 / (1 + rs))    rsi_df = pd.DataFrame(rsi).rename(columns = {0:'rsi'}).set_index(close.index)    rsi_df = rsi_df.dropna()    return rsi_df[3:]ohlcv_price_data['rsi_14'] = get_rsi(ohlcv_price_data['close'], 14)ohlcv_price_data= ohlcv_price_data.dropna()# Plot RSIfig,ax = plt.subplots(figsize=(10,5))plt.show()

输出:

文章图片7

RSI

在上图中,你可以看到收盘价为蓝线,RSI 为橙线。

OBV

平衡成交量(OBV)指标是一个以动量为基础的指标,衡量成交量流量,以衡量趋势的方向。交易量和价格上涨成正比。

价格上涨是由一个上升的 OBV 和一个下降的 OBV 代表一个下降的价格。如果 OBV 描述了与价格相同的上涨模式,这是一个积极的指标。而与模式的对比则描述了一个负面指标。

在趋势跟踪策略中使用 OBV

OBV 被用作价格趋势的确认工具。如果 OBV 随着价格的增长趋势而增加,那么可以推断价格趋势是可持续的。

然而,如果 OBV 显示相对于价格上涨趋势的下降,那么它可能是价格趋势逆转的信号。

基于趋势跟踪策略的 Python OBV 计算与绘制

Python 代码如下:

# Calculate the On Balance VolumeOBV = []OBV.append(0)for i in range(1, len(ohlcv_price_data.Close)): if ohlcv_price_data.Close[i] > ohlcv_price_data.Close[i-1]: #If the closing price is above the prior close price OBV.append(OBV[-1] + ohlcv_price_data.Volume[i]) #then: Current OBV = Previous OBV + Current Volume elif ohlcv_price_data.Close[i] < ohlcv_price_data.Close[i-1]: OBV.append( OBV[-1] - ohlcv_price_data.Volume[i]) else: OBV.append(OBV[-1])# Store the OBV and OBV EMA into new columnsohlcv_price_data['OBV'] = OBVohlcv_price_data['OBV_EMA'] = ohlcv_price_data['OBV'].ewm(com=20).mean()# Show the dataohlcv_price_data.head()

输出:

文章图片8

OBV

现在,让我们可视化 OBV。

# Plotohlcv_price_data.OBV.plot()plt.ylabel('On Balance Volume')plt.xlabel('close')plt.show()

输出:

文章图片9

OBV

趋势交易策略的优点

现在让我们看看趋势交易的优点。

寻找主要趋势的走向

当市场获得了良好的动量(详细了解动量交易策略在匡特拉课程) ,趋势交易者走多,这是趋势交易策略的本质。如果趋势交易者采用这种策略跟随趋势,就有很多机会抓住上升趋势。有些趋势甚至可以持续数年,因此,趋势交易者可以密切关注从这种持续上升趋势中获利。

更少的时间消耗

趋势跟踪策略不需要交易员花费太多时间,因此,可以被那些碰巧在白天没有太多时间的人使用。寻求隔夜交易的投资者可采用趋势跟踪策略。

降低交易成本

趋势交易者不需要在交易成本上花费太多,因为趋势跟踪策略是一种慢节奏的策略,不像日内交易那样交易进行得很快。因此,这是趋势跟踪策略的另一个优势。

趋势交易策略的弊端

让我们不要找出趋势交易策略的缺点是什么,你需要知道,这些是:

顺应潮流是很困难的!

尽管听起来顺应潮流走到最后似乎很容易,但事实并非如此。

每次你进入一个新的行业,你永远不知道市场将如何发展。因此,你可能倾向于在获得一点利润后立即退出交易,至少是为了保持目前所获得的利润。

你不能错过任何与趋势相关的机会

作为一个趋势跟踪者,你基本上是在等待那些可以扭转局面的交易,让你的交易成为一个积极的风险投资。这意味着你永远不想错过任何一个机会,因为任何一笔交易都可能是决定一切的关键。

当然,你应该始终尽可能地遵循你的交易策略,但在其他交易风格中,利润往往更平均地分配给不同的交易,错过一两笔交易通常不会有太大的差别。

结论

趋势跟踪策略很简单,交易员可以使用它来预测股票价格,并找出买入或卖出股票的最佳时机。人们可以简单地使用一个交易指标或指标的组合来创建战略。

从 Python 中的技术指标策略课程开始你的趋势交易之旅,学习更多关于建立你自己的趋势跟踪策略的知识。通过本课程,你将学习如何识别基础证券价格的趋势和产生交易信号的方法。此外,您将学习如何分析基于这些指标的战略表现(与历史数据) ,并实时交易这些战略。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多