1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 自己做量化交易软件(36)小白量化实战9--小白量化回测面板设计

自己做量化交易软件(36)小白量化实战9--小白量化回测面板设计

时间:2018-12-11 01:03:32

相关推荐

自己做量化交易软件(36)小白量化实战9--小白量化回测面板设计

自己做量化交易软件(36)小白量化实战9–小白量化回测面板设计

在股市中,没有很高文化知识的散户,也可以成为股市赢家。例如,有一位看自行车的大妈,每到一段时间存车的人很少时她就去买股票,看到一段时间存车的人多的时候就她去卖股票,每年都有所获。

因此散户有好的经验和技术分析的前提下,散户投资者也可以利用好的操作方法,可以在股市中经常保持获利。这个好的操作方法,例如数自行车数量,可以当作会用“股票技术指标”,技术指标是谁写的?当然是能看我博客的各位读者了。

作者出版的《看盘秘籍》不仅教炒股知识、炒股方法、炒股技术、炒股理念,还从宏观和微观介绍了股票价格波动的原理,并以此开发出荷蒲指标、独狼指标、貔貅指标系列。最后教读者如何编写大智慧和通达信软件指标公式,以及用c++来开发和加密指标的方法。

随着计算机科学的发展,投资分析由以前的简单指标分析,发展为量化投资分析技术。

现在是人工智能的量化时代,没有很高文化知识的小白散户,能用小白量化软件吗?

购买作者出版的<零基础搭建量化投资系统――以Python为工具>,并好评,除了得到随书提供的小白量化第一代源代码外,还赠送小白量化第二代源代码。

小白量化第二代能够编译为exe文件,做成仿通达信软件Python版,提供给没有安装过Python环境的电脑小白使用。

这篇文章给大家介绍如何定制小白量化二代的量化工具,这个工具可以称为小白量化软件的插件,增强小白量化平台的功能,更加简化用户量化分析回测。

假如小白量化目录的:d:\xb2d

小白量化中[增强插件]在view目录中 d:\xb2d\view

小白量化中[用户程序]在user目录中 d:\xb2d\user

其中文件都以.py文件存在,这些文件会在重新启动后,增加到导航目录树中。

上图是小白量化二代的启动画面。这些关键控制变量与书中第一代小白量化一样。

通过这些全局控制变量来控制或改变小白量化框架的外观,功能和形态。

下面我们看看[三画面.py]的插件代码。

# -*- coding: utf-8 -*-# 显示3个K线图的模板import timeimport tkinter as tkimport HP_global as g import HP_data as hpfrom HP_view import * #菜单栏对应的各个子页面 import HP_tdx as htdx#系统设定了g.tab1--g.tab9,系统只是用了g.tab1--g.tab6#控件结构 g.G_root -〉 g.tabControl -〉g.tab1#增加tab,用add()#删除tab,用forget()#当然用户可以设置更多的tab窗口。必须使用全局变量g.变量名#重复建立新tab窗会出错,所以我们先检测是否None,不是就先做删除旧tab窗口。if g.tab8!=None:g.tabControl.forget(g.tab8)g.tab8=None#用户自建新画面g.tab8 = tk.Frame(g.tabControl)g.tabControl.add(g.tab8, text='三画面') g.tabControl.select(g.tab8)#把window划分3个子容器,在不同子容器中显示不同股票K线图xxx=view3(g.tab8)##读取股票数据g.gtype=g.book_s.get()stockn=g.stock_i.get()stockn=stockn.strip()stockn=stockn.zfill(6)g.stock_i.set(stockn)g.stock=stocknds=g.date_s.get()de=g.date_e.get()g.sday=ds.strip()g.eday=de.strip()df2=htdx.get_k_data(g.stock,ktype='D',start=g.sday,\end=g.eday,index=False,autype='qfq')ds=g.mdsde2=time.strftime('%Y-%m-%d',time.localtime(time.time()))de=time.strftime('%Y-%m-%d',time.localtime(time.time()))+' 15:01:00'g.mde=destockn=g.stock_i.get()stockn=stockn.strip()stockn=stockn.zfill(6)g.stock_i.set(stockn)g.stock=stocknst=g.stockst2=stif int(time.strftime('%H%M',time.localtime(time.time())))<=930:ds=time.strftime('%Y-%m-%d',time.localtime(time.time()-24*60*60))+' 09:30:00'de=time.strftime('%Y-%m-%d',time.localtime(time.time()-24*60*60))+' 15:00:00'else:ds=time.strftime('%Y-%m-%d',time.localtime(time.time()))+' 09:30:00'de=time.strftime('%Y-%m-%d',time.localtime(time.time()))+' 15:00:00'#if g.login:df2b=htdx.get_security_bars(7,code=st)a=[x[0:10] for x in df2b.date]df2b['date2']=adf2b=df2b[df2b.date2==de2]df2b=df2b.reset_index(level=None, drop=True ,col_level=0, col_fill='') axview3x_m(xxx.v[0],df2b,g.stock+' '+g.stock_names[g.stock]+' 分时图',6) df3=htdx.get_security_bars(nCategory=5,nMarket = 0,code=g.stock,\nStart=0, nCount=240)df3.date=[x[0:10] for x in df3.date.astype(str)]#6均线2指标图,现实KDJ指标线axview2x(xxx.v[1],df3,g.stock+' '+g.stock_names[g.stock]+' 周线图',6) # 3指标图axview4x(xxx.v[2],df2,g.stock+' '+g.stock_names[g.stock]+' 日线图',f1='VOL',f2='HPYYX',f3=g.gtype)xxx.pack(fill=tk.BOTH, expand=1)

