小白量化《穿云箭集群量化》量化策略编写

Posted 荷蒲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白量化《穿云箭集群量化》量化策略编写相关的知识,希望对你有一定的参考价值。

小白量化《穿云箭集群量化》(3)量化策略编写(2)
在通用量化策略编写中,initialize(context) ,策略运行初始化函数,必选。
handle_data(context, data)或market_openhandle_data(context),盘中运行,必选其一。其他函数根据用户需要来编写。
上篇简单介绍了initialize,这篇介绍handle_data函数。
handle_data(context, data)
该函数每个单位时间会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次。
参数 context: Context对象, 存放有当前的账户/标的持仓信息 data: 一个字典(dict), key是股票代码, value是当时的SecurityUnitData 对象. 存放前一个单位时间(按天回测, 是前一天, 按分钟回测, 则是前一分钟) 的数据。
为了加速, data 里面的数据是按需获取的, 每次 handle_data 被调用时, data 是空的 dict, 当你使用data[security]时该 security 的数据才会被获取。
data 只在这一个时间点有效, 请不要存起来到下一个 handle_data 再用。
返回:None
我先实现一个止损程序,

# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
    # 循环每只股票
    zs=-0.05   #止损幅度
    hd=0.012  #滑点比例 
    ti=gs.MACHINETIME()  ##获取电脑时间
    qhcsj2=time.strftime('%Y%m%d_%H`%M`%S',time.localtime(time.time()))
    hpq.log.info('当前时间:'+qhcsj2)    

    # 循环每只股票
    ##优先止损
    if len(context.ccs)>0:
        for m,security in context.ccs:  #持仓
            try:
                price = float(context.portfolio.positions[security].price) #当前价格
                acc_avg_cost  = float(context.portfolio.positions[security].acc_avg_cost)  #平均成本
                amos=int(context.portfolio.positions[security].closeable_amount)  #可卖数量
                amos2=int(context.portfolio.positions[security].total_amount)  #总数量
                name=context.portfolio.positions[security].name  #股票名称
                pl=float(context.portfolio.positions[security].ykbl)  #获利率
                print(context.current_dt+' 代码: %s,获利率%2f,现价:%.2f,成本价:%.2f,可卖数量%d,持仓:%d'%(security,pl,price,acc_avg_cost,amos,amos2))
                
                if amos>0 and pl<g.zzs:
                    p5=round(price*(1-hd),2) #计算委托价格
                    x=order_target(security,0,p=p5)  #执行下单操作
                    hpq.log.info(context.current_dt+" 止损卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
                    context.portfolio.positions[security].sellprice=p5  #记录卖出价格
            except:
                continue

前面给大家介绍的基本的策略构成。
下面介绍一下《穿云箭集群量化》软件的构成。
穿云箭集群量化是在小白量化二代基础上开发的,内置小白量化一代和小白量化二代的主要模块。这些模块在前期博客都有介绍。
一、系统说明
HP是荷蒲的拼音缩写。作者是指标公式编写高手,原网名独狼荷蒲。用C++开发了很多分析家,飞狐交易师和大智慧股票公式。后来改用Python设计股票分析工具,一般一类功能都放在一个以HP_开头的py文件中,这个文件也称为模块。可以用import导入,给大家使用这些功能。
大多数模块可以单独使用,你可以用于增强其他量化回测平台。
1、主要模块
下面介绍主要模块的功能。
HP_data 小白量化1数据模块,需要使用xbdata股票数据。
HP_lib 小白量化1指标公式库,基本不用了。采用C++算法编写的函数,运行效率低。
HP_global 小白量化2全局变量定义模块
HP_set 小白量化2全局变量赋值模块,一般只在主程序运行一次。
HP_tdx 小白量化2封装的pytdx模块,简化的行情获取方式。
HP_tk 小白量化2封装的tkinter高级模块。
HP_sys 小白量化2简单回测模块。
HP_draw 小白量化2绘制K线及指标图形模块。
HP_plt 小白量化2绘制K线模块。
HP_formula 小白量化仿通达信指标函数模块。
HP_factor 小白量化多因子指标函数模块。
HP_quant 小白量化事件回测模块,兼容流行量化软件策略模式。
HP_mt5 小白量化的MetaTrader5分析交易模块。
HP_cp 小白量化的彩票分析模块。

2、主要子目录说明
ico,ico2主要放图标
img放图片
data放系统数据
temp临时数据或文件
log 日志目录
user 用户帐户信息
trade 交易文件交换目录

3、自己搭建python欢迎所需模块
(1)解包量化软件压缩文件。
(2)运行量化目录中pip_all.bat文件,安装所需模块。
或运行量化目录中pip_all2.bat文件,安装所需模块。

4、执行量化框架
执行量化目录中的“main.exe”程序。
或者这个文件发送到桌面快捷方式。
(4)配置文件在 cyj.txt文件中。

最后说明《中文Python穿云箭集群量化》是在小白量化二代平台上定制的量化平台,《穿云箭集群量化》提供的依赖的小白量化模块都是打包后的程序,用户无法看到源代码。如果用户想看小白量化一代和小白量化二代源代码,可以购买作者编写的正版书《零基础搭建量化投资系统――以Python为工具》,正版书读者加入读者群下载小白量化源代码。

本篇介绍到这里,后面将逐步展开,深度介绍。

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

以上是关于小白量化《穿云箭集群量化》量化策略编写的主要内容,如果未能解决你的问题,请参考以下文章

小白量化《穿云箭集群量化》量化策略编写

小白量化《穿云箭集群量化》量化策略编写

小白量化《穿云箭集群量化》量化策略编写

小白量化《穿云箭集群量化》量化策略编写

小白量化《穿云箭集群量化》指标公式写策略

小白量化《穿云箭集群量化》小白草根超级量化软件介绍