level2逐笔行情接口

WEBSOCKET行情接入

行情在线测试 websocket行情接口

交易在线测试 在线交易接口

官方文档地址 行情交易接口用户文档

分配服务器

注意:每次分配的服务器地址会发生变化,连接服务前,请务必调用该接口获取最新的服务器地址。

获取服务器:

http://jvQuant.com/server?market=ab&type=websocket&token=<token>

Copy

接口参数:

#参数名类型描述
1marketstring市场标志,沪深为ab
2typestring接口类别,行情类别为websocket
3tokenstringjvQuant token

接口返回:

#参数名类型描述
1codestring请求状态码
2serverstring分配服务器地址及端口号

返回示例:

{
  "code": "0",
  "server": "xx.xx.x.xx:xxxx/xxx"
}

Copy

CODE规范

jvQuant支持沪深主板、科创板、创业板,股票以及可转债行情,提供level1和level2数据推送。

订阅代码由行情标志证券代码组成,用分隔符"_"连接。

如:

lv1_600519,代表贵州茅台level1行情

lv2_127063,代表贵轮转债level2行情

#行情标志类型描述
1lv1stringlevel1行情
2lv2stringlevel2行情

连接登录

使用分配的服务器地址,通过websokcet协议连接服务器。

websocket接口地址:

ws://xx.xx.x.xx:xxxx/xxx?token=<token>

Copy

订阅行情

创建websocket连接后,您可以输入以下指令进行行情订阅:

#指令参数描述
1addstring增加订阅code
2delstring删除订阅code
3allstring覆盖全部code
4liststring查看全部订阅code

指令后接code参数,用分隔符"="连接,多个code用分隔符","分隔。

例:

add=lv1_600519,lv2_127063 ,表示增加订阅lv1_600519,lv2_127063行情。

del=lv1_600519,lv2_127063 ,表示删除订阅lv1_600519,lv2_127063行情。

all=lv1_600519 ,表示覆盖全部订阅code。

all= ,后接参数为空,表示删除全部订阅code。

list ,无需参数,表示查看全部订阅code。

解析行情

为提高数据传输速率,行情推送采用二进制方式传输,请在接收端解压缩为字符串。

level1

level1行情推送数据以换行符"\n"为分隔,每一行以lv1_xxxxxx=为开头,代表该类别code对应的行情。

lv1每笔交易数据字段以","为分隔符,定义如下:

推送时间,证券名称,最新价格,涨幅,成交量,成交额,买五档[挂单数量,挂单价格],卖五档[挂单数量,挂单价格]

leve1推送数据包格式如下:

lv1_证券代码1=推送时间,证券名称,最新价格,涨幅,成交量,成交额,买五档[挂单数量,挂单价格],卖五档[挂单数量,挂单价格]... lv1_证券代码2=推送时间,证券名称,最新价格,涨幅,成交量,成交额,买五档[挂单数量,挂单价格],卖五档[挂单数量,挂单价格]...

level2

level2行情推送数据以换行符"\n"为分隔,每一行以lv2_xxxxxx=为开头,代表该类别code对应的行情。

同一时刻会存在多笔交易,以"|"为分隔符。

lv2每笔交易数据字段以","为分隔符,定义如下:

成交时间(毫秒),成交编号,成交价格,成交数量/(股)

推送数据包格式如下:

lv2_证券代码1=成交时间1,成交编号1,成交价格1,成交数量1|成交编号2,成交时间2,成交价格2,成交数量2... lv2_证券代码2=成交时间1,成交编号1,成交价格1,成交数量1|成交编号2,成交时间2,成交价格2,成交数量2...

在线测试

交易接入

jvQuant OpenAPI直达券商,提供多种登录及交易方式。

您只需输入对应券商的资金账号密码,即可调用jvQuant OpenAPI进行交易。

*个人账户仅支持东方财富登录,机构账户无限制。

分配服务器

