CTP 4097错误根源 / CTP程序运行没有反应/CTP版本说明

2023-11-01

其实这本是个很简单的错误,但经常看到有人问到,而且网上居然还出了玄学解答,所以干脆单独写一篇解释一下这个错误。

这一篇文章同样适用于解决为什么没有OnFrontConnected回调,Decrypt handshake data failed,8193等错误。如果是运行没有反应,请直接看2.原因排查。

1. 出处

目前在dll底层代码中,如果检测到与CTP前置网络断开时会有一段代码

printf("CThostFtdcUserApiImplBase::OnSessionDisconnected ...

输出这个错误,并且回调到API的spi函数OnFrontDisconnected。所以在写策略时,如果在spi中的OnFrontDisconnected函数里面打印nReason这个函数参数,遇到网络断开,就会输出这个4097。如下:

其实在API头文件中也早就写明了,在OnFrontDisconnected前面有:

///@param nReason 错误原因
///        0x1001 网络读失败
///        0x1002 网络写失败
///        0x2001 接收心跳超时
///        0x2002 发送心跳失败
///        0x2003 收到错误报文

0x表示是16进制,0x1001转成十进制即是4097,0x2001转成十进制即是8193。

2. 原因排查

1)核对版本

目前CTP要求API版本和后台版本一致才能有正确的onfrontconnected回调。

版本不对会不停地回调OnFrontDisconnected,或者输出Decrypt handshake data failed,或者没有任何反应。

所以先检查API版本是否正确,可以调用函数GetApiVersion输出当前API版本,示例如下。

python:

print(f"CTP API version = {api.CThostFtdcTraderApi_GetApiVersion()}")

c++

cout<<"CTP API Version: "<<CThostFtdcTraderApi::GetApiVersion()<<endl;

V6.3.X的API可以访问6.3.X~6.6.X及其以上的CTP后台系统,但无法支持大商所长合约期权组合,无法支持IPv6;

V6.5.X、V6.6.X的API只能访问6.5.X及其以上的CTP后台系统,支持大商所长合约期权组合,支持IPv6;

注意:6.6.1API引入的新函数只有在接入6.6.1及以上后台的时候才会有响应,接入6.5.0时无响应。

目前期货公司正式生产基本是v6.5.1_20200908版本,以上三个系列版本都可以连上,注意要用名字带P的版本才能连上。

simnow同样是V6.5.X系列版本,所以以上三个系列版本都可以连上,注意要用名字带P的版本才能连上。

期货公司评测使用v6.3.13,v6.3.16或 v6.3.19_T1_20200423版本(这三个都可以)。

2)核对网络

确保版本无误的话那基本就是网络问题了。先检查交易前置网是否畅通,建议使用telnet,不要使用ping(因为服务端有可能会禁ping)。如下:

telnet 180.168.146.187 10100

