自己做量化交易软件(27)小白量化实战1--改造兵器及显示

自己做量化交易软件(27)小白量化实战之1–改造兵器及显示

证券市场的多空双方,如同“武林”,里面有很多“大师”、“高手”相互博弈。当悟性和功力相当时,想要取胜就要依赖削铁如泥的“超级兵器”,例如轩辕剑、屠龙刀等等。有了这个“超级兵器”,才能几何倍数的发挥自己的能力,才能“笑傲武林”。

很多投资者经过在股市中的磨练,总会总结出自己的一些分析技术,甚至会创造出新的分析技术,但是自己用这些技术去选股,非常不方便,比如每只股票分析3分钟,1000只股票看完,需要50个小时,等发现了好股票,时机已经错过了。如果能利用电脑选股,才能及时把握机会。
飞狐交易师、大智慧LEVEL-2、通达信、同花顺等专业投资分析平台,提供整套分析方法设计、测试、评价、优化平台,用户可以依据炒股经验或证券分析领域的各种新思想、新方法来自己动手设计各种各样的公式系统,打造驰骋股市的秘密武器。

但是这些股票分析工具,没有资金管理,持仓管理,一揽子股票回测分析,以及套利分析回测工具,以及最终自动下单.因此Python支持深度学习,爬虫等,是量化分析首选语言,小白量化就是Python平台的量化模块。
作者在2008年出版了一本书《看盘秘籍》(https://item.jd.com/10469068.html),这本书主要介绍股票软件指标设计,以及用C++开发指标公式,凡是购买这本书的读者,除了了解作者的投资分析理念,还会得到C++开发指标公式的资料及演示程序,能够得到一套用c++开发貔貅指标(https://mp.weixin.qq.com/s/c9J-d30haP5nonU3bjiwSg),这套指标支持分析家,大智慧,飞狐交易师等软件。
本篇开始的系列文章,教大家由创造自编公式开始,到实现股票、期货、外汇、虚拟币的回测和自动交易代码。读者不难根据自己投资经验和投资理念,设计出自编指标,打造出自己的“屠龙剑”。

我们以通达信软件《广发证券金融终端》为例,来介绍打造自创兵器的过程,以及用小白量化平台模块实现回测和全自动交易。
股票软件中的指标有上千种,如果能以此赚钱,很多投资者都不是赚钱了,事实上几十年来,投资者总是一赚二平七亏损。Ta-lib集成了常用股票指标函数,因此依赖于Ta-lib做量化交易工具,也很难赚钱。
小白量化能仿通达信、大智慧、飞狐交易师等股票软件指标公式,可以实现用户自编指标的分析和回测,以及实现自动交易。购买《零基础搭建量化投资系统――以Python为工具》(https://item.jd.com/61567375505.html)一书,就能得到小白量化第二代全部源代码。
看过作者的《看盘秘籍》一书的朋友都清楚,证券投资分析宏观方面包含基本面,趋势,强弱,能量,大众心态,经济政治环境等等,在微观方面包含重力重心、压缩、共振,速度、方向等等很多方面。我们不能一一介绍,只能做一个简单的示例。让读者了解量化投资的全部过程。

首先要找试验工具,我们选取通达信软件《广发证券金融终端》。利用这个软件设计出自编公式原形。在将这个自编公式移植到Python中,实现图形显示,回测,以及最终全自动交易。
在常用指标中,作者最喜欢使用的是布林带BOLL指标,原始指标代码如下:

N:=26;
P:=2;
MID :  MA(CLOSE,N);
UPPER: MID + P*STD(CLOSE,N);
LOWER: MID - P*STD(CLOSE,N);

BOLL主图指标
从上图BOLL指标来看,我们不好进行分析,起码有一点符合作者观点,压缩和扩散。压缩在为暴涨和暴跌储存能量。
我们在此指标上,再加3根线,指标就能提供完整的买卖提示。看下面代码:

N:=24;
M:=2;
X:=25;
MID :  MA(CLOSE,N);
UPPER: MID + 2*STD(CLOSE,N),LINETHICK2;
LOWER: MID - 2*STD(CLOSE,N),LINETHICK2;
M1:(UPPER-MID)/2+MID;
M2:(MID-LOWER)/2+LOWER;
MM1:=EMA((OPEN+CLOSE*2+LOW+HIGH)/5,M);
MM2:=EMA(IF(MM1>=MID,MM1*(1+X/1000),MM1*(1-X/1000)),3);
MM:MM2,COLORYELLOW,LINETHICK3;

在这里插入图片描述
上图为通达信软件指标内容。
在这里插入图片描述
上图为通达信软件指标显示。
我们明显可以看出,中线操作:mm粗黄线,上穿底轨LOWER线做买;mm粗黄线,下破顶轨UPPER线做卖。
短线操作:每上一条轨道做买,每下一条轨道做卖。
是不是有明显的买卖提示了,当然指标准不准不是我们要讨论的问题,这是一个简单的示例。你可以换为你认为准的指标。
不同周期或不同品种需要调整参数N、M、X,用通达信软件好处,我们可以边调整参数,变看图形效果。
至此,我们的兵器设计告一段落。
下面我们移植到Python平台上。当然前提是有小白量化第二代金融模块。

# -*- coding: utf-8 -*-
# 小白量化显示自编指标
'''
独狼荷蒲qq:2886002
通通小白python量化群:524949939
tkinter,pyqt,gui,Python交流2:517029284
微信公众号:独狼股票分析
'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import HP_global as g  #小白量化全局变量库
from HP_formula import *
import HP_tdx as htdx
import HP_plt as hplt   #小白量化指标绘图模块
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#白底色
g.ubg='w'
g.ufg='b'
g.utg='b'
g.uvg='#1E90FF'

global CLOSE,LOW,HIGH,OPEN,VOL

#小白换档买卖线
def XBHDMMX(N=24,M=2,X=25):
    MID =MA(CLOSE,N)
    UPPER=MID + 2*STD(CLOSE,N)
    LOWER= MID - 2*STD(CLOSE,N)
    M1=(UPPER-MID)/2+MID
    M2=(MID-LOWER)/2+LOWER
    MM1=EMA((OPEN+CLOSE*2+LOW+HIGH)/5,M);
    MM2=EMA(IF(MM1>=MID,MM1*(1+X/1000),MM1*(1-X/1000)),3)
    MM=MM2
    return MID,UPPER,LOWER,M1,M2,MM

#首先要对数据预处理
#获取数据
htdx.TdxInit(ip='183.60.224.178',port=7709)
code='600080'
df = htdx. get_security_bars(nCategory=4,nMarket = 0,code=code)

#对数据做小白量化各式转换
mydf=df.copy()
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']
VOL=mydf['volume']
C=mydf['close']
L=mydf['low']
H=mydf['high']
O=mydf['open']
V=mydf['volume']


#调用自定义指标
MID,UPPER,LOWER,M1,M2,MM=XBHDMMX()

#把指标值添加到mydf数据表中
mydf['MID']=MID
mydf['UPPER']=UPPER
mydf['LOWER']=LOWER
mydf['M1']=M1
mydf['M2']=M2
mydf['MM']=MM


#数据裁减
m=1
mydf=mydf.tail(150*m).head(150).copy()

#绘制图形
plt.figure(1,figsize=(16,12), dpi=80)

#绘制主图指标
ax1=plt.subplot(211)
hplt.ax_K(ax1,mydf,t=code,n=0)
mydf['MID'].plot.line(legend=True)
mydf['UPPER'].plot.line(legend=True,linewidth=3)
mydf['LOWER'].plot.line(legend=True,linewidth=3)
mydf['M1'].plot.line(legend=True)
mydf['M2'].plot.line(legend=True)
mydf['MM'].plot.line(legend=True,linewidth=4)

#绘制副图指标
ax2=plt.subplot(212)
mydf['MID'].plot.line(legend=True)
mydf['UPPER'].plot.line(legend=True,linewidth=3)
mydf['LOWER'].plot.line(legend=True,linewidth=3)
mydf['M1'].plot.line(legend=True)
mydf['M2'].plot.line(legend=True)
mydf['MM'].plot.line(legend=True,linewidth=4)


plt.show()


程序运行结果如下:
在这里插入图片描述

下面我们在MT5上显示一下。

# -*- coding: utf-8 -*-
# 小白量化显示自编指标
'''
独狼荷蒲qq:2886002
通通小白python量化群:524949939
tkinter,pyqt,gui,Python交流2:517029284
微信公众号:独狼股票分析
'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import HP_global as g  #小白量化全局变量库
from HP_formula import *
import MetaTrader5 as mt5
import HP_mt5 as hmt5   #小白量化MT5接口
import HP_plt as hplt   #小白量化指标绘图模块
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#白底色
g.ubg='w'
g.ufg='b'
g.utg='b'
g.uvg='#1E90FF'

code="BTCUSD"  #品种比特币


global CLOSE,LOW,HIGH,OPEN,VOL

#小白换档买卖线
def XBHDMMX(N=24,M=2,X=25):
    MID =MA(CLOSE,N)
    UPPER=MID + 2*STD(CLOSE,N)
    LOWER= MID - 2*STD(CLOSE,N)
    M1=(UPPER-MID)/2+MID
    M2=(MID-LOWER)/2+LOWER
    MM1=EMA((OPEN+CLOSE*2+LOW+HIGH)/5,M);
    MM2=EMA(IF(MM1>=MID,MM1*(1+X/1000),MM1*(1-X/1000)),3)
    MM=MM2
    return MID,UPPER,LOWER,M1,M2,MM

#首先要对数据预处理
#获取数据
#初始化小白mt5库
hmt5.init()    

#登陆MT5帐号
用户名=''
密码=''
服务器=''
hmt5.login(login=用户名, server=服务器,password=密码)

#获取行情数据
rates= mt5.copy_rates_from_pos(code, mt5.TIMEFRAME_D1, 0, 500)

#转化为小白量化数据格式
df=hmt5.tohpdata(rates)
df['time']=[x[11:19] for x in df.time.astype(str)]


#对数据做小白量化各式转换
mydf=df.copy()
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']
C=mydf['close']
L=mydf['low']
H=mydf['high']
O=mydf['open']


#调用自定义指标
MID,UPPER,LOWER,M1,M2,MM=XBHDMMX()

#把指标值添加到mydf数据表中
mydf['MID']=MID
mydf['UPPER']=UPPER
mydf['LOWER']=LOWER
mydf['M1']=M1
mydf['M2']=M2
mydf['MM']=MM


#数据裁减
m=1
mydf=mydf.tail(150*m).head(150).copy()

#绘制图形
plt.figure(1,figsize=(16,12), dpi=80)

#绘制主图指标
ax1=plt.subplot(211)
hplt.ax_K(ax1,mydf,t=code,n=0)
mydf['MID'].plot.line(legend=True)
mydf['UPPER'].plot.line(legend=True,linewidth=3)
mydf['LOWER'].plot.line(legend=True,linewidth=3)
mydf['M1'].plot.line(legend=True)
mydf['M2'].plot.line(legend=True)
mydf['MM'].plot.line(legend=True,linewidth=4)

#绘制副图指标
ax2=plt.subplot(212)
mydf['MID'].plot.line(legend=True)
mydf['UPPER'].plot.line(legend=True,linewidth=3)
mydf['LOWER'].plot.line(legend=True,linewidth=3)
mydf['M1'].plot.line(legend=True)
mydf['M2'].plot.line(legend=True)
mydf['MM'].plot.line(legend=True,linewidth=4)

plt.show()

程序运行结果如下:
在这里插入图片描述
上面显示了MT5的比特币行情。小白量化也可以用于期货、外汇等任何品种。
BOLL指标是一个非常有趣的指标,自编BOLL指标解决了抄底逃顶,价格预测,买卖信号,以及趋势判断的种种问题。等以后我的文章或视频会给大家介绍这些分析技巧。
后面文章,我们将用本篇自编指标利用小白量化系统实现股票和外汇的回测问题。

猜你喜欢

转载自blog.csdn.net/hepu8/article/details/111772677