当前位置: 首页 > news >正文

小白量化《穿云箭集群量化》(3)量化策略编写(2)

小白量化《穿云箭集群量化》(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为工具》,正版书读者加入读者群下载小白量化源代码。

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

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

相关文章:

  • 【HCSD零代码云上开发】零代码入门微信小程序和物联网
  • 博士生做科研想 idea 发现早就有人做过了,该怎么调整心态?
  • 嵌入式 - 瑞萨宣讲
  • 【云原生 | Kubernetes 系列】---Prometheus监控mysql
  • 配置MyBatis(不用Maven)
  • 1113: 递归调用的次数统计(函数专题)
  • 安全的 PHP 注销脚本
  • 小学生python编程----学爬虫
  • 如何用一个简单的内容升级心理学技巧将转化率提高了845%
  • 【LeetCode】Day126-正则表达式匹配
  • 09-排序2 Insert or Merge(浙大数据结构)
  • DPDK18.08上对VIRTIO IN ORDER 功能所做的优化
  • java毕业设计软件S2SH人力资源管理系统|人事薪资招聘oa人力请假考勤工资[包运行成功]
  • 关于C/C++中const关键字作用的一些想法
  • STC15单片机-通过PWM调整灯亮度
  • 【comparator, comparable】小总结
  • 10个最佳ES6特性 ES7与ES8的特性
  • Electron入门介绍
  • Idea+maven+scala构建包并在spark on yarn 运行
  • input的行数自动增减
  • input实现文字超出省略号功能
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • java取消线程实例
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Netty源码解析1-Buffer
  • Redis学习笔记 - pipline(流水线、管道)
  • V4L2视频输入框架概述
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 从tcpdump抓包看TCP/IP协议
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 浮现式设计
  • 高程读书笔记 第六章 面向对象程序设计
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 微信小程序实战练习(仿五洲到家微信版)
  • 温故知新之javascript面向对象
  • 项目实战-Api的解决方案
  • ​Java并发新构件之Exchanger
  • (12)Hive调优——count distinct去重优化
  • (20050108)又读《平凡的世界》
  • (3)nginx 配置(nginx.conf)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (离散数学)逻辑连接词
  • (一)基于IDEA的JAVA基础1
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 药厂业务系统 CPU爆高分析
  • .Net的DataSet直接与SQL2005交互
  • .NET开发人员必知的八个网站
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net中调用windows performance记录性能信息
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [Android Studio] 开发Java 程序