L2十档行情API接口的开发原理是什么?

news2025/1/19 17:20:11

L2十档行情API接口的开发原理不知道大家有没有了解过,其实在现实的股市量化交易中,就有不少的投资者也在思考这个问题,并且也有的部分交易者会选择自己开发来使用,不仅支持A股所有的股票数据,也能对期货、外汇、黄金等投资产品行情有利用价值,帮助投资者快速的捕抓市场投机。那么,L2十档行情API接口是如何开发的呢?先来看看它的数据类型,以及挖掘数据信息的范围:

一、数据类型:

交易所

数据类型

上交所

十档行情快照(Level-2)

委托队列(Level-2)

逐笔成交(Level-2)

深交所

十档行情快照(Level-2)

逐笔委托(Level-2)

委托队列(Level-2)

逐笔成交(Level-2)

沪深交易所

期权、可转债

二、消息类型

消息

说明

TickRecord

逐笔成交

OrderRecord

逐笔委托

OrderQueueRecord

委托队列

StockQuoteRecord

股票十档行情

总的来说,L2十档行情API接口有以下这些开发亮点:
1、L2十档行情API接口主要是以20条高速服务器线路并发获取行情。
2、txt方式接入股票代码,xml高速输出,接入方便,操作简单。
3、行情来源各个证券市场,能够保证速度,不限量的查询方式。主要的电脑够带宽与性能都能支持,海量数据挖掘也不会失真。 

示例股票api接口获取股票历史数据的程序:

void stockDialog::on_refreshStock_clicked()
{
    stockNumList.clear();
    QTime startTime = QTime::currentTime();
    ui->refreshStatus->setText("正在更新股票数量...");
    QSqlQuery query;
    QString sel = QString("select stockNum from stocklist");
    bool result = query.exec(sel);
    if(result){
        while(query.next()){
            QString stockNum = query.value(0).toString();
            stockNumList<<stockNum;//获取所有股票代码
        }
    }
 
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    connect(manager,SIGNAL(finished(QNetworkReply*)),this, SLOT(writeData(QNetworkReply*)));
    for(int i=600000;i<604000;i++){//上证范围
        if(stockNumList.contains(QString::number(i,10)))
            continue;
        QNetworkRequest request(stockSource1.arg(i).arg(ui->lastTime->text()).arg(ui->thisTime->text()));
 
        request.setHeader(QNetworkRequest::ContentTypeHeader,
                          "application/x-www-form-urlencoded");
        manager->get(request);
        sleep(20);
    }
 
    for(int i=300000;i<300999;i++){//创业板范围,后续可能需要加大
        if(stockNumList.contains(QString::number(i,10)))
            continue;
        QNetworkRequest request(stockSource1.arg(i).arg(ui->lastTime->text()).arg(ui->thisTime->text()));
 
        request.setHeader(QNetworkRequest::ContentTypeHeader,
                          "application/x-www-form-urlencoded");
        manager->get(request);
        sleep(20);
    }
 
    for(int i=1600;i<2999;i++){
        QString ii = "00"+QString::number(i, 10);
        if(stockNumList.contains(ii))
            continue;
        QNetworkRequest request(stockSource1.arg(ii).arg(ui->lastTime->text()).arg(ui->thisTime->text()));
 
        request.setHeader(QNetworkRequest::ContentTypeHeader,
                          "application/x-www-form-urlencoded");
        manager->get(request);
        sleep(20);
    }
 
    for(int i=100;i<1000;i++){
        QString ii = "000"+QString::number(i, 10);
        if(stockNumList.contains(ii))
            continue;
        QNetworkRequest request(stockSource1.arg(ii).arg(ui->lastTime->text()).arg(ui->thisTime->text()));
 
        request.setHeader(QNetworkRequest::ContentTypeHeader,
                          "application/x-www-form-urlencoded");
        manager->get(request);
        sleep(20);
    }
 
    for(int i=10;i<100;i++){
        QString ii = "0000"+QString::number(i, 10);
        if(stockNumList.contains(ii))
            continue;
        QNetworkRequest request(stockSource1.arg(ii).arg(ui->lastTime->text()).arg(ui->thisTime->text()));
 
        request.setHeader(QNetworkRequest::ContentTypeHeader,
                          "application/x-www-form-urlencoded");
        manager->get(request);
        sleep(20);
    }
 
    for(int i=1;i<10;i++){
        QString ii = "00000"+QString::number(i, 10);
        if(stockNumList.contains(ii))
            continue;
        QNetworkRequest request(stockSource1.arg(ii).arg(ui->lastTime->text()).arg(ui->thisTime->text()));
 
        request.setHeader(QNetworkRequest::ContentTypeHeader,
                          "application/x-www-form-urlencoded");
        manager->get(request);
        sleep(20);
    }
    QTime stopTime = QTime::currentTime();
    int elapsed = startTime.msecsTo(stopTime)/1000;
    QString str = "更新股票数量结束,用时"+QString::number(elapsed, 10)+"秒";
    ui->refreshStatus->setText(str);
 
    stockNumList.clear();
    result = query.exec(sel);
        if(result){
            while(query.next()){
                QString stockNum = query.value(0).toString();
                stockNumList<<stockNum;/API数据接口获取所有股票代码
            }
        }
}

