《中文Python穿云箭量化平台二次开发技术07》用Tkinter模块开发一个【股票K线行情及显示自编公式指标软件】示例

news2024/11/16 5:36:47

《中文Python穿云箭量化平台》是纯Python开发的量化平台,因此其中很多Python模块,我们可以自己设计新的量化工具,例如自己新的行情软件、新的量化平台、以及各种量化研究工具。
穿云箭自带指标公式源码运行模块,可以为其他量化平台提供量化功能扩展或量化功能增强效果。
《中文Python穿云箭量化平台》包含有行情接口,指标运算模块,K线和指标显示模块。用户很容易重新搭建一个股票行情软件。

一、首先要了解股票行情软件。
在这里插入图片描述
一般行情软件K线图由3个指标窗口构成,主图指标(显示K线图),附图指标1(一般是成交量或成交额),附图指标2(客户自选指标,如MACD,KDJ等)。
当然用户可以按热键[alt+0]定义多达9个附图指标。
在这里插入图片描述

二、了解计算机图形系统设计方法。
在Tkinter设计中,计算机屏幕分为桌面,窗口,容器,小部件。
1、窗口一般由r=tk.Tk()来创建应用程序主窗口。
2、容器一般是Tkinter容器部件,例如Frame,Text,Canvas等,这些容器可以嵌套放置。
3、小部件,例如,Button、Entry、Label…等很多小部件。

三、了解K线图和指标显示方法
我们一般采用matplotlib库和mpl_finance来设计K线图和指标线。
1、首先做一些定义。
假定我们设计3指标画面,就如下定义窗口。

import matplotlib.pyplot as plt
#绘制图形
plt.figure(1,figsize=(10,6), dpi=100)
#绘制主图指标
ax1=plt.subplot(311)
#绘制副图指标1
ax2=plt.subplot(312)
#绘制副图指标2
ax3=plt.subplot(313)

如果设计5指标画面,就如下定义窗口。

#绘制图形
plt.figure(1,figsize=(10,6), dpi=100)
#绘制主图指标
ax1=plt.subplot(511)
#绘制副图指标
ax2=plt.subplot(512)
#绘制副图指标
ax3=plt.subplot(513)
#绘制副图指标
ax4=plt.subplot(514)
#绘制副图指标
ax5=plt.subplot(515)

代码中ax1一般是主图指标,ax2–ax5等是附图指标。当然我们可以设置更多的指标线。
绘制K线图,我们可以使用HP_plt模块。

2、获取行情,并计算自编指标公式
前面我们学习了行情获取,自编指标计算等很多知识。我们很容易写出一段显示K线图,并显示自编公式的代码。

import os,sys
sys.path.append(os.path.abspath('.'))
sys.path.append(os.path.abspath('..'))
import pandas as pd  
import numpy  as np
import matplotlib.pyplot as plt
import HP_tdx as htdx#小白通达信行情库 
from HP_formula import *   #小白股票指标公式函数库
import HP_tdxgs as hgs  #小白通达信公式库
import HP_plt as hplt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

##股票数据
tdxapi=htdx.TdxInit()
code='601696'
m,c=(1,'601696')
#        #参数nCategory: 
#        #nCategory -> K 线种类 
#        #0 5 分钟K 线 
#        #1 15 分钟K 线 
#        #2 30 分钟K 线 
#        #3 1 小时K 线 
#        #4 日K 线 
#        #5 周K 线 
#        #6 月K 线 
#        #7 1 分钟 
#        #8 1 分钟K 线 
#        #9 日K 线 
#        #10 季K 线 
#        #11 年K 线     
df=hgs.get_security_bars(nCategory=4,nMarket =m,code=c,nStart=0, nCount=400)

#df2=pd.read_csv("股票数据源.csv"  , encoding= 'gbk')
gs1='''
N:=9;
M1:=3;
M2:=3;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1), CIRCLEDOT,COLORFF0000,LINETHICK2;
D:SMA(K,M2,1), LINETHICK3 , COLOR00FF00 ;
J:3*K-2*D, LINETHICK2, COLOR0000FF;
'''
gs2='''
SHORT:=12;
LONG:=26;
MID:=9;
DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
MACD2:(DIF-DEA)*2,COLORSTICK;
'''
gs3='''
N:=20;
P:=2;
MID:MA(CLOSE, N)
UPPER:MID + STD(CLOSE, N) * P
LOWER:MID - STD(CLOSE, N) * P
'''

gs4='''
B:CROSS(C,MA(C,5));
S:CROSS(MA(C,5),C);
'''

