近期开始学习订单薄策略(order book strategy)、订单流策略(order flow strategy),理清数据是第一步。
一、成交明细数据
用各个软件进行看盘,除了分时、k线最常用外,盘口数据/成交明细也会显示出来,下图是螺纹主力shfe.rb2401 2023年10月24日,收盘前wind、multicharts推送的成交明细数据。
碰到的第一个问题是如果我想使用这些数据进行分析,如何下载保存这部分数据呢?
之前使用wind比较多,但是没有找到wind上该如何下载这部分数据,通达信软件可以下载历史分时数据,但是是一天天下载,多天的数据手动下载很耗时。
仔细学习了解之后,才发现这部分数据直接可以从tick数据进行简单处理转换就可以,了解数据生成可以大大提高效率,也便于后续使用这一部分数据。
二、Tick数据
-
tick行情又称逐笔行情,是整个市场上的逐笔数据。例如投资者一笔新的委托会形成一笔行情,交易所撮合一笔新的成交也会形成一笔行情。tick行情记录了市场的每一个事件的数据,是最精细和完整的数据。
-
快照行情又称切片(snapshot)行情,如其名,是对tick行情数据的某一个时刻的切片数据。例如现在常见的期货500ms一笔的行情,就是每500ms,在这时间段内的最高价、最低价、成交量等汇总成的一笔快照行情。
目前国内期货市场是没有真正意义上的tick逐笔数据的,这时候提到的tick数据指的是快照行情。
快照行情又可以分为level1、level2的数据,主要区分是报价深度。
-
level1行情又称1档行情或基本行情,字面意义上是指行情报单簿的档位只有一档,即买一价,卖一价。实际应用中一般用来指比较基础的一种行情,只包含最低层次的买卖,成交数据,更新频次也是最低。
-
level2行情又称多档行情或者深度行情,可以认为是level1行情的升级版,体现在报单簿档位会多,数据丰富,或者更新频次更快。这种行情一般是要单独收费的。
以rb2401为例,使用天勤下载了2023年10月24日(仅下载了日盘,没下载10.23夜盘,不影响后续分析)的tick数据(实际是快照数据,后续都以tick数据指快照行情数据)。
下载到的tick数据长这样,主要包含成交、报单两部分的数据。详细可以自行下载,可以发现软件提供的:现手、仓差、开平方向 都不是原始数据,是经过计算得到的,用last_price、volume、open_interst、bid_price1、ask_price1字段进行计算。
还可以发现,软件商成交明细和交易所返回数据相比,少了几条,仅在成交量volume发生变化时才进行推送,后续以交易量发生变化的最后两行数据(图中标黄的数据)为例,进行示例计算。
三、使用tick数据计算成交明细
1、现手
volume字段是累计成交量字段,现手数据很好计算,就是volume之差,即下一条数据volume-上一条数据volume,图上黄色标注数据计算就是1443112-1443011=101,和软件推送数据一致。
2、仓差
open_interest字段是持仓数量,仓差是open_interest之差,图上是1862177-1862180=-3,和软件推送数据一致。
3、开平
开平方向与现手、增仓、价格变动方向都有关系,具体可以看下面的几个表:
- 开平方向
- 价格变动方向及内外盘方向
- 汇总
四、python实现
import pandas as pd import numpy as np # 读取数据 rb_data = pd.read_csv("RB2401_tick_1024.csv") # 处理列名 cols = [i.replace("SHFE.rb2401.", "").strip() for i in rb_data.columns] rb_data.columns = cols def get_ticks_info(df): df_pre = df.copy().shift(1) df_pre["price_diff"] = df["last_price"] - df_pre["last_price"] df_pre["oi_diff"] = df["open_interest"] - df_pre["open_interest"] df_pre["vol_diff"] = df["volume"] - df_pre["volume"] df_pre["pc"] = np.where( df["last_price"] <= df_pre["bid_price1"], -1, np.where(df["last_price"] >= df_pre["ask_price1"], 1, np.sign(df_pre["price_diff"]))) pc_g = df_pre["pc"] > 0 condition_buy = (df["last_price"] >= df_pre["ask_price1"]) | (df["last_price"] >= df["ask_price1"]) condition_sell = (df['last_price'] <=df_pre['bid_price1']) |(df['last_price'] <= df['bid_price1']) direction_values = np.where(condition_buy, '主动买', np.where(condition_sell, '主动卖', '其他')) df_pre['direction'] = pd.Series(direction_values, index=df.index) df_pre["info"] = pd.Series( np.where( df_pre["oi_diff"] > 0, np.where(pc_g, "多开", "空开"), np.where( df_pre["oi_diff"] < 0, np.where(pc_g, "空平", "多平"), np.where(df_pre["oi_diff"] == 0, np.where(pc_g, "多换", "空换"), "")))) df_pre.loc[df_pre["pc"] == 0, "info"] = "换手" df_pre.loc[(df_pre["oi_diff"] < 0) & (df_pre["oi_diff"] + df_pre["vol_diff"] == 0), "info"] = "双平" df_pre.loc[(df_pre["oi_diff"] > 0) & (df_pre["oi_diff"] == df_pre["vol_diff"]), "info"] = "双开" df_pre.loc[df_pre["vol_diff"] == 0, "info"] = "" return df_pre.shift(-1) data = get_ticks_info(rb_data)
tick示例数据及代码关注微信公众号:量化学习J(公众号微信号:quant_study_june),回复 tick数据处理 ,发送网盘链接
- 开平方向
-
猜你喜欢
- 15天前(a级景区评定机构)全国A级旅游景区创建与提升培训班在敦煌市举办
- 15天前(七尚酒店百度百科)Lohkah七尚酒店首度开创充满新知的闽地研学旅程
- 15天前(曼谷丽思卡尔顿公寓价格)在曼谷丽思卡尔顿酒店CALEŌ 邂逅鸡尾酒的浪漫艺术
- 15天前(澳涞坞是什么)从本土品牌到全球舞台:澳涞山庄获国际顶级产业资源加持
- 15天前(中国旅游集团旗下酒店)中国旅游集团酒店控股有限公司战略投资雅阁酒店集团
- 15天前(天津四季酒店开业时间)天津四季酒店邀你开启灿烂暑假
- 15天前(美诺酒店集团旗下臻选品牌m collection)美诺酒店集团启动盛橡品牌战略焕新 开启全球扩张新篇章
- 15天前(“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%)“三天跨两城”催生租车新需求,神州租车清明跨城订单同比增长416%
- 15天前(携程租车加盟合作)携程租车加盟优势全解析:开启旅游出行市场新篇章
- 15天前(锦江 iu)锦江荟APP原生鸿蒙版正式上线打造全场景旅行服务新体验
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章