程序运行结果如下图:

我们再看看[F10窗口.py]基本面信息的插件程序如下:

# -*- coding: utf-8 -*-import timeimport threading, timeimport pandas as pdimport numpy as npimport tkinter as tk #装载tkinter模块,用于Python3from tkinter import ttk #装载tkinter.ttk模块,用于Python3import HP_tk as htk #导入htkfrom tkinter import scrolledtext #装载scrolledtext模块from PIL import Image, ImageTk, ImageDraw, ImageFontimport syssys.path.append("..")import HP_tk as htk #导入htimport HP_tdx as htdximport HP_global as gif g.tab7!=None:g.tabControl.forget(g.tab7)g.tab7=None#用户自建新画面g.tab7 = tk.Frame(g.tabControl)g.tabControl.add(g.tab7, text='F10信息') mk=htdx.get_market(g.stock)class UserF10(tk.Frame): # 继承Frame类 def __init__(self, master=None,stock=''): tk.Frame.__init__(self, master) self.stock=stockif self.stock=='':self.stock=g.stockself.root = master #定义内部变量root self.button2=Noneself.r=1self.c=8self.b=[]self.F10text=scrolledtext.ScrolledText(self,undo=True,bg='#FFF8DC')self.F10text.pack(side=tk.TOP, fill=tk.BOTH, expand=1,ipady=1,pady=1,ipadx=1,padx=1)self.init()self.pack(fill=tk.BOTH, expand=1,)def bt(self,n=0):import HP_tdx as htdxmk=htdx.get_market(self.stock)df=htdx.get_company_info_category(mk,self.stock)self.F10text.delete(2.0,tk.END)self.F10text.insert(tk.INSERT,'\n\n') t=htdx.get_F10(self.stock,df.name[n])self.F10text.insert(tk.INSERT,t)def bt2(self):stockn=g.stock_i.get()stockn=stockn.strip()stockn=stockn.zfill(6)self.stock=stockng.stock=stocknself.init()g.status.text(2,'查看'+self.stock+' F10信息!')self.bt(n=0)def init(self):import HP_tdx as htdxmk=htdx.get_market(self.stock)df=htdx.get_company_info_category(mk,self.stock)fr=tk.Frame(self.F10text)k=0for i in range(self.r):for j in range(self.c):def kk(self=self, k=k):self.bt(k)self.button = tk.Button(fr,text=df.name[k],command=kk,cursor='hand2')self.b.append(self.button)self.button.grid(row=i, column=j, padx=1, pady=1, sticky=tk.E)k+=1self.button2 = tk.Button(fr,text='切换股票',command=self.bt2,cursor='hand2') self.button2.grid(row=0, column=self.c+1, padx=1, pady=1, sticky=tk.E) fr.pack(side=tk.TOP)self.F10text.window_create(tk.INSERT,window=fr)self.F10text.insert(tk.INSERT,'\n\n')t=htdx.get_F10(self.stock,df.name[0])self.F10text.insert(tk.INSERT,t)g.UserF10View=UserF10(g.tab7)g.UserF10View.pack(fill=tk.BOTH, expand=1)g.tabControl.select(g.tab7)g.tabs=7

程序运行结果如下:

无论是输入什么股票代码,敲回车后,日线图,分时图,三画图,F10基本信息,股票代码都会自动切换。

通过阅读我的文章,你是不是有更丰富的想法呢?

一位读者找到我,他的目前只会写通达信指标,一时半会学不会Python,希望花钱订制一个量化回测插件,于是我的其中一位读者为他订制了这个[小白回测]插件。使用者只需要写相应的通达信指标公式,就能实现自动回测。

#双均线策略#买信号BB=CROSS(MA(C,5),MA(C,20))#卖信号SS=CROSS(MA(C,20),MA(C,5))

你觉得定制这样的插件能赚多少钱呢?一本书<零基础搭建量化投资系统――以Python为工具>全价才99元。

我相信,我们的读者看了我的帖子,设计类似的插件非常容易。

请持续关注我的博客,我的进步,就是你的进步!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。