#开发者信息
#独狼荷蒲qq:2775205
#中文Python学习群:983815766
#电话微信:18578755056
#绘制图形
fig=plt.figure(1,figsize=(10,6), dpi=100)
#绘制主图指标
ax1=plt.subplot(511)
#绘制副图指标
ax2=plt.subplot(512)
#绘制副图指标
ax3=plt.subplot(513)
#绘制副图指标
ax4=plt.subplot(514)
#绘制副图指标
ax5=plt.subplot(515)

mydf=hgs.initmydf(df)
hplt.ax_K(ax1,mydf,c,n=0)  #显示主图K线图

tgs1=hgs.Tdxgs()
tgs1.loaddf(df)
mydf1=tgs1.rungs(gs1)   #计算指标1
tgs1.brawline(ax2)    #在附图1区,显示指标1

tgs2=hgs.Tdxgs()
tgs2.loaddf(df)
mydf2=tgs2.rungs(gs2) #计算指标2
tgs2.brawline(ax3)  #在附图2区,显示指标2

tgs3=hgs.Tdxgs()
tgs3.loaddf(df)
mydf3=tgs3.rungs(gs3)  #计算指标3
tgs3.brawline(ax4)  #在附图3区,显示指标3

tgs4=hgs.Tdxgs()
tgs4.loaddf(df)
mydf4=tgs4.rungs(gs4)  #计算指标4
tgs4.brawline(ax5)  #在附图4区,显示指标4
plt.show()

程序运行结果。
在这里插入图片描述

四、将生成指标K线图显示到Tkinter窗口中。
我们将上面程序中最后一行注释,再增加几行代码,就能实现再Tkinter窗口中显示K线图指标。

import os,sys
sys.path.append(os.path.abspath('.'))
sys.path.append(os.path.abspath('..'))
import pandas as pd  
import numpy  as np
import matplotlib.pyplot as plt
import HP_tdx as htdx#小白通达信行情库 
from HP_formula import *   #小白股票指标公式函数库
import HP_tdxgs as hgs  #小白通达信公式库
import HP_plt as hplt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

##股票数据
tdxapi=htdx.TdxInit()
code='601696'
m,c=(1,'601696')
#        #参数nCategory: 
#        #nCategory -> K 线种类 
#        #0 5 分钟K 线 
#        #1 15 分钟K 线 
#        #2 30 分钟K 线 
#        #3 1 小时K 线 
#        #4 日K 线 
#        #5 周K 线 
#        #6 月K 线 
#        #7 1 分钟 
#        #8 1 分钟K 线 
#        #9 日K 线 
#        #10 季K 线 
#        #11 年K 线     
df=hgs.get_security_bars(nCategory=4,nMarket =m,code=c,nStart=0, nCount=400)

#df2=pd.read_csv("股票数据源.csv"  , encoding= 'gbk')
gs1='''
N:=9;
M1:=3;
M2:=3;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1), CIRCLEDOT,COLORFF0000,LINETHICK2;
D:SMA(K,M2,1), LINETHICK3 , COLOR00FF00 ;
J:3*K-2*D, LINETHICK2, COLOR0000FF;
'''
gs2='''
SHORT:=12;
LONG:=26;
MID:=9;
DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
MACD2:(DIF-DEA)*2,COLORSTICK;
'''
gs3='''
N:=20;
P:=2;
MID:MA(CLOSE, N)
UPPER:MID + STD(CLOSE, N) * P
LOWER:MID - STD(CLOSE, N) * P
'''

gs4='''
B:CROSS(C,MA(C,5));
S:CROSS(MA(C,5),C);
'''

#开发者信息
#独狼荷蒲qq:2775205
#中文Python学习群:983815766
#电话微信:18578755056
#绘制图形
fig=plt.figure(1,figsize=(10,6), dpi=100)
#绘制主图指标
ax1=plt.subplot(511)
#绘制副图指标
ax2=plt.subplot(512)
#绘制副图指标
ax3=plt.subplot(513)
#绘制副图指标
ax4=plt.subplot(514)
#绘制副图指标
ax5=plt.subplot(515)

mydf=hgs.initmydf(df)
hplt.ax_K(ax1,mydf,c,n=0)  #显示主图K线图

tgs1=hgs.Tdxgs()
tgs1.loaddf(df)
mydf1=tgs1.rungs(gs1)   #计算指标1
tgs1.brawline(ax2)    #在附图1区,显示指标1

tgs2=hgs.Tdxgs()
tgs2.loaddf(df)
mydf2=tgs2.rungs(gs2) #计算指标2
tgs2.brawline(ax3)  #在附图2区,显示指标2

