自动下载期货,期权,股指信息的CTP数据器收集器docker image

自动下载期货,期权,股指信息的CTP数据收集器

制作了一个docker镜像可以更方便的下载CTP里面的tick数据了

中国期货ctp数据自动下载docker

配置好ctp的启动参数以后,会自动在交易时段之前启动,交易时段之后关闭。并且交易时间结束后,会自动按照产品数据分类,整理成1分钟k线。

注意:处理完毕后,原始tick数据文件会自动压缩成以日期为名的文件,方便下载。请定时下载数据文件到本地,并及时清理空间,以免磁盘空间不足。

crontab里面的程序设置了整个程序运行步骤,可以自行修改"formatter_daily_file.sh"来决定是不是需要产生1分钟k线。

建议配置:

如果只下载tick数据而不产生1分钟k线,1核1G的云服务器足够了。

如果需要自动产生1分钟k线,建议配置8G以上内存(或许可以通过打开swap来代替?未测试)。

期货全品种行情下载工具和行情重播回测API 期货市场全品种行情tick数据收集工具3.1 支持盘中实时行情和历史行情连续回播,开盘时间申请到当前行情时间段也不会缺行情, 当数据服务将文件历史行情回播完成后,开始接着播放实时行情,直到通过python api 调用方法,通知服务停止回播实时行情。 目前不支持并发,对同一个品种多次调用回播api,会导致回播行情数据顺序错乱。 对不同品种多次调用回播api,可能因为cpu占用过大,会导致服务UI没有响应。后面升级版本会 完整的并发解决方案。 期货市场全品种行情tick数据收集工具3.0 (1)TCP网络连接由同步模式改为异步模式,解决某些网络状况无法连接数据采集服务的问题 未来升级版本将优化性能 期货市场全品种行情tick数据收集工具2.9b 清理了不需要的.lib,不会再提示缺少ctp的dll文件,删除了不需要的方法 支持任意IP地址的连接,可以实现连接云主机运行的行情收集服务,或局域网里的行情收集服务期货市场全品种行情tick数据收集工具2.9 修复了多个API进程之间回调数据时互相影响 当前合约数约323个合约,最大范围1200个合约,视合约产品而定。 本例正式发布版本2.7 可以自由设置行情服务 模拟simnow24小时行情服务在交易日上午没有数据,要在下午4点之后才有数据。 模拟simnow实盘同步时间服务,和实盘同步。 可改为期货公司的服务IP,见“快期”软件设置“测试和代理”中的行情IP地址 双击合约文件列表可打开分时图 TestPythonApi可以调用DataCollectServer收集的行情数据(给定合约和时间段) 2017.3.11
### 使用C++和CTP实现期货分时图 #### 1. 准备工作 为了实现实时绘制期货分时图,首先需要安装并配置好CTP API开发环境。确保已经下载并编译了最新的CTP接口库,并将其链接到自己的C++项目中。 #### 2. 获取市场行情数据 通过调用`ReqMarketData()`请求特定合约的最新市场价格信息。该API会返回包含买卖盘口、成交记录等在内的详细报价单[^1]。 ```cpp // 请求指定合约的市场数据 void req_market_data(CThostFtdcMdApi* pUserApi, const char *instrument_id) { CThostFtdcSpecificInstrumentField myreq = {0}; strcpy(myreq.InstrumentID, instrument_id); int iResult = pUserApi->Req specific Instrument(&myreq, nRequestID++); } ``` #### 3. 处理接收到的数据流 每当有新的tick到来时,都会触发OnRtnDepthMarketData回调函数,在这里处理每一笔交易的价格变动情况并将它们存储起来以便后续绘制成图形。 ```cpp /// 市场数据通知回报 virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData) override { // 记录时间戳与价格变化 std::pair<std::string,double> tick_entry(pDepthMarketData->UpdateTime,pDepthMarketData->LastPrice); // 将新条目加入队列末端 market_ticks.push_back(tick_entry); // 如果超过最大长度则移除最早的一条记录保持固定窗口大小 if (market_ticks.size()>MAX_TICKS){ market_ticks.pop_front(); } } ``` #### 4. 绘制K线/分时走势图 利用第三方图表库如NPlot来展示收集好的历史价位走势。考虑到性能因素可以选择只保留最近一段时间内的数据点进行渲染更新操作。 ```cpp #include "nplot.h" NPLOT_BEGIN_NAMESPACE(NPlot) class MyChart : public ChartWidget{ public: explicit MyChart(QWidget *parent=nullptr):ChartWidget(parent){} protected: virtual void paintEvent(QPaintEvent *)override{ QPainter painter(this); QPen pen(Qt::red);painter.setPen(pen); double last_price=-1; for(auto& item:market_ticks){ if(last_price>=0){ QPointF start(item.first.toPointF(),last_price); QPointF end((item.first+QStringLiteral(" 00")).toPointF(),item.second); painter.drawLine(start,end); } last_price=item.second; } } }; NPLOT_END_NAMESPACE() ``` 以上代码片段展示了如何基于CTP API接收实时行情并通过自定义Qt小部件MyChart完成简单版分时图可视化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BackTraderCN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值