当前位置: 首页 > news >正文

JAVA接入WebScoket行情接口

Java脚好用的库很多,开发效率一点不输Python。如果是日内策略,需要更实时的行情数据,不然策略滑点太大,容易跑偏结果。

之前爬行情网站提供的level1行情接口,实测平均更新延迟达到了6秒,超过10只股票并发请求频率过快很容易封IP。后面又尝试了买代理IP来请求,成本太高而且不稳定。

在Github上看到一个行情包,对接的是WebSocket协议,找到了一个Java版本封装的包,记录一下:

package com.client;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.ByteBuffer;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.Inflater;
import java.util.zip.DataFormatException;public class Client extends WebSocketClient {SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");public Client(String url) throws URISyntaxException {super(new URI(url));}@Overridepublic void onOpen(ServerHandshake shake) {//发送订阅命令this.send("add=lv1_600519,lv2_600519");}/*** 命令返回文本消息*/@Overridepublic void onMessage(String paramString) {System.out.println(sdf.format(new Date()) + " Text响应:" + paramString);}@Overridepublic void onClose(int paramInt, String paramString, boolean paramBoolean) {System.out.println("连接关闭");}@Overridepublic void onError(Exception e) {System.out.println("连接异常" + e);}/*** 行情接收处理*/@Overridepublic void onMessage(ByteBuffer bytes) {super.onMessage(bytes);String s="";try {//二进制解压缩byte[] dec=decompress(bytes.array());s = new String(dec, "UTF-8");}catch (IOException e){System.err.println("Binary解析IO异常:"+e.getMessage());return;}catch (DataFormatException e){System.err.println("Binary解析格式异常:"+e.getMessage());return;}System.out.println(sdf.format(new Date()) + " Binary响应:" + s);}/*** 解压缩方法*/public static byte[] decompress(byte[] compressedData) throws DataFormatException {Inflater inflater = new Inflater(true);inflater.setInput(compressedData);ByteArrayOutputStream outputStream = new ByteArrayOutputStream(compressedData.length);byte[] buffer = new byte[1024];while (!inflater.finished()) {int count = inflater.inflate(buffer);outputStream.write(buffer, 0, count);}inflater.end();return outputStream.toByteArray();}
}

使用:

package com.client;import java.net.URISyntaxException;public class Main {public static void main(String[] args) throws URISyntaxException {String wsUrl = "ws://<服务器地址>?token=<token>";Client fd = new Client(wsUrl);fd.connect();}
}

引用地址:https://github.com/freevolunteer/bondTrader/blob/main/pyscript/jvUtil/HanqQing.py

订阅指令参考:JAVA量化之WebScoket行情接入

http://www.lryc.cn/news/486014.html

相关文章:

  • 使用Axios函数库进行网络请求的使用指南
  • Vue2+ElementUI:用计算属性实现搜索框功能
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!
  • spring-cache concurrentHashMap 自定义过期时间
  • 解析传统及深度学习目标检测方法的原理与具体应用之道
  • shell数组
  • 高斯混合模型回归(Gaussian Mixture Model Regression,GMM回归)
  • 【3D Slicer】的小白入门使用指南八
  • 【流量分析】常见webshell流量分析
  • 基于树莓派的边缘端 AI 目标检测、目标跟踪、姿态估计 视频分析推理 加速方案:Hailo with ultralytics YOLOv8 YOLOv11
  • Java在算法竞赛中的常用方法
  • Vulnhub靶场案例渗透[10]- Momentum2
  • Spark RDD中常用聚合算子源码层面的对比分析
  • 计算机网络 (6)物理层的基本概念
  • 快速上手:Docker 安装详细教程(适用于 Windows、macOS、Linux)
  • kafka消费者出现频繁Rebalance
  • rk3399开发环境使用Android 10初体验蓝牙功能
  • ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定
  • 将自定义函数添加到MATLAB搜索路径的方法
  • 云原生之运维监控实践-使用Telegraf、Prometheus与Grafana实现对InfluxDB服务的监测
  • 什么是MySQL,有什么特点
  • 初始化mysql5.7
  • C# 字典应用
  • CDH安装与配置及相关大数据组件实践
  • fastapi 调用ollama之下的sqlcoder模式进行对话操作数据库
  • YOLO系列基础(六)YOLOv1原理详解,清晰明了!
  • LeetCode100之环形链表(141)--Java
  • 【ict基础软件赛道】真题-50%openEuler
  • <AI 学习> 下载 Stable Diffusions via Windows OS
  • 计算机图形学在游戏开发中的应用