量化交易系统开发-实时行情自动化交易-3.4.1.7.A股大资金动力指标

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。

本篇是结合代码的说说股票TICK数据分析资金动力指标,由于股票没有用户数据,所以想把影响价格波动的动力资金识别出来,这部分需要TICK数据聚合而成,主动力大资金指标通过TICK数据加工到日级,所以还是有一定门槛。

在股票市场中,Tick 数据记录了每一笔成交的详细信息,包括成交时间、成交价格、成交数量等。Tick 数据提供了市场最细粒度的交易信息,是分析市场微观结构、追踪大资金动向的关键数据源之一。主动力大资金指标旨在通过对 Tick 数据的深入分析,识别出大资金对市场的推动作用,为投资者和交易策略提供参考。以下是关于如何基于股票 Tick 数据生成主动力大资金指标的详细扩展。

1. Tick 数据的收集与预处理

生成主动力大资金指标的第一步是收集和预处理 Tick 数据。Tick 数据通常包含每一笔交易的时间戳、成交价格、成交量、买卖双方的信息等。

  • 数据收集:通过交易所提供的 API 或第三方数据供应商获取 Tick 数据。对于高频交易策略,建议使用低延迟的 WebSocket 连接来实时采集 Tick 数据,确保数据的时效性。

  • 数据清洗:由于 Tick 数据量大且可能存在噪声和异常值,需要对原始数据进行清洗。清洗步骤包括:去除价格或成交量异常的记录,过滤掉极小交易量的“噪声”交易,以确保数据质量。

  • 数据整合:将不同来源的 Tick 数据进行整合和标准化,以确保数据的一致性和完整性,尤其是在多交易所采集数据的场景中,需要对不同交易所的时间戳进行同步和校正。

2. 大资金识别与分类

生成主动力大资金指标的核心在于识别市场中大资金的流动,即区分大额交易和一般性交易。通常,大资金的交易对市场具有更大的影响,因此需要采用一定的标准来识别大资金的交易行为。

  • 大资金交易的阈值设定:根据市场整体的流动性和个股的特性,设定一个阈值,用于区分大资金交易和普通交易。例如,可以根据过去一段时间的成交量分布,设定成交量达到某个百分位数的交易为“大资金”交易。通常,将单笔成交量超过某个绝对值(如某个股票平均每笔交易量的 10 倍)视为大资金。

  • 大资金交易的分类:将大资金交易按类型进行分类,例如主动买入、主动卖出等。主动买入是指以卖一价成交的交易,主动卖出则是以买一价成交的交易。通过区分买卖方向,可以进一步分析大资金的市场影响力。

  • 价格冲击分析:通过观察大资金交易对价格的冲击,评估这些交易对市场价格的短期影响。例如,可以计算大资金交易前后若干秒内的价格变化,以量化其冲击效果。

3. 主动力大资金指标的计算

主动力大资金指标旨在量化大资金对市场的影响,核心是评估大资金的净流入和对价格走势的推动力。

  • 净大资金流入计算:净大资金流入是指一定时间窗口内,主动买入的大资金成交量减去主动卖出的大资金成交量。例如,可以在一分钟内累加所有大资金的主动买入和主动卖出的交易量,得到净流入量。净流入为正,表示市场中买方力量较强,净流出为负则表示卖方力量占优。

  • 加权大资金推动力:为了更精确地评估大资金的市场推动力,可以对每笔大资金交易按其对市场价格的影响程度进行加权。加权因子可以考虑交易量、交易时段的流动性等因素。例如,在市场流动性较差的时段,大资金交易对价格的影响可能更大,因此可以给予更高的权重。

  • 累积主动力指标:将净大资金流入在时间上进行累积,生成主动力曲线,以反映大资金在较长时间内的市场推动力。例如,可以计算每天的主动力大资金净流入累积值,生成一个时间序列来评估趋势。

4. 主动力大资金指标的应用

主动力大资金指标能够为投资者提供有关市场大资金动向的重要信息,可用于多个方面的交易决策和市场分析。

  • 趋势识别:主动力大资金指标可以帮助识别市场的趋势变化。例如,当累积的主动力大资金指标持续为正且呈上升趋势时,表明市场中有持续的买入压力,市场可能进入上升趋势;相反,如果指标持续为负,表明市场中卖压较大,可能出现下行趋势。

  • 反转信号:主动力大资金指标的快速变化可以作为市场反转的先行信号。例如,当市场价格在高位横盘时,如果主动力大资金指标由正转负,表明有大量大资金开始卖出,这可能预示着市场将出现回调。

  • 辅助短线策略:对于短线交易者,主动力大资金指标可以作为开平仓信号的辅助参考。当大资金的买入推动力显著增加时,可能是一个短期买入机会;而当大资金的卖出压力增大时,则可以考虑卖出或平仓。