tgs3=hgs.Tdxgs()
tgs3.loaddf(df)
mydf3=tgs3.rungs(gs3)  #计算指标3
tgs3.brawline(ax4)  #在附图3区,显示指标3

tgs4=hgs.Tdxgs()
tgs4.loaddf(df)
mydf4=tgs4.rungs(gs4)  #计算指标4
tgs4.brawline(ax5)  #在附图4区,显示指标4

#plt.show()  #注释这行

############免费培训课################
#会议主题:零基础学量化课(周四固定课)
#重复周期:2024/08/22-2024/08/29 19:30-20:30, 每周 (周四)
#腾讯会议:423-1511-5645
#####################################
#会议主题:Python量化培训(周日固定课)
#重复周期:2024/08/25-2024/09/22 19:30-20:30, 每周 (周日)
#腾讯会议:366-1282-4806
############下面是增加内容
import tkinter as tk
root=tk.Tk()
root.title('在Tkinter窗口中显示K线图')
canvas =hplt.setplt(root,fig)  # 在tkinter窗口中显示K线图和指标。
root.mainloop()

在这里插入图片描述
本文给了一个在TKinter窗口中显示K线图和指标的例子。因此我们可以参照这些技术,来用Python设计股票行情软件。
我们还可以获取股票的分笔和盘口数据,也很容易实现分时图窗口。

好了,欢迎继续关注我的博客。后面我们介绍更多的二次开发技术。

超越自己是我的每一步!我的进步就是你的进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cesium源码解读之Viewer(全网最全)

今天我们来扒一扒cesium 的源码, 探寻一下底层的奥秘,我们平时工作中用的最多的应该就是var viewer new Cesium.Viewer(cesiumContainer);这句了但我们却很少去了解他底层是否如何实现的。 首先 我们可以通过Source/Cesium.js找到api 的入口 然后一步…

Vue3:通信组件

1.Props 父传子&#xff1a;直接传递需要获取的属性 子传父&#xff1a;需要借助函数&#xff0c;也就是方法&#xff0c;通过传递函数&#xff0c;子接着入参给函数&#xff0c;父调用函数即可获取到参数。 父&#xff1a; <template><div class"father&quo…

卡西莫多的诗文集2022-2024.8月定稿

通过网盘分享的文件&#xff1a;卡西莫多的诗文集2022-2024.8月30-A5.pdf 链接: https://pan.baidu.com/s/1_BrcKvUthFLlty8dWNZxjQ?pwdutwd 提取码: utwd 自从解锁了一项新技能后&#xff0c;从藏内容诗开始&#xff0c;自己积攒到现在不知不觉也积累了一些诗&#xff0c;看…

python模块06 mock-1基础用法

0 为什么要使用mock&#xff1f; 测试接口时&#xff0c;需要有对应的接口可以测试才行&#xff0c;否则要等后端开发完&#xff0c;才能进行&#xff0c; mock模块可以模拟后端接口返回数据&#xff0c;提前根据接口文档准备好后端的静态数据 1mock基础用法 下载&#xff…

M1 card crack

判断卡片类型 这张卡就是本次实现的对象 &#xff0c;一张废弃的校园卡&#xff0c;以下所有操作都以此卡展开 我们使用flipper的NFC功能扫描该卡片。我们直接read 我们得出最终结果该卡是M1 1K卡&#xff0c;也就是S50卡 。 Mifare 1卡是属于非接触式逻辑加密卡。MIFARE M…

锂电池基本知识与设计

目录 摘要 充电过程 18650规格书分享 摘要 应用&#xff1a;笔记本电脑、智能手机等设备。 优点&#xff1a;较高能量密度和较长使用寿命&#xff0c;放电率低&#xff0c;可进一步延长充电间隔时间。 缺点&#xff1a;过度充电或者放电会产生不可逆的损伤&#xff0c;性…

让PDF格式为LLM应用做好准备:探索Marker开源工具

在如今的大数据时代&#xff0c;高质量的数据可谓是LLM&#xff08;大语言模型&#xff09;应用成功与否的关键因素。然而&#xff0c;大多数文本数据通常以PDF格式存在。这不仅适用于企业文档&#xff0c;也包括个人文件。然而&#xff0c;对于LLM而言&#xff0c;处理PDF文件…

全局页面数据渲染--SAAS本地化及未来之窗行业应用跨平台架构

