Python量化交易高级讲座:详细数据处理与换算股票分时
介绍了几种获取和处理日级市场数据的方法。其实最原始的数据是交易明细数据,行情软件通过明细数据跨周期转换形成各种周期数据和统计,比如分钟K线、每小时K线、日交易量、成交量、外部行情等。 、内部市场等指标。本节主要介绍如何解读和获取详细的股票交易数据,以及如何处理和修改详细的交易数据。
显示时间的详细数据解读
这里我们从自由市场软件中截取2020年1月23日某些股票交易的详细信息。我们看到交易详情包括时间、价格、当前交易量和交易金额。四个数据字段,如下图所示:
由于是自由行情软件,这里的“交易明细”数据每隔3-6秒记录一次(不同软件可能不同),显示的是匹配次数他们此时已经匹配了。总订单数,准确的说,是“分时交易”数据,即按照时间段统计的结果。交易数量栏显示本周期的交易总数。
这与“逐笔交易”数据不同。 “逐笔交易”数据记录了每笔交易的详细信息。该功能已包含在市场软件的收费范围内。例如图中显示如下数据:
我们看一下当前的成交量一栏。当前交易量是指当前股票时间的交易量,以手为单位。其中有红、绿、白三种颜色。红色代表活跃的买单,绿色代表活跃的卖单。此部分与“买卖明细五级”相关,如下图所示:
我们知道交易所交易规则是“价格优先、时间优先”,挂单价格高于当前价格。优先成交,因此活跃买单是指指定卖出价格的成交,即买卖窗口内“卖一”价格或以上的成交。主动卖单与主动买单相反。如果交易以“买一”或更低的价格完成,如果挂单价格低于当前价格,则交易将先完成。
买卖交易的情况可以从内部市场和外部市场来看,即外部市场代表活跃买单集合,内部市场代表活跃卖单集合。
当然,白色更容易理解,即表示活跃买单和活跃卖单相同的情况。
获取显示时间的详细数据
这里我们使用tushare库中的get_tick_data()接口来检索有关个股过去交易历史的详细数据。例如,我们获取股票“002372”在“2020-01-23”的历史数据如下:元)),交易类型类型[买入、卖出、中性]。我们通过市场软件交易明细验证该数据是否稳定。如下图所示:
然后使用小册子《差异化分析常用股票交易数据接口》部分的方法,将分割后的数据行索引转换为时间序列。转换后的数据如下所示:
"""
price change volume amount type
time
2020-02-01 13:37:16 12.39 -0.01 126 156114 卖盘
2020-02-01 13:37:19 12.38 -0.01 1 1238 卖盘
2020-02-01 13:37:25 12.38 0.00 39 48322 卖盘
2020-02-01 13:37:28 12.39 0.01 25 30953 买盘
2020-02-01 13:37:37 12.38 -0.01 2 2476 中性盘
2020-02-01 13:37:40 12.36 -0.02 14 17345 卖盘
2020-02-01 13:37:43 12.40 0.04 1 1240 买盘
2020-02-01 13:37:46 12.40 0.00 1 1240 买盘
2020-02-01 13:37:49 12.40 0.00 63 77978 买盘
2020-02-01 13:37:58 12.39 -0.01 1 1239 买盘
"""
复制代码
对分时数据周期进行重新采样
Panda 提供了 resample() 方法来对时间序列进行重新采样。这里,将获取的tick数据合成为一分钟数据。关键代码如下:
df_min_ohlc = df_tick.price.resample('1min', closed='left', label='left').ohlc()
"""
open high low close
time
2020-02-01 09:25:00 12.78 12.78 12.78 12.78
2020-02-01 09:26:00 NaN NaN NaN NaN
2020-02-01 09:27:00 NaN NaN NaN NaN
2020-02-01 09:28:00 NaN NaN NaN NaN
2020-02-01 09:29:00 NaN NaN NaN NaN
2020-02-01 09:30:00 12.76 12.76 12.61 12.66
2020-02-01 09:31:00 12.66 12.66 12.64 12.64
2020-02-01 09:32:00 12.64 12.64 12.59 12.59
2020-02-01 09:33:00 12.63 12.68 12.61 12.67
2020-02-01 09:34:00 12.68 12.70 12.68 12.69
"""
复制代码
然后我们清理df_min_ohlc数据,最终数据如下:
"""
open high low close
time
2020-02-01 09:25:00 12.78 12.78 12.78 12.78
2020-02-01 09:30:00 12.76 12.76 12.61 12.66
2020-02-01 09:31:00 12.66 12.66 12.64 12.64
2020-02-01 09:32:00 12.64 12.64 12.59 12.59
2020-02-01 09:33:00 12.63 12.68 12.61 12.67
"""
复制代码
接下来就可以使用小册子《股票数据可视化:自定义Matplotlib版股票行情界面》中的代码来绘制1min K线图,如下图所示:
完整代码可在小册子《加推篇!股票分时明细数据的处理与转换》中找到。
计算资金流入和流出
接下来,我们使用显示时间的详细数据来粗略估计股票的资金流入和流出。
交易量的计算方式是价格*交易量,但是get_tick_data()接口返回的数据已经包含了交易量数据,确实比较方便。将全天所有股票的成交量相加后,得到日总成交量为9856.02万手。代码如下:
# 当天的成交额
print(df_tick.amount.sum())
复制代码
计算资金的流入和流出,可以使用Pandas的分组方法。我们来总结一下整个groupby的流程。 Groupby可以分为三个过程:split、apply、join。分区是指按照一定的规则对数据进行分组。应用程序显示对每组数据的统计操作,例如平均值、求和或特殊函数。最后是合并过程。合并是在操作后组合数据的过程。结果被重新分组以形成 DataFrame 数据或其他系列数据。
计算资金流入和流出的代码如下:
print(df_tick["amount"].groupby(df_tick["type"]).sum())
"""
type
中性盘 2110576
买盘 36741662
卖盘 59707926
Name: amount, dtype: int64
"""
复制代码
对于主要资金流入和流出的计算,主要是按照资金规模进行过滤,因为订单较大,有一个大量的。交易量需要匹配 对于大小资金来说,往往认为交易是由机构或大投资者完成的,也就是所谓的主力。
因此,我们可以设置主力交易量阈值。当日所有大于此阈值的买单成交量合计为主要资金流向。所有大于当日涨停板的卖单成交量之和为主力成交量。资金流出。代码如下:
print(df_tick[df_tick["amount"]>threshold].amount.groupby(df_tick["type"]).sum())
"""
type
中性盘 1119753
买盘 14042952
卖盘 33459052
Name: amount, dtype: int64
"""
复制代码
关于大单交易,我再补充一点。 get_sina_dd()接口可以获取大单交易数据。默认大于或等于 400 手。还可以通过vol参数指定交易量来生成交易数据,如下图:
# 获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
data=ts.get_sina_dd('600797',date = '2019-08-08')
print(data.head(10))
"""
code name time price volume preprice type
0 600797 浙大网新 15:00:00 8.01 253542 8.01 买盘
1 600797 浙大网新 14:56:18 8.01 45700 8.01 卖盘
2 600797 浙大网新 14:54:39 8.01 116400 8.01 买盘
3 600797 浙大网新 14:18:18 8.00 50000 8.00 买盘
4 600797 浙大网新 13:35:57 8.02 53100 8.01 卖盘
5 600797 浙大网新 13:33:57 8.03 42200 8.03 买盘
6 600797 浙大网新 13:25:18 8.01 64100 8.01 买盘
7 600797 浙大网新 13:25:15 8.01 41800 8.01 买盘
8 600797 浙大网新 13:22:57 8.04 135500 8.03 买盘
9 600797 浙大网新 13:22:00 8.01 44600 8.01 买盘
"""
复制代码
这里我想解释一下,如果你想要更准确的统计的话。交易数据。
其实,即使使用“逐笔交易”数据,也只能作为寻找主力位置的参考指标。这是因为“逐笔交易”是建立在真实交易中买卖双方的小额投注基础上的。统计结果。我们可以把这个作为小册子讨论的主题。欢迎大家踊跃参与讨论!
另外,根据以往的经验,当我们在交易明细中识别大单和超大单时,可以关注常规订单。通常这些订单是使用自动交易软件批量下达的。大订单订单转换为多个小订单,仅使用大资金。看榜单可以作为判断大资金是否入市的信号。
总结
在本节中,我们了解了市场软件中显示时间的详细数据的含义,并掌握如何处理和修改数据。这有助于我们更灵活地提取和开采。引文信息。
作者:元宵大师
链接:https://juejin.im/post/5e3642ff6fb9a02fff07a8a2
来源:掘金
。商业转载请联系作者获取授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。