通达信插件获取并存储通达信商品指数的实时数据

一、引子

通达信商品指数一共有23个,如下图所示:

如果想获取历史数据,只需要通过通达信的数据下载和导出功能即可,现在我们需要获取这23个指数的实时数据,通过导出功能就没有办法了。

在最初的阶段,考虑的是合成的逻辑,即找到每一个指数的成份股,计算出对应的加权指数后再进行算术平均来计算对应的指数。这种方法的好处是每一样都可以算出来,缺点是总是有一点点误差,可能是商品指数的加权应该有一种修正逻辑,并且由于每次的计算都有误差,随着时日久远,误差会越来越大,造成完全不可用,后来没有办法,每天下载23个期货指数做为修正基数,勉强也用了一段时间。最近不知为何,忽然发现指数完全对不上,特别是通达信商品指数,乱的不像样,把之前的所有努力都废了。

自己计算看来没有办法了,可能是通达信中修正逻辑改了或是其它什么原因导致算不准了,只能考虑直接使用通达信的板块指数

二、pytdx

这种东西看起来可以获取到通达信的几乎所有数据,获取到

通过如下代码:

from pytdx.exhq import TdxExHq_API
from pytdx.exhq import TDXParams
api = TdxExHq_API()
with api.connect("182.175.240.157", 7727):df = api.to_df(api.get_markets())print(df)
data = api.to_df(api.get_instrument_bars(TDXParams.KLINE_TYPE_1MIN, 30, "AGL9", 0, 10))
print(data)

可以连接上期货的扩展板块,并且在交易日时也可以获取到除了商品期货指数的所有期货数据(试验了一下,今天是什么数据也获取不到,应该还是该接口对于扩展数据的不稳定支持有关)

看起来商品期货指数想通过简单的api获取是不可能了

三、通达信插件

1、通达信公式的逻辑

这一块的逻辑为针对特定数据,如代码为T开头的且必须是4个字符串的认为是商品期货指数,这样就不用所有数据都保存了,这一层过滤可在公式端进行,满足这些条件的传送对应的除T以外的代码,不满足的传递-1

T1: SUBSTR(CODE,1,1) == 'T',NODRAW;
S_CODE:= SUBSTR(CODE,2,3);
T2: STRLEN(CODE)==4, NODRAW;
S_DATE:= CON2STR(DATE+19000000,0);
S_TIME:= CON2STR(TIME,0);
T3: PERIOD==0, NODRAW;D_CODE:=IF(T1 AND T2 AND T3, STR2CON(S_CODE), -1);

考虑到我们要存储的是分钟数据,因此至少要先传入日期和分钟,由于根据插件标准,一次最多3个入参且必须是浮点数,所以一个K线数据至少需要4个函数才能实现

MM1:TDXDLL2(1,D_CODE,STR2CON(S_DATE),STR2CON(S_TIME));
MM2:TDXDLL2(2,D_CODE,OPEN,HIGH);
MM3:TDXDLL2(3,D_CODE,LOW,CLOSE);
MM4:TDXDLL2(4,D_CODE,VOL,VOLINSTK);

这样我们在公式端就完成了一个K线的基本数据的传入了,至于为何每次都需要传入D_CODE,是为了2,3,4函数中识别是否为同一个商品指数而做。

2、通达信插件的逻辑

1)插件初始化

考虑到我们需要存储到文件中,每次打开文件写入再关闭文件可能会影响效率,可以在插件刚刚加载时将对应的23个文件全部打开

int init()
{table_init();char buf[512] = { 0 };for (auto it = g_tables.begin(); it != g_tables.end(); it++) {bool FileExist = false;memset(buf, 0, sizeof(buf));sprintf(buf, "C:/TdxFutureBk/%s_%s.csv", it->first.c_str(), it->second.c_str());if (!_access(buf, 0))FileExist = true;FILE *p = fopen(buf, "a");if (p != NULL) {g_fstreams[it->first] = p;if (!FileExist) {fflush(p);}}}return 0;
}

g_tables是为了后续将数据存入数据库而准备,每一个商品指数对应板块表名,这里可以不考虑

然后在动态库的入口先调用init即可

BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:init();// 第一次将一个DLL映射到进程地址空间时调用// The DLL is being mapped into the process' address space.break;

2)void FutureBk1(int DataLen, float *pfOUT, float *pfINa, float *pfINb, float *pfINc)的逻辑

此函数首先需判断DataLen是否大于1,否的话退出

然后再判断pfINa是否大于0,否的话说明不是国内期货指数,也退出

接下来从INa中获取代码,与“T"拼接在一起作为指数代码code,从INb中获取日期,从INc中获取时间,

这些完成后进行全局的数据初始化

	char szTime[32] = { 0 };memset(szTime, 0, sizeof(szTime));sprintf(szTime, "%04d-%02d-%02d %02d:%02d:%02d", iDate / 10000, (iDate % 10000) / 100, (iDate % 10000) % 100, iTime / 100, iTime % 100, 0);memset(buf, 0, sizeof(buf));sprintf(buf, "%s,%s,1", bkCode.c_str(), szTime);g_datas[code] = buf;

