Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 Python QuickFIX 通过 Stunnel 连接 FIX 服务器_创想鸟

使用 Python QuickFIX 通过 Stunnel 连接 FIX 服务器

使用 python quickfix 通过 stunnel 连接 fix 服务器

本文档旨在指导开发者如何使用 Python QuickFIX 库通过 Stunnel 建立安全的 FIX (Financial Information eXchange) 连接。我们将详细介绍 Stunnel 的配置、QuickFIX 的设置,以及如何调试可能出现的问题,确保 FIX 消息能够安全可靠地传输。

Stunnel 配置

Stunnel 是一个通用的 TLS/SSL 加密隧道程序,可以用于为不支持 SSL 的客户端和服务端提供安全的加密连接。以下是一个 Stunnel 客户端配置文件的示例,用于连接到 FIX 服务器:

CAfile=./Roots.crtcert=./cert.pfxclient=yesverify=1sslVersion = TLSv1.2options = NO_SSLv2options = NO_SSLv3debug=7foreground=yesoutput=./stunnel.log[SESSION]accept=8080connect=EXAMPLE_URL:EXAMPLE_IP

配置参数说明:

CAfile: CA 证书文件路径,用于验证服务器证书。cert: 客户端证书和私钥文件路径。client: 设置为 yes 表示 Stunnel 作为客户端运行。verify: 设置为 1 启用证书验证。sslVersion: 指定 TLS 版本。建议使用 TLSv1.2 或更高版本。options: 禁用不安全的 SSL 协议版本。debug: 设置调试级别。7 为最高级别,会输出详细的日志信息。foreground: 使 Stunnel 在前台运行,方便查看日志。output: 指定日志文件路径。accept: Stunnel 监听的本地端口。connect: FIX 服务器的地址和端口。

注意事项:

立即学习“Python免费学习笔记(深入)”;

确保证书文件 (Roots.crt, cert.pfx) 的权限设置正确,避免权限过大导致安全风险。使用 checkHost 或 checkIP 选项来限制信任的证书,防止中间人攻击。

QuickFIX 配置

QuickFIX 是一个开源的 FIX 协议引擎,提供多种编程语言的 API。以下是一个 QuickFIX Initiator 配置文件的示例:

[DEFAULT]ConnectionType=initiatorLogonTimeout=10ReconnectInterval=30FileLogPath=./Logs/[SESSION]BeginString=FIXT.1.1DefaultApplVerID=9SenderCompID=EXAMPLE_COMP_SENDERTargetCompID=EXAMPLE_COMP_TARGETStartTime=00:00:00EndTime=00:00:00HeartBtInt=30CheckLatency=NMaxLatency=240SocketConnectPort=8080SocketConnectHost=127.0.0.1UseDataDictionary=YTransportDataDictionary=./FIX50SP2.xmlFileStorePath=./Sessions/

配置参数说明:

ConnectionType: 设置为 initiator 表示 QuickFIX 作为 Initiator (客户端) 运行。LogonTimeout: 登录超时时间,单位为秒。ReconnectInterval: 重连间隔时间,单位为秒。FileLogPath: 日志文件路径。BeginString: FIX 协议版本。FIXT.1.1 表示 FIXT 1.1 协议。DefaultApplVerID: 应用消息版本。9 对应 FIX 5.0 SP2。SenderCompID: 发送方机构 ID。TargetCompID: 目标机构 ID。StartTime: 会话开始时间。EndTime: 会话结束时间。HeartBtInt: 心跳间隔时间,单位为秒。CheckLatency: 是否检查延迟。MaxLatency: 最大延迟时间,单位为秒。SocketConnectPort: 连接的本地 Stunnel 端口 (与 Stunnel 配置中的 accept 端口一致)。SocketConnectHost: 连接的本地 Stunnel 地址 (通常为 127.0.0.1)。UseDataDictionary: 是否使用数据字典。TransportDataDictionary: 数据字典文件路径。FileStorePath: 会话数据存储路径。

Python 代码示例:

import quickfix as fixclass Application(fix.Application):    def onCreate(self, sessionID):        print("onCreate : Session (%s)" % sessionID.toString())    def onLogon(self, sessionID):        self.sessionID = sessionID        print("Successful Logon to session '%s'." % sessionID.toString())    def onLogout(self, sessionID):        print("onLogout")    def toAdmin(self, sessionID, message):        print("toAdmin")    def fromAdmin(self, sessionID, message):        print("fromAdmin")    def toApp(self, sessionID, message):        print("Recieved the following message: %s" % message.toString())    def fromApp(self, message, sessionID):        print("fromApp")config_file = "./initiator.cfg"settings = fix.SessionSettings(config_file)application = Application()storeFactory = fix.FileStoreFactory(settings)logFactory = fix.FileLogFactory(settings)initiator = fix.SocketInitiator(application, storeFactory, settings, logFactory)initiator.start()