5. 计算中的技术挑战与解决方案

在基于 Tick 数据生成主动力大资金指标的过程中,存在一些技术挑战,主要包括数据量庞大、计算性能要求高、数据的噪声和延迟等。

  • 数据量庞大:Tick 数据的频率非常高,特别是在交易活跃的时段,每秒钟可能有数百笔甚至上千笔成交记录。因此,数据存储和计算的性能要求很高。解决方案是使用内存数据库(如 Redis)来缓存实时 Tick 数据,并定期将历史数据存入分布式存储系统(如 Hadoop 或 Cassandra),以保证数据的读写效率。

  • 计算性能优化:为了在交易决策中实时应用主动力大资金指标,计算必须足够快速。可以使用分布式计算框架(如 Apache Flink 或 Spark Streaming)对 Tick 数据进行实时处理,并使用流式计算技术来降低延迟,保证计算结果的实时性。

  • 数据噪声处理:Tick 数据中包含大量的小额交易,这些交易可能对分析结果产生干扰,因此需要进行噪声处理。例如,可以设定一个最小交易量阈值,仅对超过该阈值的交易进行处理。此外,通过对连续多笔成交进行聚合,可以进一步过滤掉噪声,得到更加稳定的主动力大资金指标。

6. 主动力大资金指标代码参考
# 获取资金动力:主动买1/主动卖-1/无法判断0
# 根据tick划分阶段:1、第一条tick(集合竞价和无集合竞价);2、正常交易;3、尾盘集合竞价最后一条(挂单都为0);4、最后一条close;
# 主动买1:按照顺序if
# 1.第一条数据成交价大于昨日收盘价:包括集合竞价和没有集合竞价数据的第一条,(start >= 1) and (price > pre_close)
# 2.跌停:(当前tick成交价等于跌停价) and (买1交易量为0 or 买1交易量为0),(0 < limit_up_sign < 1)
# 3.当前tick成交价大于上一tick的价格,(price > pre_price)
# # 注掉3.当前tick成交价大于上一tick的卖1挂单价格,(price > pre_a1_p)
# # 注掉3-1.验证3可以通过当前tick成交量占比上一tick的大于等于pre_a1_p小于等于price的卖挂单量,卖挂单量大于50%成交量判断
# # 注掉4.当前tick成交价等于上一tick的卖1挂单价格,通过当前tick买1价大于等于上一tick卖1价判断,(price = pre_a1_p) and (b1_p >= pre_a1_p)
# 主动卖-1:按照顺序if
# -1.第一条数据成交价小于昨日收盘价:包括集合竞价和没有集合竞价数据的第一条,(start > 1) and (price < pre_close)
# -2.涨停:(当前tick成交价等于涨停价) and (卖1交易量为0 or 买1交易量为0),(limit_up_sign > 1)
# -3.当前tick成交价小于上一tick的价格,(price < pre_b1_p)
# # 注掉-3.当前tick成交价小于上一tick的买1挂单价格,(price < pre_b1_p)
# # 注掉-3-1.验证3可以通过当前tick成交量占比上一tick的小于等于pre_b1_p大于等于price的卖挂单量,买挂单量大于50%成交量判断
# # 注掉-4.当前tick成交价等于上一tick的买1挂单价格,通过当前tick卖1价小于等于上一tick买1价判断,(price = pre_b1_p) and (a1_p <= pre_b1_p)
# 无法判断0:
# 1.第一条数据成交价等于昨日收盘价:包括集合竞价和没有集合竞价数据的第一条,(start > 1) and (price == pre_close)
    def _get_dl_tick(self, df, before):df_all = beforedf_pre = df_all[df_all.datetime < df.datetime][-1:]# 处理非第一条数据,但第二条数据与上一条时间一样,导致没有数据if (len(df_pre) == 0) and (df.start == 0):return 0# start 0 表示非第一tick条数据 1 表示第一tick为集合竞价数据 2 表示第一tick不是集合竞价数据# 1、第一条tick数据,判断price>pre_close为主动买1;price<pre_close为主动卖1;price=pre_close为不确认0if df.start >= 1:# 主动买1:第一条数据成交价大于昨日收盘价:包括集合竞价和没有集合竞价数据的第一条,(start >= 1) and (price > pre_close)if df.dvwap > df.pre_close:return 1# 主动卖-1:第一条数据成交价小于昨日收盘价:包括集合竞价和没有集合竞价数据的第一条,(start > 1) and (price < pre_close)elif df.dvwap < df.pre_close:return -1else:return 0# 3、尾盘竞价最后一条数据,挂单价格和量都为空,辅助时间准确判断,判断涨跌停和非涨跌停:涨跌停判断挂单量变,非涨跌停根据挂单位置判断;elif (df.b1_p == 0) and (df.a1_p == 0):# 跌停if (df.limit_up_sign > 0) and (df.limit_up_sign < 1):# 上一tick也是跌停if (df_pre.limit_up_sign.values[0] > 0) and (df_pre.limit_up_sign.values[0] < 1):return 1# 上一tick不是跌停else:return -1# 涨停elif df.limit_up_sign > 1:# 上一tick也是涨停if df_pre.limit_up_sign.values[0] > 1:return -1# 上一tick不是涨停else:return 1else:if df.dvwap > df_pre.a1_p.values[0]:return 1elif df.price < df_pre.b1_p.values[0]:return -1else:return 0# 4、收盘close最后一条,有可能上一tick买卖1挂单价格都为0,判断涨跌停和非涨跌停:涨跌停判断挂单量变,非涨跌停根据挂单位置判断;elif (df.close > 0) and (df.datetime >= df.datetime[:10] + ' 15:00:00'):df_pre_2 = df_all[df_all.datetime < df.datetime][-2:-1]# 跌停if (df.limit_up_sign > 0) and (df.limit_up_sign < 1):# 上一tick也是跌停if (df_pre.limit_up_sign.values[0] > 0) and (df_pre.limit_up_sign.values[0] < 1):# 如果上一tick买卖挂单量价都为0,用上上tick数据判断if (df_pre.b1_p.values[0] == 0) and (df_pre.a1_p.values[0] == 0):# 如果当前tick的一档挂单量对比上一tick的一档挂单量是上涨和持平的则是消耗封单的资金即为主动买if (df.a1_v + df.dvolume) >= df_pre_2.a1_v.values[0]:return -1else:return 1else:# 如果当前tick的一档挂单量对比上一tick的一档挂单量是上涨和持平的则是消耗封单的资金即为主动买if (df.a1_v + df.dvolume) >= df_pre.a1_v.values[0]:return -1else:return 1# 上一tick不是跌停else:return -1# 涨停elif df.limit_up_sign > 1:# 上一个tick也是涨停if df_pre.limit_up_sign.values[0] > 1:# 如果上一tick买卖挂单量价都为0,用上上tick数据判断if (df_pre.b1_p.values[0] == 0) and (df_pre.a1_p.values[0] == 0):# 如果当前tick的一档挂单量对比上一tick的一档挂单量是上涨和持平的则是消耗封单的资金即为主动买if (df.b1_v + df.dvolume) >= df_pre_2.b1_v.values[0]:return 1else:return -1else:# 如果当前tick的一档挂单量对比上一tick的一档挂单量是上涨和持平的则是消耗封单的资金即为主动买if (df.b1_v + df.dvolume) >= df_pre.b1_v.values[0]:return 1else:return -1# 上一tick不是涨停else:return 1else:# 主动买3.当前tick成交均价大于上一tick的成交均价格,(dvwap > pre_dvwap)if df.dvwap > df.pre_dvwap:return 1# 主动卖-3.当前tick成交均价小于上一tick的成交均价格,(dvwap < pre_dvwap)elif df.dvwap < df.pre_dvwap:return -1# 不确定0else:return 0# 2、正常交易,非第一条start、收盘最后一条close、尾盘竞价最后一条数据else:# tick涨跌停标记-默认0,与pre_close比例[1.2, 1.1, 1.05, 0.95, 0.9, 0.8]# 主动买2.跌停:(当前tick成交价等于跌停价) and (卖1交易量为0 or 买1交易量为0),(0 < limit_up_sign < 1)if (df.limit_up_sign > 0) and (df.limit_up_sign < 1):# 上一tick也是跌停if (df_pre.limit_up_sign.values[0] > 0) and (df_pre.limit_up_sign.values[0] < 1):# 如果当前tick的一档挂单量对比上一tick的一档挂单量是上涨和持平的则是消耗封单的资金即为主动买if (df.a1_v + df.dvolume) >= df_pre.a1_v.values[0]:return -1else:return 1# 上一tick不是跌停else:return -1# 主动卖-2.涨停:(当前tick成交价等于涨停价) and (卖1交易量为0 or 买1交易量为0),(limit_up_sign > 1)elif df.limit_up_sign > 1:# 上一tick也是涨停if df_pre.limit_up_sign.values[0] > 1:# 如果当前tick的一档挂单量对比上一tick的一档挂单量是上涨和持平的则是消耗封单的资金即为主动买if (df.b1_v + df.dvolume) >= df_pre.b1_v.values[0]:return 1else:return -1# 上一tick不是涨停else:return 1# 非涨跌停:以价格为准判断,兼容价格在买卖挂单1之外逻辑else:# 主动买3.当前tick成交均价大于上一tick的成交均价格,(dvwap > pre_dvwap)if df.dvwap > df.pre_dvwap:return 1# 主动卖-3.当前tick成交均价小于上一tick的成交均价格,(dvwap < pre_dvwap)elif df.dvwap < df.pre_dvwap:return -1# 不确定0else:return 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/468706.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【基于PSINS工具箱】以速度为观测量的SINS/GNSS组合导航,UKF滤波