3)void FutureBk2,3(int DataLen, float *pfOUT, float *pfINa, float *pfINb, float *pfINc)

DataLen和pfINa的检查是与Bk1一致的

然后将INb转成open, INc转成high

然后检查code对应的g_datas不存在或是对应的值为空字符串,说明数据不合法,退出

如果通过检查,则将转换成的open,high追加到全局变量g_datas中

	memset(buf, 0, sizeof(buf));sprintf(buf, "%s,%s,%s", data.c_str(), open.c_str(), high.c_str());g_datas[code] = buf;

FutureBk3与2类似逻辑,只是追加的为low,close

4、void FutureBk4(int DataLen, float *pfOUT, float *pfINa, float *pfINb, float *pfINc)

FutureBk4与3的检查是一样的,通过后追加成交量和持仓量

然后需要通过code为K查找g_fstreams是否存在此code,存在的话调用g_fstreams将文本存入对应的文件中

至此,插件内容就写完了。

四、使用

生成的动态库TdxFutureBk.dll放置于T0002\dlls中然后绑定在2号库,然后开启通达信,将多股同列调成5*5,将调整成1分钟周期放置在那儿(在通达信公式中限定只存储1分钟板块数据),当有实时行情时,就会将所有板块自动存于相应的板块文件中(一个板块约一分钟存入8笔左右)

 

 

五、存储到数据库中

如果需要对数据进行实时处理,更好的办法是存于redis中或是mysql数据库中,这样就可以利用实时板块数据来计算相应的指标了

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

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

相关文章

免费获得筹码分布接口交易数据,Tushare的使用方法

在做量化交易时需要活动历史数据,Tushare是一个免费提供各类金融数据 , 助力智能投资与创新型投资的平台。在这个平台上可以免费获得股票、期货和外汇的各种数据。下面就给大家介绍一下Tushare的注册和使用方法。 使用流程是:1、用户注册 - 2、用户使用…

哪个软件能实盘测试策略,Quicklib提供期货CTA策略实盘模拟监控的好工具(原创)...

大家都知道开发期货程序化交易,是一个非常繁杂的工作,并且在策略实盘运行过程中,很难提供一个资金曲线进行查看,我开发了一款资金曲线分时图工具,可以将期货CTP账户的资金曲线绘制出来,方便检查实盘策略中的…

HCIA第二天笔记

思维导图 HCIA第二天笔记 IP报文头部 图 第二行分别是:标识字段,标志位和片偏移字段 标识字段:相当于序列号,假设给第一个分片的报文序号随即为x则后续的每个报文1 标志位&#xff1…

鸿蒙系统走进大学课堂,华为鸿蒙系统HarmonyOS课程走进高校,武汉大学等高校将授课...

推动华为鸿蒙系统HarmonyOS高速发展的机会来了,当前已得到权威确定,华为鸿蒙系统HarmonyOS课程将走进高校,在武汉大学等15个高校将正式开展harmonyOS授课。据业内人士表示,此举将推动鸿蒙系统HarmonyOS在国内的普及,包…

HCIA (学习笔记二)