如果telnet没有反应,要么是你自己后台的前置地址搞错(请去看QQ群里公告地址)了,要么说明CTP后台服务器没有启动(此时正常环境多数是因为没在交易时段,可以切到7*24小时环境测试

如果地址没有搞错,正常生产上,生产时间是不会出现这样的问题的,但simnow因为用户很多,有时会导致前置拥堵,就会出现这样的问题。另外simnow 7*24小时地址也不是很稳定,常出现这样的问题。

另外如果是非交易时段(交易时段参见文章《一个获取最新期货品种交易时间的小脚本》),那后台服务确实有可能没开。这时可以切到simnow模拟的7*24小时环境测试。

如果连接的simnow前置地址出现这样的问题,可以切换到其他两组模拟地址试一下,如果还不行,那只能去群里问下客服是否连接不上了,等待修复了,没有其他方案。

 

欢迎关注公众号,一起学习程序化交易!

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CTP 4097错误根源 / CTP程序运行没有反应/CTP版本说明 的相关文章

  • STM32F103时钟配置流程

    一般情况下单片机的时钟配置是单片机程序中的第一步 也是很重要的一步 这时候我们需要考虑以下几个问题 1 系统时钟的时钟源用哪个 2 系统时钟频率要多少 3 每个模块的时钟频率要多少 4 如果外部时钟出了问题 这个时候时钟是怎么运行的 下面就
  • 特征工程——归一化处理不适用情况

    哪些机器学习算法不需要做归一化 Normalization 处理 概率模型不需要归一化 因为它们不关心变量的值 而是关心变量的分布和变量之间的条件概率 如决策树 随机森林rf 而像AdaBoost svm Ir KNN KMeans之类的最
  • C++ 模板模板参数

    C 模板模板参数 1 模板模板参数 C 模板的使用一共有以下几种情况 函数模板 类模板 模板参数 成员模板 而本篇介绍模板模板参数 模板参数就是模板的参数 我们一般指定为T类型 实际上可以使用任何的名字 例如指定一个Foo的模板参数 tem
  • 元宇宙浪潮震撼来袭,抓住时机,齐心协力

    互联网诞生至今 世界已与网络互联共生 Z世代 1995 2009年间出生的一代人 对互联网的依赖不同于前辈 他们不再局限于视觉 听觉的网络传播互动 也不仅是通过互联网把视觉 听觉 嗅觉 味觉 触觉相结合 而是互联网的原住民 他们的大部分生活
  • 微信小程序上传头像和昵称持久化保存

    微信小程序上传头像和昵称持久化保存 1 持久化步骤 因为通过微信头像昵称填写功能获取到头像是一个临时头像 这个url只能一段时间内在微信访问 并且无法在公网访问这个url 所以非常有必要把这个url转成我么实际可用的头像到数据库中 让头像持
  • 弹性布局一排为三个时,在循环中最后一排异常

    解决

随机推荐

  • 单件模板

    ifndef FILE HELPER H define FILE HELPER H class FileHelper public FileHelper FileHelper static FileHelper getInstance st
  • redis 网络模型全面解密

    导言 在目前的技术选型中 Redis 俨然已经成为了系统高性能缓存方案的事实标准 因此现在 Redis 也成为了后端开发的基本技能树之一 Redis 的底层原理也顺理成章地成为了必须学习的知识 Redis 从本质上来讲是一个网络服务器 而对
  • 【经典】zheng项目搭建

    一 项目简介 17年初就接触了zheng这个项目 感觉挺牛的 看他的架构图就知道了 现在都已经18年了 时间好快 特此记录下zheng的环境搭建 虽然 先看下码云上zheng的简介吧 https gitee com shuzheng zhe
  • C# 获取namespace的方法

    获取当前class的namespace this GetType Namespace
  • QT_PCAN

    利用Qt做PCAN的二次开发 https www qter org portal php mod view aid 5472 Qt Using PeakCAN Plugin https doc qt io qt 5 qtserialbus
  • AVR单片机使用printf的方法

    1 开发环境 开发平台 ICCAVR 7 22 AVR单片机型号 ATMEGA64 仿真平台 protues7 模拟串口软件 Launch Virtual Serial Port Driver Pro 2 程序编写 要想在AVR单片机中使用
  • Python Pool类多进程 apply_async 异步变成了阻塞解决方法

    出错代码 if name main ip arr get ip list pool Pool processes 4 for temp in ip arr res pool apply async check ip temp get if
  • Linux 查看进程和线程CPU和内存占用情况

    文章目录 Linux 查看进程有哪些线程 Linux 查看程序内存占用情况 top和free等命令 Linux 查看进程 线程数量 Linux 查看进程有哪些线程 linux 下查看进程内的线程有哪些 首先通过进程名称 假设为SensorD
  • c 编程 常犯的错误,隐藏性很高,而且很致命

    1 申请内存 1 1 内存大小错误 比如 申请一块存放8个unsigned int 数据的内存空间 错误 malloc 8 正确 malloc 8 sizeof unsigned int 注解 malloc申请内存 是以字节为单位的 所以当
  • 结构体定义和使用

    收获一 结构体的定义和使用 struct stu char name 姓名 int num 学号 char sex 性别 float score 成绩 struct stu stu1 stu2 stu 就像一个 模板 定义出来的变量都具有相
  • 使用openssl的md5库

    在linux机器上 有一个命令可以计算出文件的md5值 那就是md5sum 如果没有的话 就需要安装RPM包 coreutils 现在我们使用openssl的库也可以方便的计算出文件的md5值 主要用到的函数是 int MD5 Init M
  • 【单片机】【数码管】数码管显示

    1 数码管的显示器及其接口 单片机系统中 常用的显示器有 发光二极管LED显示器 液晶LCD显示器 TFT液晶显示器 本文主要是关于LED显示器的说明 LED显示器有两种显示结构 段显示 7段 米字型等 和点阵显示 5x8 8x8点阵等 L
  • 成功解决 ProxyError: Conda cannot proceed due to an error in your proxy configuration

    welcome to my blog 希望对大家有帮助 给win10的ubuntu1804安装anaconda 执行conda create n daily python 3 7创建虚拟环境时报错 Collecting package me
  • 计算机网络:HTTP(应用层)

    目录 1 HTTP 基本概述 2 HTTP 的操作过程 3 HTTP 的特点 4 HTTP 的报文结构 5 HTTPS 1 HTTP 基本概述 HTTP是Hyper Text Transfer Protocol 超文本传输协议 的缩写 HT
  • 在React项目中使用Redux实现计数器功能

    Redux 和 React 之间没有关系 Redux 支持 React Angular Ember jQuery 甚至纯 JavaScript 尽管如此 Redux 还是和 React 和 Deku 这类库搭配起来用最好 因为这类库允许你以
  • prompt范式

    1 范式发展历程 P1 非神经网络时代的完全监督学习 Fully Supervised Learning Non Neural Network 特征工程 P2 基于神经网络的完全监督学习 Fully Supervised Learning
  • 转置卷积(Transposed Convolution)

    目录 1 卷积操作及转置卷积的定义 1 1 卷积操作 1 2 转置卷积 1 3 转置卷积的步骤 2 转置卷积的理解 2 1 stride 1转置卷积的理解 2 1 1 一维形式 2 1 2 二维形式 2 1 3 公式计算 2 2 strid
  • 泛型使用时遇到的bug

    首先说 这次的bug理解起来很简单 就是泛型被使用时 泛型的类一定要被引用 前提说明 我建了一个保存预下单数据的接口 然后提供一个查询接口 我就想 每次查出来就是json 那每次都要代码里解析 太重复 为什么不做成泛型 查询时候把类型传入
  • 华农oj数据结构——8581

    8581 线性链表逆置 时间限制 1000MS 代码长度限制 10KB 提交次数 2811 通过次数 2032 题型 编程题 语言 G GCC Description 线性链表的基本操作如下 include
  • CTP 4097错误根源 / CTP程序运行没有反应/CTP版本说明

    其实这本是个很简单的错误 但经常看到有人问到 而且网上居然还出了玄学解答 所以干脆单独写一篇解释一下这个错误 这一篇文章同样适用于解决为什么没有OnFrontConnected回调 Decrypt handshake data failed