代码说明:

Application 类继承自 fix.Application,用于处理 FIX 消息的回调函数。SessionSettings 从配置文件中加载会话设置。FileStoreFactory 和 FileLogFactory 分别用于创建消息存储和日志记录对象。SocketInitiator 创建一个 Socket Initiator 对象,用于建立 FIX 连接。initiator.start() 启动 Initiator,开始尝试连接到 FIX 服务器。

调试

如果在连接过程中遇到问题,可以按照以下步骤进行调试:

检查 Stunnel 日志: Stunnel 日志文件 (stunnel.log) 包含了详细的连接信息,可以帮助你诊断 SSL/TLS 连接问题。检查 QuickFIX 日志: QuickFIX 日志文件包含了 FIX 消息的发送和接收记录,可以帮助你诊断 FIX 协议问题。设置 Stunnel 调试级别: 将 Stunnel 配置文件的 debug 选项设置为 7 可以输出更详细的日志信息。使用 Wireshark 抓包: 使用 Wireshark 可以抓取网络数据包,分析 SSL/TLS 握手过程和 FIX 消息内容。

常见问题及解决方法:

Stunnel 连接断开: 检查 Stunnel 配置是否正确,证书是否有效,以及服务器地址和端口是否可达。查看 Stunnel 日志,确认是否有错误信息。QuickFIX 无法登录: 检查 QuickFIX 配置是否正确,SenderCompID 和 TargetCompID 是否匹配,以及数据字典文件是否正确。查看 QuickFIX 日志,确认是否有登录失败的错误信息。心跳超时: 检查 QuickFIX 配置中的 HeartBtInt 参数是否合理,以及网络连接是否稳定。

发送心跳请求

QuickFIX 会自动处理心跳消息。如果需要手动发送心跳请求,可以在 Application 类中添加以下代码:

import timedef onLogon(self, sessionID):    self.sessionID = sessionID    print("Successful Logon to session '%s'." % sessionID.toString())    # 定时发送心跳请求    while True:        time.sleep(self.heartbeat_interval)        try:            fix.Session.sendHeartbeat(sessionID)            print("Heartbeat sent")        except fix.SessionNotFound:            print("Session not found, stopping heartbeat")            break

注意事项:

立即学习“Python免费学习笔记(深入)”;

确保 self.heartbeat_interval 的值与 QuickFIX 配置中的 HeartBtInt 参数一致。在实际应用中,应该使用线程或定时器来发送心跳请求,避免阻塞主线程。

总结

通过本文档的指导,你应该能够成功地使用 Python QuickFIX 库通过 Stunnel 建立安全的 FIX 连接。记住,仔细检查配置、查看日志,并使用调试工具可以帮助你解决连接过程中遇到的问题。

以上就是使用 Python QuickFIX 通过 Stunnel 连接 FIX 服务器的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1374738.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在Python中为Excel文件的每个工作表添加列名
上一篇 2025年12月14日 14:24:58
Python Pygame:访问其他目录下的音频文件
下一篇 2025年12月14日 14:25:07