为实现更好的用户体验,jvQuant会根据您所在的地区分配合适的服务器。

注意:每次分配的服务器地址会发生变化,连接服务前,请务必调用该接口获取最新的服务器地址。

分配服务器地址:

http://jvQuant.com/server?market=ab&type=trade&token=<token>

Copy

接口参数:

#参数名类型描述
1marketstring市场标志,沪深为ab
2typestring接口类别,交易类别为trade
3tokenstringjvQuant token

接口返回:

#参数名类型描述
1codestring请求状态码
2serverstring分配服务器地址及端口号

返回示例:

{
  "code": "0",
  "server": "xx.xx.x.xx:xxxx"
}

Copy

登录柜台

输入交易账户及密码,通过柜台验证后返回授权交易凭证ticket。

请妥善保管好交易凭证,在ticket有效期内,您可以免登录进行后续的交易操作。

接口地址:

http://xx.xx.x.xx:xxxx/login?&token=<token>&acc=<资金账号>&pass=<密码>

Copy

接口参数:

#参数名类型描述
1tokenstringjvQuant token
2accstring12位资金账号
3passstring资金交易密码

接口返回:

#参数名类型描述
1codestring请求状态码
2ticketstring登录凭证
2expireintticket有效时间(秒)

返回示例:

{
  "code": "0",
  "ticket": "xxxx",
  "expire": xxx
}

Copy

查询持仓信息

接口地址:

http://xx.xx.x.xx:xxxx/check_hold?&token=<token>&ticket=<交易凭证>

Copy

接口参数:

#参数名类型描述
1tokenstringjvQuant token
2ticketstring交易凭证ticket

接口返回:

#参数名类型描述
1messagestring错误信息
2totalstring账户总资产
2usablestring账户可用资金
3day_earnstring账户当日盈亏
4hold_earnstring账户持仓盈亏
5hold_listarray账户持仓明细
5.1hold_list[x].codestring账户持仓证券列表
5.2hold_list[x].namestring持仓证券名
5.3hold_list[x].hold_volstring持仓数量
5.4hold_list[x].hold_volstring持仓数量
5.5hold_list[x].usable_volstring可用数量
5.6hold_list[x].usable_volstring可用数量
5.7hold_list[x].day_earnstring当日盈亏
5.8hold_list[x].hold_earnstring持仓盈亏

返回示例:

{
  "code": "0",
  "message": "",
  "total": "501527.77",
  "usable": "422977.27",
  "day_earn": "16325.27",
  "hold_earn": "18273.22",
  "hold_list": [
    {
      "code": "128079",
      "name": "英联转债",
      "hold_vol": "0",
      "usable_vol": "0",
      "hold_earn": "12242.69",
      "day_earn": "12242.32"
    },
    {
      "code": "111013",
      "name": "新港转债",
      "hold_vol": "0",
      "usable_vol": "0",
      "hold_earn": "-560.93",
      "day_earn": "-560.96"
    }
  ]
}

Copy

查询交易信息

接口地址:

http://xx.xx.x.xx:xxxx/check_order?&token=<token>&ticket=<交易凭证>

Copy

接口参数:

#参数名类型描述
1tokenstringjvQuant token
2ticketstring交易凭证ticket

接口返回:

#参数名类型描述
1messagestring错误信息
2listarray交易明细列表
2.1list[x].order_idstring委托编号
2.2list[x].order_idday委托日期
2.3list[x].timestring委托时间
2.4list[x].codestring委托证券代码
2.5list[x].namestring委托证券名
2.6list[x].typestring委托类型
2.7list[x].statusstring委托状态
2.8list[x].order_pricestring委托价格
2.9list[x].order_volumestring委托数量
2.10list[x].deal_pricestring成交价格
2.11list[x].deal_volumestring成交数量

返回示例:

