tick数据、盘口数据、成交明细数据详解

近期开始学习订单薄策略(order book strategy)、订单流策略(order flow strategy),理清数据是第一步。

一、成交明细数据

用各个软件进行看盘,除了分时、k线最常用外,盘口数据/成交明细也会显示出来,下图是螺纹主力shfe.rb2401 2023年10月24日,收盘前wind、multicharts推送的成交明细数据。
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数据处理 ,发送网盘链接

Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器 Tick数据收集器
### 回答1: Python语言具有丰富的数据分析和处理能力,可以用于下载历史分笔成交数据来进行数据分析和建模。通信达是国内一家提供股票行情数据的公司,在Python语言中可以使用tushare和pytdx等三方工具来下载通信达的历史分笔成交数据。 在使用tushare下载历史分笔成交数据时,需要先注册tushare账号,获取token,并引入tushare库。然后可以使用get_hist_data函数来获取历史分笔成交数据,其中需要传入参数code、start和end来指定股票代码、开始时间和结束时间。获取数据后可以进行筛选、转换、计算等处理。 在使用pytdx下载历史分笔成交数据时,需要先引入pytdx库,并设置相关信息如服务器IP和端口、股票市场等。然后可以使用PytdxHq_API类来获取历史分笔成交数据,其中需要传入参数code、start和end来指定股票代码、开始时间和结束时间。获取数据后可以进行转换、计算等处理。 无论使用tushare还是pytdx下载历史分笔成交数据,都需要先了解相关的API接口和参数设置,同时需要注意对数据的筛选和处理,以便获取相应的数据进行后续的分析建模。 ### 回答2: Python是一种流行的编程语言,由于它在数据分析、数据库管理、人工智能等领域具有广泛的应用,因此被认为是一种重要的编程语言。如果你想要通过Python实现从通信达下载历史分笔成交数据,可以借助Python的强大库,比如pandas和tushare。 首先,你需要在tushare上注册账户,获取token用于数据请求。然后,你可以使用tushare库中的get_tick_data()方法,输入股票代码、日期、指定数据来源,并设置token值。 下面是一个简单的代码示例: ``` import tushare as ts # 使用tushare获取历史成交数据 def get_tick_data(code, date): # 获取数据 df = ts.get_tick_data(code=code, date=date, src='tt', token='Your Token') # 对数据进行处理 df = df.drop(['type'],axis=1) # 删除无用列 df.insert(0,'code',code) # 添加股票代码列 df.insert(4,'date',date) # 添加日期列 return df ``` 以上代码将股票代码和日期作为参数,使用tushare库中的get_tick_data()函数获取给定日期股票的历史分笔成交数据。返回的DataFrame可以进一步处理并保存到本地文件中,以备后续分析使用。 需要注意的是,由于下载历史分笔成交数据需要较长时间,并且tushare的数据限制,建议进行分批下载并处理,以免请求过程中出现异常。 ### 回答3: 要从通达信下载历史分笔成交数据,可以使用Python编程语言。Python是一种强大的编程语言,广泛用于数据分析、科学计算、机器学习、自然语言处理等领域。 首先需要安装Python的相关库,包括tushare和pandas。Tushare是一个免费的金融数据接口库,提供了许多股票等金融数据的获取方式,pandas则是一个强大的数据分析工具,提供了丰富的数据处理和操作方法。 接着,通过tushare的接口,可以获取到历史分笔成交数据,参数包括股票代码和日期范围。数据格式是一个DataFrame,可以通过pandas将其转换成csv格式的文件。 在Python中,可以使用以下代码获取成交数据: ```python import tushare as ts import pandas as pd # 设置tushare的token ts.set_token('your_token_here') # 获取历史分笔成交数据,参数包括股票代码和日期范围 df = ts.get_tick_data('600519', date='20220104') # 将DataFrame保存为csv格式的文件 df.to_csv('tick_data.csv', index=False) ``` 这个例子中,我们获取了贵州茅台(股票代码:600519)在2022年1月4日的成交数据,并将其保存为一个csv文件。可以根据需要修改参数以及文件名和路径。 总的来说,Python是一个非常灵活和强大的编程语言,可以用来解决各种问题,包括数据获取、处理、分析和可视化等方面。与其他语言相比,Python的代码量相对较少,易于阅读和理解,因此是数据科学领域的热门工具之一。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值