# ctp_access **Repository Path**: pseudocodes/ctp_access ## Basic Information - **Project Name**: ctp_access - **Description**: 用于CTP行情与交易的客户端向外提供服务(http/dapr)。实现一个高性能HTTP异步IO的服务器和集成相应的api。主要创新点为将CTP的异步请求与响应变为HTTP的单个API内的同步请求与响应 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-17 - **Last Updated**: 2025-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CTP-Access ## 介绍 用于CTP行情与交易的客户端向外提供服务(http api)。实现一个高性能HTTP异步IO的服务器和集成相应的api。主要创新点为将CTP的异步请求与响应变为HTTP的单个API内的同步请求与响应。 ## Docker中开发 ### 镜像 Goland启动一个Docker开发环境 镜像地址: - noquant/ctp_access:valgrind-cargoconfig-gitstore-rust1.54.0-etcprofile-ctpenv-nqbot-ctpaccesslib-nettools 该镜像安装有: - rust-1.53.0-nightly - cargoconfig(清华源) - valgrind - vim - 动态链接库已经软连接到/usr/lib - ln -s /ctp_access/src/rust_ctp_client/libthostmduserapi_se.so /usr/lib - ln -s /ctp_access/src/rust_ctp_client/librustmdclient.so /usr/lib - ln -s /ctp_access/src/rust_ctp_client/libthosttraderapi_se.so /usr/lib - ln -s /ctp_access/src/rust_ctp_client/librusttdclient.so /usr/lib ### 挂载准备 - 挂载: 当前项目文件夹 —> Docker中的/ctp_access ### Docker中cargo配置git依赖 - ~/.cargo/config加入配置 ``` [net] git-fetch-with-cli = true ``` - ~/.gitconfig加入配置 ``` [credential] helper = store ``` - git clone一个任意仓库,输入用户名密码就会被记录,cargo build就可以使用 - cargo build ## 可配置环境变量 ## 配置环境变量 #### 日志设定溢出Level的环境变量 - RUST_LOG=error - 面对程序crash前一秒情况,输出crash前一秒的错误信息 - 面对程序不crash的情况, 其他部件出错,导致本程序状态的错误,帮助告警 - RUST_LOG=warn - 面对程序不常见的情况,输出if-else的不常用分支的日志,作为提醒 - RUST_LOG=info - 面对没出现bug情况,输出日常运维程序基本状态的日志 - 面对日常运维情况,输出程序的关键信息,生命周期,状态 - RUST_LOG=debug - 面对开发调试情况,更细的用日志 - 面对修复bug情况,更细的日志 - RUST_LOG=trace - 面对需要跟踪进程,线程,函数级别 #### Simnow 新环境,正常交易日时间 - CTP_MARKET_FRONT_ADDR=tcp://180.168.146.187:10212 - CTP_TRADE_FRONT_ADDR=tcp://180.168.146.187:10202 - CTP_USER_ID=142909 - CTP_USER_PASSWORD=qq632386504 - CTP_BROKER_ID=9999 - CTP_APP_ID=simnow_client_test - CTP_AUTH_CODE=0000000000000000 - CTP_USER_PRODUCT_INFO=rust_ctp - CTP_SUB_INSTRUMENT_LIST=au2112 #### Simnow 7X24环境, 交易日,16:00~次日09:00;非交易日,16:00~次日15:00 - CTP_MARKET_FRONT_ADDR=tcp://180.168.146.187:10131 - CTP_TRADE_FRONT_ADDR=tcp://180.168.146.187:10130 - CTP_USER_ID=142909 - CTP_USER_PASSWORD=qq632386504 - CTP_BROKER_ID=9999 - CTP_APP_ID=simnow_client_test - CTP_AUTH_CODE=0000000000000000 - CTP_USER_PRODUCT_INFO=rust_ctp - CTP_SUB_INSTRUMENT_LIST=au2112,ag2112 #### Docker RUN - docker运行命令 ``` docker run -d -it --name ctp_access -p 5000:5000 -v /home/amax/testdapruntime/octopus/ctp_access:/ctp_access noquant/ctp_access:valgrind-cargoconfig-gitstore-rust1.54.0-etcprofile-ctpenv-nqbot-ctpaccesslib-nettools ``` - 根据Simnow开盘时间/非开盘时间更改环境变量CTP_MARKET_FRONT_ADDR与CTP_TRADE_FRONT_ADDR ```vim /root/.bashrc``` - 最后加载环境变量 ```source /root/.bashrc``` ## Postman测试 1. 根目录的CTP_access.postman_collection.json文件导入postman 2. 配置postman的环境变量{{ip}}为可访问Docker容器的主机ip ## VScode 使用SFTP远程开发 ### 安装SFTP 1.15.6版本 1. 然后ctrl + alt + p选择SFTP插件 2. 远程服务器创建接收代码文件的文件夹(/root/ctp_access), 配置以下远程服务器信息到插件参数json列表并保存 3. 右键目标文件并且选择Upload菜单,即可上次代码文件到服务器 ``` { "name": "gpu01", "host": "192.168.136.28", "protocol": "sftp", "port": 2200, "username": "root", "password": "123456", "remotePath": "/root/ctp_access", "uploadOnSave": true, "useTempFile": false, "openSsh": false } ```