{
  "code": "0",
  "message": "",
  "list": [
    {
      "order_id": "1334564",
      "day": "20180402",
      "time": "142423",
      "code": "110074",
      "name": "精达转债",
      "type": "证券卖出",
      "status": "已成",
      "order_price": "151.885",
      "order_volume": "8000",
      "deal_price": "151.927",
      "deal_volume": "8000"
    }
  ]
}

Copy

委托报单

接口地址:

http://xx.xx.x.xx:xxxx/<trade>?&token=<token>&ticket=<交易凭证>&code=<证券代码>&name=<证券名称>&price=<委托价格>&volume=<委托数量>

Copy

接口参数:

#参数名类型描述
1tradestring买入(buy)或卖出(sale)
2tokenstringjvQuant token
3ticketstring交易凭证ticket
4codestring证券代码
5namestring证券名称
6pricefloat委托价格
7volumeint委托数量

接口返回:

#参数名类型描述
1messagestring错误信息
2order_idstring委托编号

返回示例:

{
  "code": "0",
  "message": "",
  "order_id":"4362316"
}

Copy

撤销报单

接口地址:

http://xx.xx.x.xx:xxxx/cancel?&token=<token>&ticket=<交易凭证>&order_id=<委托编号>

Copy

接口参数:

#参数名类型描述
1tokenstringjvQuant token
2ticketstring交易凭证ticket
3order_idstring委托编号

接口返回:

#参数名类型描述
1codestring返回状态码
2messagestring错误信息

返回示例:

{
  "code": "0",
  "message": "",
  "order_id":"4362316"
}

Copy

在线测试

历史行情

jvQuant提供2008创立至今的历史股票行情数据,包含沪深主板、科创板、创业板,股票日内行情。

下载地址

http://jvquant.com/query/history?&token=<token>&year=<数据年份>

Copy

股票数据查询

jvQuant提供包含沪深主板、科创板、创业板在内的申万二级行业分类信息查询,以及沪深可转债对应正股查询。

数据随交易所最新发布实时更新。可用作选股和大盘行情趋势跟踪依据。

行业分类查询

数据按申万发布的二级行业分类信息进行聚合,返回全部行业所属证券代码及名称。

可用于行业细分筛选。

接口地址:

http://jvquant.com/query/industry?&token=<token>

Copy

可转债正股查询

数据按交易所发布的可转债最新信息,返回全部可转债代码以及对应正股代码。

可用于可转债趋势预判。

接口地址:

http://jvquant.com/query/bond?&token=<token>

Copy

计费标准

行情

行情订阅采用按天计费方式,一个自然天内只计费一次。

行情报价如下:

#行情类别单价描述
1leve12分订阅level1行情 单价
2leve22毛订阅level2行情 单价

交易

交易API采用按量计费方式,个人账户单次报单最高限额100万,机构账户按合同规则计费。

交易接口报价如下:

#类别单价描述
1查询持仓信息2分查询持仓 单价
2查询交易信息2分查询交易 单价
3委托买入2毛买入报单 单价
4委托卖出2毛卖出报单 单价
5撤销委托2毛撤销委托 单价
6登录柜台5毛登录柜台 单价

历史数据

历史数据采用按次计费方式,按年份划分压缩包,下载一次数据包单价为20元

历史数据报价如下:

#年份单价描述
12008~至今20元/年每一年数据价格

股票信息

股票信息数据采用按次计费方式,一般日内调用一次,保存配置在本地查询即可。

股票信息数据报价如下:

#类别单价描述
1申万二级行业分类信息免费单次调用价格
2沪深可转债信息免费单次调用价格

积分明细

为保护您的隐私安全,jvQuant不会记录您的调用明细,只提供当日调用聚合统计。

请留意您的调用记录,避免产生对账偏差。

行情

行情账单出账期为5s,按行情类别进行聚合统计。

日内新增订阅code产生一次计费操作,请前往账户主页关注订阅统计。

交易

交易账单出账期为1min,按交易接口类别进行聚合统计。

