python k线合成_在VNPY中策略中,使用分钟线合成日K线
在论坛里面看到不少关于分钟合成日线的讨论,也试着实现了。这里是针对vnpy2.0的,1.92其实基本也差不多。
这里把合成的日线HLOC信息放在pandas.DataFrame里面,因为日线分析的话,对运算时间要求不是特别高,DataFrame足矣
合成过程放在on_bar方法里面,对每个传入的分钟进行日线合并处理;
这里用了trading == False进行判断,就是只在策略初始化过程对于历史数据进行日线合并。在交易过程中,不对当天传入分钟数据进行处理。因为日线是长周期数据,放在程序启动时候调用使用就可以,不必要盘中分析,如果打算真要,注释掉这个就可以。
这里只是提供了这个DataFrame 放置日线数据,具体如何分析还是要看使用者了
定于dayFrame存储日线数据,在策略定义中插入全局变量
class *********Strategy(CtaTemplate):
author = "用Python的交易员"
import pandas as pd
dayFrame = pd.DataFrame(columns=['datetime', 'high', 'low', 'open', 'close'])
合并过程,在on_bar 方法中插入下面代码
def on_bar(self, bar: BarData):
"""
"""
if self.trading == False:
# adjustedBarTime = bar.datetime + timedelta(hours = 5)
if self.dayFrame.empty:
# 如果dayFrame 为空,先加入一条
self.dayFrame = self.dayFrame.append({'datetime': bar.datetime.date(), 'high':bar.high_price, 'low': bar.low_price, 'open': bar.open_price, 'close': bar.close_price},
ignore_index=True)
else:
self.dayFrame = self.dayFrame.sort_values(['datetime']).reset_index(drop=True)
# 如果dayFrame 不为空,先按照日期排序,
if bar.datetime.date() in self.dayFrame['datetime'].values:
# 如果是已有日期,对比high,low更新,并使用新close
self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'high'] = \
max(max(self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'high'].values),bar.high_price)
self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'low'] = \
min(min(self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'low'].values),bar.low_price)
self.dayFrame.loc[self.dayFrame['datetime'] == bar.datetime.date(), 'close'] = bar.close_price
else:
# 如果是新的日期,新建一条
self.dayFrame = self.dayFrame.append(
{'datetime': bar.datetime.date(), 'high': bar.high_price, 'low': bar.low_price,
'open': bar.open_price, 'close': bar.close_price},
ignore_index=True)
另外,这里默认就是自然日。如果想按照国内期货期货时间,就是晚上九点开盘时间就是第二天的话。有个取巧的方法,就是把bar时间加上5个小时,那么下午9点就变成明天1点,这样dataframe就会存储为下一天数据。而当天15点加上5点20点还是当天数据。
不过这样改很粗糙,只能支持国内时间和国内期货,如果服务器再其他时区,或者其他产品就另外分析。
修改方法,定义局部变量adjustedBarTime,是传入bar.datetime 时间加5;代替后面新增代码中所有用到bar.datetime地方。
周五时候想到一个问题,对于国内期货,周五晚上数据属于周一的,想想还真是头大,这里还要加上一天判断是否第二天是周六,如果是就要改到加两天,幸好一般节假日之前的交易日晚上无夜盘,不然更麻烦。
from datetime import datetime, timedelta
if self.trading == False:
adjustedBarTime = bar.datetime + timedelta(hours = 5)
if adjustedBarTime.weekday() is 5:
adjustedBarTime = adjustedBarTime + timedelta(days= 2)
会插入如下数据,按照初始化使用天数,就会有多少条,
python k线合成_在VNPY中策略中,使用分钟线合成日K线相关推荐
- vnpy合成日k线周k线
VNPY 使用k生成器BarGenerator合成日线数据 问题起因 vnpy合成k线原理 策略类Strategy ArrayManager BarGenerator Strategy.on_tick ...
- python k线合成_手把手教你写一个Python版的K线合成函数
手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...
- python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点
题目 实现一个函数,一个可以删除单链表中倒数第k个节点 难度 简单 分析 本题比较简单,实现方法多种多样,这里提供一种方法 首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个 ...
- python计算对数收益率_为VNPY的K线序列管理工具ArrayManager增加对数收益率队列
在做策略建模的时候,经常需要把K线转换为可以正态分布数据,这样可以使用那些很牛吼吼的数学模型进行挖掘. 实现很简单 c = ln(t1/t0) 如果我们考察单一投资品在总共 T 期内的表现,那应该用对 ...
- python交互式环境执行_如何在交互式环境中执行Python程序
如何在交互式环境中执行Python程序 相信接触过Python的小伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同C d ...
- python人工智能大数据_人工智能及大数据中的Python
2016年,Python取代Java成为高校中最受欢迎的语言.2018年三大语言榜单中,Python陆续登上了IEEE.PYPL排行榜单之首.薪酬调查结果显示,Python开发人员是收入最高的开发人员 ...
- python使用作为转义字符_当需要在字符串中使用特殊字符时, Python使用()作为转义字符。...
当需传统中国社会的"法制"意味着( ) 字符字符作为转义字符GPS信号接收机,根据接收卫星的信号频率,可分为 串中地面点的平面位置可用哪些方式表示 使用时使用缓和曲线需要的主点定位 ...
- python展示数据库视图_在Django的视图中使用数据库查询的方法
在视图中也有笨方法可以从数据库中获取数据. 很简单: 用现有的任何 Python 类库执行一条 SQL 查询并对结果进行一些处理. 在本例的视图中,我们使用了 MySQLdb 类库(可以从 http: ...
- 如何用python实现地图定位_基于 PyQt5 实现地图中定位相片拍摄位置
项目简介:本次项目主要学习了如何查找相片中的 Exif 信息,并通过 Exif 信息中的 GPS 数据在百度地图中进行定位标点,以确定相片的拍摄地点.本次实验的目的旨在通过包含 GPS 信息的相片进行 ...
- python如何输出结果_如何在python2.7中打印输出结果?
我正在存储一些数据,如温度,湿度和强度,这是我的Arduino输出和输入为我的python2.7,我正在绘制图表的数据.我也想将Arduino输出存储到文本文件中,但是我无法这样做: 这是我的pyth ...
最新文章
- Linux下C++开发工具介绍
- mysql unsigned zerofill_Mysql中Unsigned和Zerofill数据型的使用(细节也很重要啊)
- ffmpeg综合应用示例(一)——摄像头直播
- 学python用什么教材-金融学专业学python用什么教材或课外资料比较好?
- 【IT笔试面试题整理】二叉树中和为某一值的路径--所有可能路径
- ubuntu 14.04 LTS(64bit) Anaconda2 + Theano(1.0.2) + Keras安装
- Wireshark数据包分析之数据包信息解读
- ZooKeeper官方文档学习笔记04-ZooKeeper的Java实例
- android studio 导入c,3.3、Android Studio 添加 C 和 C++ 项目
- 六石管理学: 头目们是如何忽略产品质量的
- 简述使用configurations.all统一androidx的版本
- 文科生学大数据分析吃力吗
- 如何结交阿里P9,腾讯T4这样的大佬?
- 自学Vue开发Dapp去中心化钱包(一)
- flink Table Api 理论篇
- CocosCreator知识库amp;amp;lt;二amp;amp;gt;关于TiledMap的系统学习教程(阶段性更新)
- XHR level2的新功能
- 面向服务框架WebServiceBPM系统
- Eclipse Web项目目录详解
- 微信小程序采用手风琴组件进行图纸检索