华为eNSP 以上图拓扑图为例 增加拓展结构 可以在此对路由器进行拓展 将所需的拓展面板拖进拓展板即可 配置 华为根据所属权限不同把设备分为不同的视图 <huawei> 尖括号为用户视图—只有查看权限 [huawei] 方括号为系统视图—可以进行全局配置 [gaomin-GigabitEthern…

HCIA-HarmonyOS Application Developer——题目集3

题目1 1、&#xff08;多选&#xff09;开发者在使用JavaUl框架时&#xff0c;会用到各种组件来创建一个页面&#xff0c;以下哪些XML属性&#xff0c;是所有组件通用的? A、id B、width C、theme D、clickable 解析&#xff1a;&#xff08;ABCD&#xff09; 题目2 2、&…

华为技术官又出神作,鸿蒙操作系统完整文档笔记现已疯传

操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是管理和控制计算机硬件与软件资源的计算机程序&#xff0c;用户和计算机的接口&#xff0c;同时也是计算机硬件和其他软件的接口。 其能管理计算机系统的硬件、软件及数据资源&#xff0c;控制程序运行&a…

【鸿蒙应用开发】 【HCIA认证】学习笔记3

文章目录 1.正确的人&#xff0c;通过正确的设备&#xff0c;正确地使用数据2.HiLog3.架构图4.Data5.Image7.通知8.JS FA调用Java PA的机制9.NetworkID10.内核层 考点说明 1.正确的人&#xff0c;通过正确的设备&#xff0c;正确地使用数据 在搭载HarmonyOS的分布式终端上&…

华为鸿蒙系统深度研究 (PPT演示)

感谢阅读&#xff0c;欢迎扩散传播&#xff01;感谢&#xff01; ????点击关注GitHub科技???? 更多鸿蒙文章&#xff0c;共建鸿蒙生态 华为鸿蒙系统是安卓套壳&#xff1f;直接看代码 HarmonyOS到底是不是Android套皮&#xff1f; HarmonyOS完全升级攻略&#xff1a;消…

鸿蒙ArkTS第一次作业

主要目录配置文件作用&#xff1a; stage模型&#xff1a; FA模型&#xff1a; 语法基础知识&#xff1a; ArkTS 是华为自研的开发语言。是2022年下半年新推出的语言&#xff0c;它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩…

【鸿蒙应用开发】 【HCIA认证】学习笔记1

文章目录 1.page生命周期2.跨设备迁移Page3.原子化服务4.config.json5.visibility6.权限7.intent8.线程8.服务卡片10.APP Pack 考点说明 1.page生命周期 MainAbility拥有MainAbilitySlice1和MainAbilitySlice2 当MainAbilitySlice1导航到MainAbilitySlice2时 调用顺序是这样的…

【鸿蒙应用开发】 【HCIA认证】学习笔记2

文章目录 1.idl2.Service3.关系型数据库4.分布式接口5.视频播放功能开发步骤6.Java UI框架7.JS UI框架8.布局9.内外边距10.数字签名 考点说明 1.idl 在开发HarmonyOS应用时&#xff0c;如果客户端和服务端需要跨进程通信&#xff0c;可以使用idl来定义两者均认可的编程接口。 …

追着 chatGPT 打的 Claude 跑不动了?!

claude 据说是 openai 公司的副总裁因理念不合&#xff0c;出走创建的 anthropic 公司发明的聊天机器人&#xff0c;和 chatGPT一样&#xff0c;智能聊天功能都很不错。 大致水平在 强chatGPT3.5 左右。 前期因为免费试用&#xff0c;反应速度非常快&#xff0c;对国内也没有…

通达信上涨回调选股公式,选出二次走强的标的

本文首先编写二次走强指标公式&#xff0c;在此基础上增加过滤条件&#xff0c;编写上涨回调选股公式。 一、二次走强指标公式 指标公式的总体思路还是比较简单的&#xff0c;弱势、弱势反弹、强势、强势调整&#xff0c;这四个形态主要是处理画图&#xff0c;二次走强是信号&…

Dijkstra迪杰斯特拉算法的介绍(分为朴素dj和堆优化版dj),包含模板总结(必掌握)与具体例题应用

(&#x1f53a;)朴素dijkstra迪杰斯特拉算法 时间复杂度分析 寻找路径最短的点&#xff1a;O(n)加入集合S&#xff1a;O(n)更新距离&#xff1a;O(m)所以总的时间复杂度为O(n)精确&#xff1a;时间复杂度 O(nm), n表示点数&#xff0c;m表示边数 所有边若是正的,就不会有自环;…

斯坦福「红睡衣」计划:真·从零复刻ChatGPT!

源 | 新智元 大家好&#xff0c;这里是 NewBeeNLP。一起从零打造ChatGPT&#xff0c;AI从业者大团结&#xff01; Meta AI开源的大羊驼LLaMA模型彻底点燃了开源社区的热情&#xff0c;并在此基础上相继开发出了各种类ChatGPT的羊驼Alpaca, Vicuna等。 但Meta只是开源了LLaMA的权…

2023 Prompts_ChatGPT 提示语大全

ChatGPT Prompts 是一个专注于 ChatGPT 提示语的大全集合网站&#xff0c;涵盖了广泛的领域和主题。无论是想在日常生活中获取写作灵感&#xff0c;还是想在科技、文学、医学等领域提升写作效率和质量&#xff0c;用户都可以从该网站中找到适合自己的相关提示语。 该网站提供的…

如何不被薅羊毛

有赞微页面优惠券组件内有个便捷的功能&#xff1a;自动获取本店铺创建的优惠券&#xff0c;便于商家进行营销活动。但如果商家创建了用于测试的优惠券&#xff0c;却未考虑到该券会被微页面自动获取和推广。这时就可能会被消费者薅羊毛。为了避免损失发生&#xff0c;我们需要…

亏大了!一男子薅羊毛 13 万被判 3 年

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; ​ 近年来&#xff0c;网上读书类APP为推广产品纷纷向用户发放福利券用以尝鲜或追书。然而&#xff0c;这一利好双方的行为&#xff0c;却被不法分子钻了空子。刘某某雇人制作三款计…

薅羊毛的最高境界,解放你的双手

目录提示 引子AutoJs安装开发环境连接手机 编写刷视频的脚本总结 引子 各短视屏平台为了抢占市场&#xff0c;抢占流量大都推出了刷视频红包的功能&#xff0c;作为一个羊毛党来说&#xff0c;哪有那么多时间刷这玩意&#xff0c;工作还干不干了&#xff0c;钱还挣不挣了&…