执行示例:

但需要注意的是,股票API接口限流现象的存在是很正常的,在股市交易中,我们不可能将一些股票L2接口来传达更多的数据,因此就会使用一些定时程序来限流,才不会出现卡顿的现象,可以执行分批的限流方法,具体获取数据使用到的函数接口类型总体概括为:股票接口终端数据接口的socket接口地址:120.0.1端口:8080接口名称:加法actionname:add入参:{'action':'add','result':3}errorcode:codemessage-1DataError-2WrongAction即可。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

个人项目-部署手册

前言 一、RDS和ECS购买与配置 https://www.aliyun.com/?spm5176.12818093.top-nav.dlogo.3be916d0u0Ncp9 购买RDS(MYSQL)和ECS(规格族&#xff1a;突发性能实例 t6 )的时候尽量选择一个大区》如&#xff1a;华东&#xff08;杭州&#xff09;配置不需要太高(够自己使用就行了…

干货分享 | B站SLO由失败转成功,B站SRE做对了什么?

最近几年&#xff0c;Google SRE在国内非常流行。 Google SRE方法论中提出了SLO是SRE实践的核心&#xff0c;SLO为服务可靠性设定了一个目标级别&#xff0c;它是量化线上质量的关键因素&#xff0c;它是用来回答一个服务到底“什么时候叫做挂了”的根本依据&#xff0c;也是可…

Python网络爬虫入门篇

1. 预备知识 学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。 2. Python爬虫基本流程 a. 发送请求 使用http库向目标站点发起请求&#xff0c;即发送一个Request&#xff0c;Request包含&am…

xxl-job 执行成功,但是报“任务结果丢失,标记失败“错误

问题1:使用xxl定时更新数据,发现执行结果是失败的 打开日志查看,发现没报错,结果是200 打开备注,上面写着"结果丢失". 再仔细对比下,发现外面日志列表中的执行时间是00:20:18;而日志记录中的最后时间是00:39:32;也就是说线程还没执行完,就先报结果错误了. 对比日志时…

[附源码]Python计算机毕业设计宠物寄养管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Jmeter压力测试教程(上)

JMeter压力测试一、 简介1.1优点1.2缺点二、安装2.1下载2.2解决中文乱码问题2.5配置环境变量2.4启动入门案例三、线程组相关3.1 创建多个线程组3.2 并发和顺序执行3.3 两个特殊的线程组&#xff08;setUp/tearDown&#xff09;线程细节设置默认http请求新增接口信息头管理器四、…

SAP ADM100-1.2之系统登录过程(ABAP)