新增API调用产生一次计费操作,请前往账户主页关注调用统计。

行情接入示例

PYTHON

#!python3
# -*- coding:utf-8 -*-
import time
import websocket
import zlib


# 发送订阅
def on_open(ws):
    ws.send("all=lv2_600519,lv1_000001")


# 接收推送
def on_message(ws, message, type, flag):
    # 命令返回文本消息
    if type == websocket.ABNF.OPCODE_TEXT:
        print(time.strftime('%H:%M:%S', time.localtime(time.time())), "Text响应:", message)
        print(time.strftime('%H:%M:%S', time.localtime(time.time())), "Text响应:", message)
    # 行情推送压缩二进制消息,在此解压缩
    if type == websocket.ABNF.OPCODE_BINARY:
        rb = zlib.decompress(message, -zlib.MAX_WBITS)
        print(time.strftime('%H:%M:%S', time.localtime(time.time())), "Binary响应:", rb.decode("utf-8"))


def on_error(ws, error):
    print(error)


def on_close(ws, code, msg):
    print(time.strftime('%H:%M:%S', time.localtime(time.time())), "连接已断开")


wsUrl = "ws://<服务器地址>?token=<jvQuant token>"
ws = websocket.WebSocketApp(wsUrl,
                            on_open=on_open,
                            on_data=on_message,
                            on_error=on_error,
                            on_close=on_close)
ws.run_forever()

Copy

GOLANG

package main

import (
	"bytes"
	"compress/flate"
	"github.com/gorilla/websocket"
	"log"
	"time"
)

func main() {
	//连接地址
	wsUrl := "ws://<服务器地址>?token=<jvQuant token>"
	conn, _, err := websocket.DefaultDialer.Dial(wsUrl, nil)
	if err != nil {
		log.Fatalln("连接错误:", err)
	}
	//接收协程
	go func() {
		receive(conn)
	}()

	//发送订阅
	cmd := "all=lv2_600519,lv1_000001"
	err = conn.WriteMessage(websocket.TextMessage, []byte(cmd))
	if err != nil {
		log.Fatalln("发送指令错误:", err)
	}
	log.Println("发送指令成功,等待接收")
	for {
		time.Sleep(time.Second)
	}
}

func receive(conn *websocket.Conn) {
	for {
		//阻塞接收
		messageType, rb, err := conn.ReadMessage()
		if err != nil {
			log.Fatalln("接收错误:", err)
			return
		}
		//文本消息
		if messageType == websocket.TextMessage {
			log.Println("Text响应:", string(rb))
		}
		//二进制消息
		if messageType == websocket.BinaryMessage {
			unZipByte := DeCompress(rb)
			log.Println("Binary推送:", string(unZipByte))
		}
	}
}

//解压方法
func DeCompress(b []byte) []byte {
	var buffer bytes.Buffer
	buffer.Write([]byte(b))
	reader := flate.NewReader(&buffer)
	var result bytes.Buffer
	result.ReadFrom(reader)
	reader.Close()
	return result.Bytes()
}

Copy

PHP

<?php

//需安装swoole扩展
use Swoole\Coroutine\Http\Client;
use function Swoole\Coroutine\run;

run(function () {
    //服务器地址
    $host = '<服务器地址>';
    //服务器端口
    $port = <服务器端口>;

    //连接
    $conn = new Client($host, $port);
    $conn->upgrade("/?token=<jvQuant token>");

    //发送订阅
    $conn->push("add=lv2_600519,lv1_000001");

    //开启接收协程
    go("receive", $conn);
});

function receive($client)
{
    while (true) {
        $data = $client->recv();
        $time = date("H:i:s");
        //解压
        @$zipStr = gzinflate($data->data);
        if ($zipStr) {
            echo "{$time} Binary推送:{$zipStr}\n";
        } else {
            echo "{$time} Text响应:{$data->data}\n";
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值