基于【PSINS工具箱】&#xff0c;提供一个MATLAB例程&#xff0c;仅以速度为观测量的SINS/GNSS组合导航&#xff08;滤波方式为UKF&#xff09; 文章目录 工具箱程序简述运行结果 代码程序讲解MATLAB 代码教程&#xff1a;使用UKF进行速度观测1. 引言与基本设置2. 初始设置3. U…

java访问华为网管软件iMaster NCE的北向接口时传递参数问题

上一篇文章介绍了利用《java访问华为网管软件iMaster NCE的北向接口》的一般性步骤&#xff0c;这里详细介绍其中一个读取性能数据的示例。原因是读取华为网管软件北向接口&#xff0c;完全找不到可供参考的例子。如果不需要传递什么参数&#xff0c;就能获取到结果&#xff0c…

基于SpringBoot的“在线考试系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“在线考试系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统登录界面图 用户注册界面图 管…

【2024软考架构案例题】你知道什么是 RESTful 风格吗?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

科大讯飞面经,蛮简单的

先来看面经&#xff1a; 下面我来简单聊聊这些问题。 自我介绍 关于如何自我介绍&#xff0c;这个如果还不会或者还没有准备&#xff0c;请先准备好你要如何向面试官介绍自己。 面试本来就是一个自我推销的方式之一&#xff0c;如果自我介绍都不会说&#xff0c;你如何卖个好价…