一、代码 /* 未来之窗通用数据渲染// 定义了一个名为"未来之窗_人工智能_前端口_数据渲染到界面"的函数 function 未来之窗_人工智能_前端口_数据渲染到界面(obj, 前置参数) {// 开启一个控制台分组&#xff0c;用于组织相关的输出信息console.group("未来之窗…

多参数遥测终端科技守护水电站生态流量下泄

随着我国水电事业的蓬勃发展&#xff0c;水电站在推动地方经济快速增长、缓解能源压力方面发挥了不可替代的作用。然而带来的生态环境问题日益凸显&#xff0c;因水电站下泄流量不足造成部分河段减水、脱水甚至干涸&#xff0c;影响了河流的正常生态功能和居民的生产、生活。因…

【 html+css 绚丽Loading 】 000027 旋风破云扇

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

《机器学习》数据分析之关键词提取、TF-IDF、项目实现 <下>

目录 一、内容回顾 1、核心算法 2、算法公式 3、拆分文本 二、再次操作 1、取出每一卷的地址和内容 得到下列结果&#xff1a;&#xff08;此为DF类型&#xff09; 2、对每一篇文章进行分词 3、计算TF-IDF值 得到以下数据&#xff1a; 三、总结 1、关键词提取 1&a…

【Spring MVC】MVC设计模式的Java Web框架

Spring MVC框架 MVC框架简介&#xff1a;MVC三层架构MVC流行框架MVC框架好处&#xff1a; Spring MVC框架组件分析 处理器开发1. 定义处理器2. 处理请求3. 处理请求参数4. 返回视图或数据5. 异常处理 MVC框架简介&#xff1a; 谈及Spring MVC框架之前&#xff0c;我们先了解一…

C语言基础(二十九)

1、快速排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 函数声明 void quickSort(int *arr, int low, int high); void swap(int *xp, int *yp); void printArray(int *arr, int s…

CSRF漏洞的预防

目录 CSRF漏洞预防措施 深入研究 CSRF Token的工作原理是什么&#xff1f; 为什么仅依靠Referer头字段来防范CSRF攻击不是完全可靠&#xff1f; SameSite cookie属性如何防止CSRF攻击&#xff1f; SameSite Cookie属性的作用 如何通过SameSite属性防止CSRF攻击 导图 CS…

JavaWeb JavaScript ⑧ DOM编程

在光芒万丈之前&#xff0c;我们都要欣然接受眼下的难堪和不易&#xff0c;接受一个人的孤独和无助&#xff0c;认真做好眼前的每一件事&#xff0c;你想要的都会有 —— 24.8.29 一、什么是DOM编程 简单来说&#xff1a;DOM(Document obiect Model)编程就是使用document对象的…

Python 如何进行密码学操作(cryptography模块)

Python 的密码学操作可以通过 cryptography 模块来实现&#xff0c;这个模块是一个功能强大的库&#xff0c;它提供了现代密码学的基本工具&#xff0c;包括加密、解密、密钥生成、签名等操作。cryptography 模块易于使用&#xff0c;并且安全性高&#xff0c;适合在各种场景下…

【软件测试】8. 测试分类

目录 1. 为什么要对软件测试进行分类&#xff1f; 2.按照测试目标分类 2.1 界面测试 2.2 功能测试 2.3 性能测试 2.4 可靠性测试 2.5 安全性测试 2.6 易用性测试 3.按照执行方式分类 3.1 静态测试 3.2 动态测试 4. 按照测试方法 4.1 白盒测试 4.2 黑盒测试 4.3灰…

【WiFi协议的发展学习1】

WiFi协议的发展 WiFi协议的发展2. WiFi协议发展3. WiFi协议发展小结3.1. 发展归纳3.2. 未来展望4. WiFi产品的特点/功能WiFi协议的发展 自20世纪90年代以来, WiFi技术得到了迅猛发展,已成为人们日常生活、工作和学习中不可或缺的组成部分。WiFi协议的发展不仅推动了无线通信…

TL-Tomcat 整体架构和处理请求流程解析

我们写一个servlet后&#xff0c;在web.xml里配上我们的路径。然后把项目打包成war包放入webapps目录下 然后这样就返回了 这个war包里面的东西和这个文件夹其实是一样的&#xff1a; 那么最终我们把war包删掉 还有原来文件夹下其他的东西 只剩下这么个.class文件 其实这…

TikTok流量推送逻辑与IP的关系

在探讨TikTok流量推送逻辑时&#xff0c;很多用户都好奇这一机制是否与用户的IP地址紧密相关。TikTok作为全球知名的短视频社交平台&#xff0c;其流量推送算法无疑是平台成功的关键因素之一。那么&#xff0c;TikTok的流量推送逻辑究竟是如何运作的&#xff1f;它与IP地址之间…