1、SAP登录过程 为了在前端最终用户和SAP系统实例之间创建连接,sapgui.exe程序需要启动参数。参数字符串是由saplogon .exe程序使用为登录选择的SAP GUI的信息创建。 SAP登录信息有以下两个来源:SAP Logon的配置文件,以及对所选系统的消息服务器的直接请求(下图中的步骤1和…

使用Go+Lua解决Redis秒杀中库存与超卖问题

1、简介 Go语言连接go-redis进行数据库的连接&#xff0c;如果你对这部分尚不了解&#xff0c;建议你先学习这部分知识。另外&#xff0c;本秒杀主要解决两个问题&#xff0c;第一个就是超卖问题&#xff0c;另一个就是库存问题。没有设计专门的页面来模拟并发&#xff0c;我们…

布谷蓝途:易知微「可视大脑助力智慧教育」主题分享精彩实录

如今&#xff0c;大数据技术在教育领域的应用与普及正驶入“快车道”&#xff0c;但仍然存在资源管理分散、数据各自为阵、运营模式传统等痛点&#xff0c;如何借助新技术、新机遇并充分发挥大数据在教育教学中的支撑作用成为重中之重。 布谷蓝途作为国内前沿的大数据方案与服…

网分测试线缆怎么选?

如何在众多选择中寻找到最佳的测试电缆?以下内容由普科科技PRBTEK整理&#xff0c;以下内容将阐述电缆与电缆组件的机械及电气性能&#xff0c;以及如何选择您理想的测试电缆。 2004年5月&#xff0c;美国时代微波系统公司的测试工程师对50欧姆测试电缆的要求作出以下概述&…

银河麒麟桌面操作系统V10安装过程

文章目录下载镜像导入VMware启动安装下载镜像导入VMware 首先去麒麟生态网站注册登录&#xff0c;找到适合自己版本的操作系统 打开VMware新建虚拟机 把镜像放进来 选择Liunx的ubuntu版本 分配处理器和内核 分配内存 后面的就网络、I/O、硬盘按照默认配置就行 启动安装 …

二叉树的建立和遍历

目录创建二叉树中的引用使用遍历顺序创建二叉树使用先序遍历和中序遍历创建二叉树使用中序和后序创建二叉树中序求二叉树用栈实现非递归遍历先序遍历中序遍历后序遍历用栈通过出栈次数进行遍历中序遍历后序遍历队列进行层次遍历思路代码判断是否是满二叉树和完全二叉树递归非递…

面向开发者的开源低代码开发工具,强烈推荐!

每家公司在发展过程中都需要构建大量的内部系统&#xff0c; 比如运营使用的用户管理后台&#xff0c;销售线索后台&#xff0c;双十一活动后台&#xff0c;圣诞节活动后台等。 许多公司内部也都有专门的研发团队负责开发各种各样的后台和内部工具&#xff0c;大量的公司为此付…

Qt开发-QT Quick

前言 QT Quick和Qt widgets这两种技术&#xff0c;官方是强推QT Quick的。 QT Quick中布局一般有如下四种方式&#xff0c; 绝对坐标&#xff1a;x、y、z、width、height、top、left锚(anchors) 布局定位器&#xff08;Row、Column、Grid、Flow&#xff09;布局管理器&#…

(微信开发)Laya转发H5网页到微信,带图片

网页转发到微信时&#xff0c;带图片和自定义标题。2022年11月22号 关键解说 _wx.config({ debug: _wx_configdebug, appId: e.appId, timestamp: e.timestamp, nonceStr: e.nonceStr, signature: e.signature, jsApiList: [ // 所有要调用的 API 都要加到这个列表中 ‘onMen…

网络威胁情报git【全面】

开源地址如下: https://github.com/fastfire/deepdarkCTI 网络威胁情报 (CTI) 被定义为收集和分析有关威胁和对手的信息以及绘制模式&#xff0c;这些模式提供了针对各种网络攻击的准备、预防和响应行动做出明智决策的能力。 CTI 涉及收集、研究和分析网络威胁领域的趋势和技…

APP测试面试题汇总(基础篇、进阶篇)

一、基础篇 1、请介绍一下&#xff0c;APP测试流程&#xff1f; APP测试流程与web测试流程类似&#xff0c;分为如下七个阶段&#xff1a; 1.根据需求说明书编写测试计划&#xff1b; 2.制定测试方案&#xff0c;主要是测试任务、测试人员和测试时间的分配&#xff1b; 3.…

Elasticsearch GC优化实践

近期业务查询线上ES集群出现频繁超时告警&#xff0c;尤其是早晨某个时间点固定的报一波超时&#xff0c;从调用链监控上很难看出是什么业务行为导致的。 初步猜测 查看Grafana上Elasticsaerch的基础监控&#xff0c;发现业务告警与ES的Old GC&#xff08;老年代GC&#xff0…

功率放大器的参数和应用场景是什么

功率放大器是电子测量行业比较常见的一种电子放大器&#xff0c;主要目的是增加给定输入信号的功率幅度&#xff0c;使输入信号功率增加&#xff0c;从而驱动到发射器等输出设备的负载水平。和电流放大器与电压放大器有所不同的是&#xff0c;功率放大器是直接驱动负载并且最终…

SessionCookie

会话 会话&#xff1a;用户打开浏览器进行的一系列操作直至关闭浏览器的过程看作是一次会话 HTTP协议是无状态的&#xff0c;不能实现跟踪对话。比如进入一个网站&#xff0c;每次操作的请求之间相互独立&#xff0c;无法相互联系。也就是说你每次请求过后得到的服务器响应或…