新闻中心

期货tick数据R语言简易分析金融高频数据(期货rsi1 rsi2 rsi3)

2023-10-30
浏览次数:
返回列表

一、写在开头

由于平时需要处理一些期货日内高频数据,平时处理数据杂乱无章,很多过几天后就不知道自己都写了啥了,所以有了在平台整理自己整理的一些数据和发现到的有趣的东西,如果知友们有更好的想法互相交流,那是再好不过了~

这篇主要想分享下日内tick成交数据的一些简单计算,比如说计算tick级别成交量、成交均价、level1行情变化以及日内高频数据成交相关的可以挖掘的东西~

二、tick切片数据介绍

eg2301合约某日成交tick行情数据

上图是eg2301合约某日成交tick级别数据,数据来源是天勤量化平台。各列含义是:前两列是时间、之后是最新成交价、当日当前最高价、当日当前最低价、DCE.eg2301.average 、当日当前总成交量、当日当前总成交额、DCE.eg2301.open_interest 、当前市场最高买价及挂单数量和当前舒畅最低卖价及挂单数量(这两个没翻译的我也不知道是啥,我好像没有用到,了解的朋友告我下呗~)。

tick切片数据是指:在某个时刻,交易所将市场成交的相关数据切片下来并且推给市场,它是静态的,是某个时刻的静态数据,上图中切的频率是一秒两次,这在第一列的时间中也可以看出来。所以相邻两个tick数据的变化就可以反推出在这0.5秒时间段内,市场的最新价、成交量、成交金额以及市场买卖一档行情变化。理论上交易所向市场推送tick数据时间应该是市场交易时间,但是有时候也有一些意外,比如说早上6点多或傍晚6点多,不知道是交易所工作人员早到加班时间整的,还是机器自个儿整的,比如下图~这种情况推送的数据存在nan值,有时候对分析有影响,应该去除。

无名图(观察24542列)

三、计算反推500ms成交情况

首先,相邻两个切片数据的累计成交量与累计成交金额分别作差,可以得到两个切片时刻之间500ms的成交数量和成交金额,处理之后的数据结构是这样的,其中第一行表示开盘时间9点开盘后的第二个500ms时间段的成交情况。

数据处理后结构

在9:00:01:000 这个时刻,市场行情是这样的:最新成交价是4383,该500ms时间段成交了113手,左右成交的均价是4383.594,该时刻市场买家出价最高的是4383,想买14手,卖家想要卖的最低价格是4384,想要卖28手(知识那个时刻,买家、卖家有可能是多个,也有可能一个)。(后面的n列是标记作用,自己添加的)

在9:00:01:500 这个时刻,交易所又推送了一次切片数据,此时最新成交价是4386,再这500ms时间内,总计成交了135手,所有成交的平均价是4384.778,这个时候市场买价最高买价是4384,希望买7手,市场卖家最低卖价是4386,希望卖出23手。

在这短短的0.5秒时间段内,市场发生了显著的变化。首先是市场买家愿意买的最高价格变高了,这可能是由于原来的那些买家判断该合约的价格应该更高,所以他们提高买入的意愿价格并且同愿意在其所要求的的价格内卖出合约的卖家成交,也可能是由于市场上有新买家愿意以更高的价格买入,他们主动买入卖家们愿意卖出的比较便宜的合约。

此外,我们发现此时的最新成交价格是4386,但是在该阶段的成交均价确是4384.778,说明在这500ms时间段成交的价格很有可能大多数是在4384这个价位,而这个价位是9:00:01:000这个时刻卖家愿意卖出的最低价,所以市场可能是买家接受卖家的价格,主动买入卖家愿意卖出的合约,买家比较主动。如果这种主动持续较长时间,或者说咱们可以找到指标描述量化买家有多主动,那对于短期行情的判断,咱们就更明确了。如果买家超级主动,而且一直超级主动,而且卖家不主动而且很被动,那就很有可能是价格上涨了。。。

当然,这种有多主动,想要主动多长时间市场并不会和你说,得自己通过现有数据或者其他信息去判断,这是很难的。

四、一些统计出来的量

1、哪个500ms时间段成交数量最大?

> which(data_diff[, 4] == max(data_diff[, 4])) [1] 24542 > data_diff[24542, ] datetime last_price average volume amount bid_price1 bid_volume1 ask_price1 ask_volume1 n 24542 20:59:00 4349 4349 3507 152519430 4347 2 4349 171 24542

根据筛选返回来的成交量最大的行数是24542,查询24542行数据如上图所示,这个数据准确么?(之后再写。。。)

搜索