栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

基于ctp实现期货银行自动转账

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于ctp实现期货银行自动转账

我之前练习尝试每天做日内交易的时候给风控程序加了一个功能

每天收盘后 计算账户余额,如果有盈利就转出到银行

我的风控程序是用python开发,ctp包用的是下面这个包

```shell
https://github.com/keli/ctp-python

ctp出金时间有限制,交易日早上 9:05-- 下午15:30,夜盘只能入,不能出

调用的api

很简单,直调用 ReqFromFutureToBankByFuture 接口,参数如下

req=ctp.CThostFtdcReqTransferField()
req.BankID = '银行编码'
req.BankBranchID='银行营业点编码'
req.BrokerID = self.broker_id
req.AccountID = self.investor_id
req.BankAccount = '银行卡号'
req.BankPassWord= '银行卡密码'
req.Password='期货的资金密码'
req.CurrencyID="CNY"
req.TradeAmount= money
self.api.ReqFromFutureToBankByFuture(req, self.id())

一共9个参数,只有money(类型是浮点数)是变化的,其它的都是固定值,写死在代码里面即可

BankID和BankBranchID的查询方法

BankID就是银期协议里面的银行编码,都是固定值,查一次记下来就行,用ReqQryContractBank 这个方法

req=ctp.CThostFtdcQryContractBankField()
req.BrokerID =self.broker_id
self.api.ReqQryContractBank(req, self.id())

会打印出十几家主要银行的BankID 和BankBranchID,BankBranchID基本上都是’0000’,这个查一次就够了,不会变化的

感想
  1. ctp的 接口整体就是基于c++ 虚函数的callback,业务方用起来很扭曲,导致程序要么全部用c++写,要么先用swig 来做一层binding,我在simnow的客户群里面吐槽过很多次
  2. 这么多年用下来,直观的感受是 ctp非常稳定,远超预期,基于互联网的接入,只要把参数填好就会有正确结果,而那些头部大厂,一堆年包百万的码农,写出来的服务,哪怕只是内部调用每分钟都会有超时,B圈那几家更是垃圾,websocket每天都会断
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864892.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号