首次超越扩散模型和非自回归Transformer模型!字节开源RAR:自回归生成最新SOTA!

文章链接&#xff1a;https://arxiv.org/pdf/2411.00776 项目链接&#xff1a;https://yucornetto.github.io/projects/rar.html 代码&模型链接&#xff1a;https://github.com/bytedance/1d-tokenizer 亮点直击 RAR&#xff08;随机排列自回归训练策略&#xff09;&#x…

通义千问API调用测试 (colab-python,vue)

文章目录 代码&#xff08;来自官网&#xff09;colab中用python测试Qwen2.5在官网上查看并确定过期时间这里看到我的免费额度到25年5月在同一个页面&#xff0c;点击API示例 前端调用直接在前端调用的优缺点以vue为例&#xff08;代码是基于官网node.js的代码转换而来&#xf…

立体工业相机提升工业自动化中的立体深度感知

深度感知对仓库机器人应用至关重要&#xff0c;尤其是在自主导航、物品拾取与放置、库存管理等方面。 通过将深度感知与各种类型的3D数据&#xff08;如体积数据、点云、纹理等&#xff09;相结合&#xff0c;仓库机器人可以在错综复杂环境中实现自主导航&#xff0c;物品检测…

LSTM+LightGBM+Catboost的stacking融合模型

基本介绍 针对目前大部分数据同时具有特征连续和特征不连续的特点&#xff0c;将神经网络模型如LSTM和回归树模型如XGboost,基于stacking集成学习原理进行融合 附有模型评价指标R2、RMSE、MAE、MSE&#xff0c;代码包含注释&#xff0c;可以直接运行。 融合过程 在机器学习中…

人工智能 | 文生视频大模型

