python股票量化交易(13)---使用pyqt5构建股票交易K线形态

本文介绍了如何结合pyqt5和talib库,设计一个股票交易K线形态识别界面。利用python的反射机制通过getattr函数动态调用talib的44种K线形态函数,并在pyqt5界面上展示K线图、成交量、KDJ及MACD等指标,帮助用户识别涨跌信号。此外,还讨论了数据获取和界面交互的实现细节。
摘要由CSDN通过智能技术生成

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"]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值