随缘济众,其类至繁,约言其纲,大约有十:第一,与人为善;第二,爱敬存心;第三,成人之美;第四,劝人为善;第五,救人危急;第六,兴建大利;第七,舍财作福;第八,护持正法;第九,敬重尊长;第十,爱惜物命。
在股票的交易中,我们最长使用的图其实是K线图,比如什么十字星,什么乌鸦等都是比较常用的参考指标,这些形态在我们判断市场运行趋势时,起到了非常重要的作用。所以,本篇将详细讲解TA-Lib库识别K线的各种形态。
首先,我们将介绍最简单的K线形态:两只乌鸦(Two Crows),也就是以3日K线为参考,第一日长阳,第二日高开收阴,第三日再次高开收阴,同时收盘比前一日收盘价低,出现该形态预示着股价将要下跌。
判断两只乌鸦形态,我们使用TA-Lib库的talib.CDL2CROWS()方法。下面,我们来获取通过一个股票标记两只乌鸦的K线形态,具体代码如下:
import pandas as pd
import talib
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import mpl_finance as mpf
fig = plt.figure(figsize=(12, 8))
plt.rcParams['font.sans-serif'] = ['SimHei']
ax = fig.add_subplot(111)
df = pd.read_excel("歌尔股份year.xlsx")
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].apply(lambda x: x.strftime('%Y-%m-%d'))
df['tow_crows'] = talib.CDL2CROWS(df['open'].values, df['high'].values, df['low'].values, df['close'].values)
pattern = df[(df['tow_crows'] == 100) | (df['tow_crows'] == -100)]
mpf.candlestick2_ochl(ax, df["open"], df["close"], df["high"], df["low"], width=0.6, colorup='r',
colordown='green',
alpha=1.0)
for key, val in df.items():
for index, today in pattern.iterrows():
x_posit = df.index.get_loc(index)
ax.annotate("{}\n{}".format("两只乌鸦", today["date"]), xy=(x_posit, today["high"]),
xytext=(0, pattern["close"].mean()), xycoords="data",
fontsize=18, textcoords="offset points", arrowprops=dict(arrowstyle="simple", color="r"))
ax.xaxis.set_major_locator(ticker.MaxNLocator(20))
def format_date(x, pos=None):
# 由于前面股票数据在 date 这个位置传入的都是int
# 因此 x=0,1,2,...
# date_tickers 是所有日期的字符串形式列表
if x < 0 or x > len(df['date']) - 1:
return ''
return df['date'][int(x)]
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')
plt.show()
运行之后,显示的效果如下图所示:
当然,这个图是歌尔股份的K线图,两只乌鸦形态后既然是涨的,哈哈哈,这可能是对股市看技术指标的人莫大的讽刺。这里,博主只是教会大家使用工具,如果工具都准确肯定没有亏损的人了。说个题外话,其实博主不看指标,在这里教大家看指标,总感觉把你们带坑里去了。
我们的K线图的乌鸦并不只有两只,还有三只的。三只乌鸦(Three Black Crows)的定义,也是看三日的K线,也就是连续三根阴线,而且每日收盘价都下跌且接近最低价,同时每日开盘价都在上根K线实体内,同样预示股价下跌。
TA-Lib库提供给我们判断三只乌鸦的方法为talib.CDL3BLACKCROWS(),使用方法只需要将而只乌鸦的方法替换成CDL3BLACKCROWS即可,具体如下:
df['three_crows'] = talib.CDL3BLACKCROWS(df['open'].values, df['high'].values, df['low'].values, df['close'].values)
pattern = df[(df['three_crows'] == 100) | (df['three_crows'] == -100)]
当前还有标记的文字“而只乌鸦”改为“三只乌鸦”。运行之后,显示的效果如下图所示:
需要注意的是,这里获取股票改为sz000789万年青,因为大多数股票很少有三只乌鸦的形态,博主测试了20个股票才找到一个三只乌鸦形态的股票。
TA-Lib库提供给我们的乌云压顶形态的计算方法:talib.CDLDARKCLOUDCOVER()。它是二日K线指标,定义为第一日长阳,第二日开盘价高于前一日最高价,同时收盘价处于前一日实体中部以下,预示着股票下跌。
同样的这里也只需要替换方法,改二行代码即可:
df['dark_cloud'] = talib.CDLDARKCLOUDCOVER(df['open'].values, df['high'].values, df['low'].values, df['close'].values)
pattern = df[(df['dark_cloud'] == 100) | (df['dark_cloud'] == -100)]
同样的,也需要将标记的文字“三只乌鸦”替换成“乌云压顶”。运行之后,显示的效果如下图所示:
这里测试更换为歌尔股份,前面的万年青最近几年没有该形态。
TA-Lib库提供给我们的十字星方法为talib.CDLDOJISTAR()。它是一日K线模式,定义为开盘价与收盘价基本相等,同时上下影线不会很长,预示着当前趋势反转。
同样的这里也只需要替换方法,改二行代码即可:
df['star'] = talib.CDLDOJISTAR(df['open'].values, df['high'].values, df['low'].values, df['close'].values)
pattern = df[(df['star'] == 100) | (df['star'] == -100)]