简介 文生视频指的是将文本描述转化为视频内容的技术&#xff0c;2024年2月15日 OpenAI 正式对外发布 Sora 人工智能模型&#xff0c;在人工智能领域掀起了一场风波&#xff0c;这是计算机视觉领域的一个突破。 Sora 这一名称起源于日文中“空”的含义&#xff0c;暗示了其具…

测试实项中的偶必现难测bug--一键登录失败

问题描述:安卓和ios有出现部分一键登录失败的场景,由于场景比较极端,衍生了很多不好评估的情况。 产生原因分析: 目前有解决过多次这种行为的问题,每次的产生原因都有所不同,这边根据我个人测试和收集复现的情况列举一些我碰到的: 1、由于我们调用的是友盟的一键登录的…

Pr:视频过渡快速参考(合集 · 2025版)

Adobe Premiere Pro 自带七组约四十多个视频过渡 Video Transitions效果&#xff0c;包含不同风格和用途&#xff0c;可在两个剪辑之间创造平滑、自然的转场&#xff0c;用来丰富时间、地点或情绪的变化。恰当地应用过渡可让观众更好地理解故事或人物。 提示&#xff1a; 点击下…

Jest项目实战(7):部署文档网站到 GitHub Pages

关于部署网站&#xff0c;理论上来讲&#xff0c;只要你有一个服务器&#xff0c;你要采用什么样的方式来部署都是可以的。但是前提是你需要有一个服务器&#xff08;物理机、云服务器&#xff09;。 这一小节我们部署文档网站选择使用 github 来进行部署&#xff0c;因为 Git…

第十九周:机器学习

目录 摘要 Abstract 一、吴恩达机器学习Exp1——线性回归 1、单变量线性回归 1.1数据集的读取及可视化 1.2分割训练集和验证集 1.3扩展维度 1.4线性回归模型 1.5训练过程可视化 2、多变量线性回归 2.1加载数据集并可视化 2.2划分训练集和验证集 2.3线性回归模型 …

Mac保护电池健康,延长电池使用寿命的好方法

使用Mac的过程中&#xff0c;如何延长电池的使用寿命是大家非常关心的问题&#xff0c;而养成一个良好的充电习惯能够有效的延长电池的使用寿命 避免过度充电和过度放电能够有效的保护电池&#xff0c;因此长时间的充电与长时间放点都不可取&#xff0c;但是在日常的使用过程中…

Python 爬虫数据清洗与存储:基础教程

Python 爬虫数据清洗与存储&#xff1a;基础教程 在爬虫数据获取完成后&#xff0c;数据往往是“原始”的&#xff0c;不适合直接使用。清洗和存储是将爬取到的原始数据转化为有用信息的关键步骤。本文将系统地介绍 Python 中进行数据清洗与存储的基本方法&#xff0c;帮助新手…

【博主推荐】VUE开发常用技术点收集

文章目录 1.系统主题的全局颜色变量申明和使用2.样式里面导入样式3.页面返回顶部功能4.页面实时更新时间功能5.页面条件判断的几种方式6.页面v-for使用7.页面路由跳转的几种方式8.vue3 js引用的几种方式9.Vue中引用和使用一个组件10.页面传参的几种方式VUE系列前端模板源码其他…

day08(单片机)时钟系统+定时器+PWM

目录 时钟系统定时器PWM 时钟系统 时钟基本概念 时钟源 晶体振荡器&#xff08;Crystal Oscillator&#xff09; RC振荡器&#xff08;Resistor-Capacitor Oscillator&#xff09; ​​​​​​​STM32U5时钟源 HSI(High Speed Internal) HSE(High Speed External) LSI(Low Spe…

linux盘扩容缩容

这里写目录标题 文件格式介绍问题&#xff1a;当根盘满了过后怎么办&#xff1f;解决方式&#xff1a; Xfs文件格式缩容扩容1. 备份2. 卸载home3. 缩容home&#xff08;home盘为xfs文件格式&#xff09;4. 扩容 /5. 恢复home备份 Ext4文件格式缩容扩容1. 备份&#xff08;可选&…

通过DNS服务器架构解释DNS请求过程

在前面的章节,这里,基于PCAP数据包和RFC文档详细介绍了DNS请求和响应的每个字段的含义。但是在现实的网络世界中,DNS请求和响应的数据包是怎么流动的,会经过哪些设备。本文将着重说明一下目前网络空间中DNS请求和响应的流动过程。 当前网络空间中比较常见DNS请求的流程如下…