相关推荐

  • 夸克浏览器加载图片很慢是什么问题_夸克浏览器图片加载慢原因

    图片加载慢可能因网络、省流模式、缓存、安全设置或版本问题导致。1、检查Wi-Fi或移动网络连接,切换至信号更强的5G或稳定Wi-Fi;2、关闭夸克浏览器“省流加速”功能以避免图片压缩;3、清理“缓存文件”和“图片与文件”释放存储空间;4、暂时禁用广告拦截或安全过滤功能排除误判干扰;5、更新夸克浏览器…

    2026年9月21日
    000
  • win10剪贴板历史记录打不开怎么办_win10剪贴板历史问题解决方法

    首先检查并开启剪贴板历史记录功能,依次进入设置-系统-剪贴板,启用“剪贴板历史记录”;若无效,通过任务管理器重启Windows资源管理器;接着在服务中确认“Clipboard User Service”已启动且设为自动;然后以管理员身份运行CMD执行echo off | clip清空缓存并重启电脑;…

    2026年9月21日
    100
  • 探探App如何更新应用版本_探探App应用版本更新教程及自动升级设置

    打开App Store点击更新标签,找到探探并手动点击更新;2. 开启自动更新需进入设置-App Store,打开自动下载的App更新开关;3. 搜索探探查看是否显示“更新”以确认版本状态。 探探App更新很简单,无论是手动升级还是设置自动更新,都能快速用上最新版本。下面告诉你具体怎么操作。 手动更…

    2026年9月21日
    000
  • 如何用Animoto制作AI营销视频?快速生成商业AI视频的教程

    如何用Animoto制作AI营销视频?快速生成商业AI视频的教程如何用Animoto制作AI营销视频?快速生成商业AI视频的教程如何用Animoto制作AI营销视频?快速生成商业AI视频的教程如何用Animoto制作AI营销视频?快速生成商业AI视频的教程

    Animoto通过模板与拖放功能,结合AI生成的文案和配音,帮助用户快速制作品牌统一、节奏合理、带明确CTA的高效营销视频,适用于多平台推广。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ Animoto是一个非常适合快速制作AI营销视频的…

    2026年9月21日 • 用户投稿
    000
  • 使用本地HTML文件运行JavaScript脚本失败的原因及解决方案

    本文旨在帮助开发者理解在没有Web服务器的情况下,直接通过浏览器打开本地HTML文件时,JavaScript脚本可能无法正常运行的原因,并提供相应的解决方案。文章将深入探讨浏览器安全策略、相对路径问题以及如何正确引入和执行JavaScript脚本,确保你的HTML、CSS和JavaScript代码能…

    2026年9月21日
    000
  • mac怎么使用磁盘工具_mac磁盘工具使用教程

    使用磁盘工具可解决Mac外接存储问题。1. 打开磁盘工具,选择设备后点击“急救”扫描修复错误;2. 通过“抹掉”功能将设备格式化为APFS或Mac OS扩展以提升兼容性;3. 利用“分区”功能划分硬盘为多个宗卷,便于数据管理;4. 创建空白磁盘映像用于备份,或恢复.dmg文件至U盘制作启动盘。 如果…

    2026年9月21日
    100
  • 番茄免费小说怎么用QQ登录_番茄免费小说QQ登录教程

    首先通过登录界面点击“QQ登录”授权进入,或在账号设置中绑定QQ;若已绑定手机号,则需输入验证码完成验证,最后确认授权即可成功登录。 如果您希望在番茄免费小说中使用QQ账号进行登录,但找不到正确的操作入口或遇到授权问题,可以按照以下方法尝试。这些步骤能帮助您完成账号关联和登录流程。 本文运行环境:小…

    2026年9月21日
    200
  • VSCode怎么看效果_VSCode实时预览和调试代码运行效果教程

    VSCode通过实时预览扩展和内置调试器实现代码效果查看。使用Live Server可实时预览前端页面,保存即刷新;Markdown文件支持侧边预览。调试功能需配置launch.json,支持Node.js、Python、浏览器端JavaScript等,通过断点、变量监视、调用堆栈等深入分析代码执行…

    2026年9月21日
    000
  • 抖音青少年模式时间限制?青少年模式40分钟后多久介绍

    短视频平台在青少年群体中日益受到欢迎。作为国内领先的短视频平台,抖音为了保护青少年的身心健康,推出了青少年模式。本文将围绕青少年模式的时间限制展开探讨,分析其对青少年健康成长的意义,并思考如何打造一个绿色的网络环境。 一、抖音青少年模式时间限制的价值 1. 防止沉迷于短视频 通过设置使用时长限制,抖…

    2026年9月21日
    200
  • PHP一键环境如何配置URL重写_URL Rewrite规则设置

    开启Apache的mod_rewrite模块并配置AllowOverride All,再在.htaccess中添加重写规则,即可实现URL重写,使URL更简洁利于SEO。 在使用PHP一键环境(如XAMPP、WAMP、phpStudy等)时,开启URL重写(URL Rewrite)功能可以让网站的U…

    2026年9月21日
    100
  • 使用正则表达式检测字符串中的除零操作

    本文详细介绍了如何使用正则表达式精确检测字符串中潜在的除零操作。针对表达式中可能存在的变量引用(如<>)、数字、多余空格以及禁止包含引号等复杂情况,文章提供了一个高效的正则表达式模式,并深入解析其构成原理。通过具体的Java代码示例,读者将学习如何将此模式应用于实际编程场景,从而有效识别…

    2026年9月21日
    000
  • iPhone14首次使用时应禁用的几项功能

    哪些功能在新机设置时建议关闭? 1. “定位服务” 启用定位服务后,各类应用可获取您的实时位置,虽然有助于导航或本地推荐,但也可能造成位置信息被滥用。若重视个人隐私,建议进入设置关闭该权限,限制应用对地理位置的访问。 2. “后台应用刷新” 此功能使应用程序在未打开时也能在后台获取最新内容,提升使用…

    2026年9月21日
    000
  • MySQL常见错误码代表什么_如何快速定位问题?

    MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?

    遇到mysql错误码应先明确错误类型再逐步排查。error 1045表示用户名、密码或访问权限问题,需检查拼写、ip限制和远程访问权限;error 2003表示连接失败,需依次检查服务器状态、mysql服务运行情况、防火墙设置及bind-address配置;error 1054表示sql语句中引用了…

    2026年9月21日 • 用户投稿
    100
  • AI钉钉1.0联动雅里数科 共探“酒旅+AI”的工作新范式

    在数字化浪潮席卷全球的当下,人工智能正以前所未有的速度重塑各行各业,酒旅产业也正在迎来由ai驱动的深刻变革。10月11日,阿里巴巴钉钉再度走进雅里数科集团,开启一场关于“酒旅行业ai原生工作方式”的深度对话。此次交流标志着双方合作迈入全新阶段,致力于共同探索ai原生工作范式,引领酒旅行业迈向智能化发…

    2026年9月21日
    100
  • 如何检测Linux网络接口DMA状态 硬件加速功能验证

    如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证如何检测Linux网络接口DMA状态 硬件加速功能验证

    可通过以下方法检测linux系统中网络接口dma状态和硬件加速是否启用:1.使用 ethtool -i eth0 和 ethtool -k eth0 查看驱动信息及sg、tso、ufo、gso功能是否启用;2.通过 cat /proc/interrupts 和 cat /proc/slabinfo …

    2026年9月21日 • 用户投稿
    800
  • win11系统占用C盘空间过大怎么办_Win11清理C盘空间方法

    首先使用磁盘清理工具删除系统文件,包括旧更新和临时安装文件;接着启用存储感知功能自动定期清理临时文件与回收站;然后手动清除用户临时文件夹(%temp%)中的缓存数据;最后更改新应用和个人文件的默认保存位置至非C盘分区,以释放并节省C盘空间。 如果您发现Windows 11系统文件占用了C盘大量空间,…

    2026年9月21日
    100
  • 如何从被调用类中获取调用者文件的命名空间

    本文探讨了在PHP中,如何在不通过参数传递的情况下,从一个被调用的工具类中获取到调用该方法的文件的命名空间。通过结合使用`debug_backtrace()`回溯调用栈以定位调用者文件,并利用`token_get_all()`解析文件内容来提取命名空间声明,提供了一种实用的解决方案。文章详细介绍了实…

    2026年9月21日
    000
  • 构建Spring自定义Kafka配置的注解式解决方案

    本文探讨了在Spring Boot应用中通过自定义注解实现Kafka配置自动化时遇到的挑战,特别是由于Bean注册时机不当导致的依赖注入失败。我们将深入分析问题根源,并提供两种核心解决方案:利用META-INF/spring.factories实现标准化的自动配置发现,以及通过ImportBeanD…

    2026年9月21日
    1100
  • 悟空浏览器开发者工具的控制台怎么用_悟空浏览器Console控制台使用入门教程

    首先启用悟空浏览器开发者工具并进入Console标签,可查看错误、警告等日志信息,通过过滤功能定位问题;支持执行JavaScript代码实时调试,监控网络请求失败及全局异常,还可清空或保存日志以便分析。 如果您在使用悟空浏览器进行网页开发或调试时,发现页面元素未按预期工作或脚本报错,则可以借助开发者…

    2026年9月21日
    700
  • 美团外卖节日优惠券领取入口_美团节日活动优惠券获取方法

    节日期间可通过美团外卖首页“膨胀红包”、搜索品牌关键词、参与“神抢手”秒杀、邀请好友助力及关注官方社交媒体口令等五种方法领取优惠券,具体包括完成任务积累红包、领取0元饮品券、抢购低价商品券、获取大额免单券和兑换口令红包。 如果您在节日期间准备通过美团外卖订餐,但未能找到可用的优惠券入口,则可能是由于…

    2026年9月21日
    100

发表回复

登录后才能评论
关注微信