小白公式量化--用Python指标公式模块做量化策略研究

105 篇文章 107 订阅

《小白公式量化系统》是纯Python开发的,因此我们可以借用《小白公式量化系统》的金融模块,来实现自己的Python量化框架,以及用Python实现量化研究、选股、人工智能机器学习,以及打造自己的行情软件和量化平台。我们后面文章讲介绍这些知识,并提供可操作的代码给大家。
首先要登陆《小白公式量化系统》软件,在登陆时需要记住密码,这样《小白公式量化系统》的Python模块讲全部激活。否则这些模块无法正常执行。
《小白公式量化系统》包含有股票实时行情模块,公式语法解析模块,高级tkinter模块。利用这些模块可以实现新的行情软件或量化平台。《小白公式量化系统》本身也是利用这些模块设计了。
写Python代码时,需要先导入下面模块。

import HP_tdx as htdx  #小白量化行情模块
from HP_formula import *  #小白量化公式函数模块
import HP_tdxgs as hgs  #小白通达信公式库
import HP_plt as hplt  #绘制K线图模块

我们利用HP_tdxgs小白通达信公式库进行公式源码解析,并进行指标公式运算。
通达信指标公式源码。

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;

把这个指标公式源码保存的Python的多行文本变量中,例如gs变量。

gs='''
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;
'''

创建Python的通达信指标公式源码解析器,并加载运行公式。

df3=hgs.initmydf(df3)   #小白量化行情数据规格化
tgs1=hgs.Tdxgs()     #创建公式解析器
tgs1.loaddf(df3)     #加载小白量化格式的行情数据表
mydf=tgs1.rungs(gs)  #运行指标公式源码,并返回新的行情表。返回表中包含指标公式的输出数据,

我们可以根据这些数据,利用小白量化公式函数模块,进行仿指标公式语法计算。
例如我们想根据指标交叉信息生成买卖信号,并根据信号进行买卖交易。

BUY=CROSS(mydf.J,mydf.K)
SELL=CROSS(mydf.K,mydf.J)

if BUY.iloc[-1]>0:  #买入操作
         pass

if SELL.iloc[-1]>0:  #卖出操作
         pass

下面给一个自编通达信公式执行的Python完整代码,这个代码放到《小白公式量化系统》文件目录中,就能正常执行。

import time
import matplotlib.pyplot as plt
import HP_global as g
import HP_tdx as htdx  #小白量化行情模块
from HP_formula import *  #小白量化公式函数模块
import HP_tdxgs as hgs  #小白通达信公式库
import HP_plt as hplt  #绘制K线图模块
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

#白底色
g.ubg='w'
g.ufg='b'
g.utg='b'
g.uvg='#1E90FF'

##黑底色
g.ubg='#07000d'
g.ufg='w'
g.utg='w'
g.uvg='#FFD700'

global CLOSE,LOW,HIGH,OPEN,VOL
global C,L,H,O,V

gs='''
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;
'''


m=1
cd='600030'
hq=htdx.TdxInit(ip='183.60.224.178',port=7709)  ##初始化通达信
df3=htdx.get_security_bars(nCategory=4,nMarket = m,code=cd,\
                nStart=0, nCount=500) #获取指定范围的证券K线

df3=hgs.initmydf(df3)   #小白量化行情数据规格化
tgs1=hgs.Tdxgs()     #创建公式解析器
tgs1.loaddf(df3)     #加载小白量化格式的行情数据表
mydf=tgs1.rungs(gs)  #运行指标公式源码,并返回新的行情表。返回表中包含指标公式的输出数据,
BUY=CROSS(mydf.J,mydf.K)
SELL=CROSS(mydf.K,mydf.J)


'''
#独狼荷蒲 qq:2775205
#中文 Python 学习群:811379766
#电话微信:18578755056
'''
if BUY.iloc[-1]>0:  #买入操作
         pass

if SELL.iloc[-1]>0:  #卖出操作
         pass

#绘制图形
plt.figure(1,figsize=(10,6), dpi=100)
#绘制主图指标
ax1=plt.subplot(211)
plt.title(cd+"K线图")
hplt.ax_K(ax1,mydf,cd,n=0)
#绘制副图指标
ax2=plt.subplot(212)
#MTM.plot.line(legend=True)
tgs1.brawline(ax2)
plt.show()

程序运行结果如下。

在这里插入图片描述

好了,欢迎继续关注我的博客。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
小白量化学习-自创指标设计 一、准备工作 1、首先把“HP_formula.py”文件复制到自己的工程目录中。 2、在新文件开始增加下面4条语句。 import numpy as np import pandas as pd from HP_formula import * import tushare as ts 二、对数据预处理 我们采用与tushare旧股票数据格式。 #首先要对数据预处理 df = ts.get_k_data('600080',ktype='D') 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'] 三、仿通达信或大智慧公式 通达信公式转为python公式的过程。 1.‘:=’为赋值语句,用程序替换‘:=’为python的赋值命令‘='。 2.‘:’为公式的赋值带输出画线命令,再替换‘:’为‘=’,‘:’前为输出变量,顺序写到return 返回参数中。 3.全部命令转为英文大写。 4.删除绘图格式命令。 5.删除掉每行未分号; 。 6.参数可写到函数参数表中.例如: def KDJ(N=9, M1=3, M2=3): 例如通达信 KDJ指标公式描述如下。 参数表 N:=9, M1:=3, M2:=3 RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:SMA(RSV,M1,1); D:SMA(K,M2,1); J:3*K-2*D; # Python的KDJ公式 def KDJ(N=9, M1=3, M2=3): RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100 K = SMA(RSV,M1,1) D = SMA(K,M2,1) J = 3*K-2*D return K, D, J #----------------------------------- #根据上面原理,我们把大智慧RSI指标改 # 为Python代码,如下。 def RSI(N1=6, N2=12, N3=24): """ RSI 相对强弱指标 """ LC = REF(CLOSE, 1) RSI1 = SMA(MAX(CLOSE - LC, 0), N1, 1) / SMA(ABS(CLOSE - LC), N1, 1) * 100 RSI2 = SMA(MAX(CLOSE - LC, 0), N2, 1) / SMA(ABS(CLOSE - LC), N2, 1) * 100 RSI3 = SMA(MAX(CLOSE - LC, 0), N3, 1) / SMA(ABS(CLOSE - LC), N3, 1) * 100 return RSI1, RSI2, RSI3 四、使用公式并绘图 #假定我们使用RSI指标 r1,r2,r3=RSI() mydf = mydf.join(pd.Series( r1,name='RSI1')) mydf = mydf.join(pd.Series( r2,name='RSI2')) mydf = mydf.join(pd.Series( r3,name='RSI3')) mydf['S80']=80 #增加上轨80轨迹线 mydf['X20']=20 #增加下轨20轨迹线 mydf=mydf.tail(100) #显示最后100条数据线 #下面是绘线语句 mydf.S80.plot.line() mydf.X20.plot.line() mydf.RSI1.plot.line(legend=True) mydf.RSI2.plot.line(legend=True) mydf.RSI2.plot.line(legend=True) 不懂就看我的博客 https://blog.csdn.net/hepu8/article/details/93378543
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荷蒲

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值