talib提供给我们的K线形态
在前面的博文中,我们介绍了talib提供给我们的6种K形态。不过,那只是博主通过讲解一部分,让大家认识如何使用talib区分K线,其实talib提供给我们的K线形态函数一共44个。那么如果通过软件进行标记呢?
其实在众多的股票交易软件中,并不会主动给我们标记K线形态数据,而且K线形态这么多,哪怕程序员记下来恐怕也无能为力。所以,我们需要使用pyqt5设计界面给我们标记K线形态,并提示使用者那种K线预示涨,哪些K线预示跌。
这里,我们首先需要使用python的反射来完成用户的切换,不然通过ifelse语句一句一句去区分调用,完全是重复的代码劳动,得不偿失。具体反射使用以及K线绘图方式如下:
import talib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import mpl_finance as mpf
from matplotlib import gridspec
class KMplCanvas(FigureCanvas):
def __init__(self, parent=None, width=5, height=4, dpi=100):
plt.rcParams['font.sans-serif'] = ['SimHei']
self.fig = Figure(figsize=(width, height), dpi=dpi)
FigureCanvas.__init__(self, self.fig)
spec = gridspec.GridSpec(4, 1, height_ratios=[3, 1, 1, 1])
self.ax1 = self.fig.add_subplot(spec[0])
self.ax2 = self.fig.add_subplot(spec[1])
self.ax3 = self.fig.add_subplot(spec[2])
self.ax4 = self.fig.add_subplot(spec[3])
self.setParent(parent)
self.k_text = ['十字星', '两只乌鸦', '三只乌鸦', '三内部上涨和下跌', '三线打击',
'三外部上涨和下跌', '南方三星', '三个白兵', '弃婴', '大敌当前',
'捉腰带线', '脱离', '收盘缺影线', '藏婴吞没', '反击线'
, '乌云压顶', '蜻蜓十字/T形十字', '吞噬模式', '十字暮星', '暮星',
'向上/下跳空并列阳线', '墓碑十字/倒T十字', '锤头', '上吊线', '母子线',
'十字孕线', '风高浪大线', '陷阱', '修正陷阱', '家鸽',
'三胞胎乌鸦', '颈内线', '倒锤头', '反冲形态', '由较长缺影线决定的反冲形态',
'停顿形态', '条形三明治', '探水竿', '跳空并列阴阳线', '插入',
'三星', '奇特三河床', '向上跳空的两只乌鸦', '上升/下降跳空三法']
FigureCanvas.updateGeometry(self)
def start_staict_plot(self, df, method="CDLDOJISTAR", numb=0):
self.ax1.clear()
self.ax2.clear()
self.ax3.clear()
self.ax4.clear()
self.fig.canvas.draw_idle()
mytalib = talib
f = getattr(mytalib, method)
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].apply(lambda x: x.strftime('%Y-%m-%d'))
mpf.candlestick2_ochl(self.ax1, df["open"], df["close"], df["high"], df["low"]