小白一枚如有问题欢迎交流可以加我微信:y1906891715 备注:ctp使用交流

基本流程

1.获取基于python的CTP API版本

github: https://github.com/nicai0609/
来自大神的封装:是Windows 64位平台下利用Swig工具将CTP C++接口trader API转换为python可调用的接口

2.注册虚拟账号进行联系

可以下载simnow快期新一代 这个期货交易软件是基于ctp
下载地址: http://www.simnow.com.cn/static/softwareOthersDownload.action
然后注册一个账号就可以模拟期货交易一开始有十万的虚拟金额(别亏完了哈哈哈一个账号只能用一次)

3.下载ctp api的说明文档

说明文档百度云分享
链接:https://pan.baidu.com/s/1dg2Yo4HhUtx2tAwZXJC4Lg
提取码:rloc
说明文档是基于c++的原生接口说明,主要的使用方法可以参考它

4.调用api实现基本的交易操作

实现查账户结算示例

# -*- coding: utf-8 -*-
import thosttraderapi as api
import timeclass CTradeSpi(api.CThostFtdcTraderSpi):tapi=''def __init__(self,tapi):api.CThostFtdcTraderSpi.__init__(self)self.tapi=tapidef OnFrontConnected(self):print ("OnFrontConnected")#time.sleep( 60 )loginfield = api.CThostFtdcReqUserLoginField()loginfield.BrokerID="9999"loginfield.UserID="*******" 填写自己账号loginfield.Password="********"填写自己账号的密码loginfield.UserProductInfo="python dll"self.tapi.ReqUserLogin(loginfield,0)print ("send login ok")def OnRspUserLogin(self, *args):print ("OnRspUserLogin")rsploginfield=args[0]rspinfofield=args[1]msg=args[2]print ("SessionID=",rsploginfield.SessionID)print ("ErrorID=",rspinfofield.ErrorID)print ("ErrorMsg=",rspinfofield.ErrorMsg.encode("utf-8",errors='surrogateescape').decode('gbk'))qryinfofield = api.CThostFtdcQrySettlementInfoField()qryinfofield.BrokerID="9999"qryinfofield.InvestorID="*****"填写自己的账号self.tapi.ReqQrySettlementInfo(qryinfofield,0)print ("send ReqQrySettlementInfo ok")#ReqorderfieldInsert(self.tapi)def OnRspQrySettlementInfo(self, *args):print ("OnRspQrySettlementInfo")pSettlementInfo=args[0]print ("content:",pSettlementInfo.Content.encode("utf-8",errors='surrogateescape').decode('gbk'))def OnRtnOrder(self, *args):print ("OnRtnOrder")rtnfield=args[0]print ("OrderStatus=",rtnfield.OrderStatus)print ("StatusMsg=",rtnfield.StatusMsg.encode("utf-8",errors='surrogateescape').decode('gbk'))print ("LimitPrice=",rtnfield.LimitPrice)def OnRspOrderInsert(self, *args):print ("OnRspOrderInsert")rspinfofield=args[1]print ("ErrorID=",rspinfofield.ErrorID)print ("ErrorMsg=",rspinfofield.ErrorMsg.encode("utf-8",errors='surrogateescape').decode('gbk'))def main():tradeapi=api.CThostFtdcTraderApi_CreateFtdcTraderApi()tradespi=CTradeSpi(tradeapi)#去simnon快期新一代的官网网址可以获取地址tradeapi.RegisterFront("tcp://180.168.146.187:10001")tradeapi.RegisterSpi(tradespi)tradeapi.SubscribePrivateTopic(api.THOST_TERT_RESUME)tradeapi.SubscribePublicTopic(api.THOST_TERT_RESUME)tradeapi.Init()tradeapi.Join()if __name__ == '__main__':main()

实现下单操作

下多单空单平单都一样具体就是参数不同
平单的话ctp分平今天单和平昨天单

# -*- coding: utf-8 -*-
import thosttraderapi as api
import time
a=""
#下单函数
def ReqorderfieldInsert(tradeapi):print("ReqOrderInsert Start")orderfield = api.CThostFtdcInputOrderField()orderfield.BrokerID = "9999"orderfield.InstrumentID = "rb1905"orderfield.UserID = "********"账号orderfield.InvestorID = "*******"账号#开买单orderfield.Direction = api.THOST_FTDC_D_Buy#下单限价单价格orderfield.LimitPrice = 4130orderfield.VolumeTotalOriginal = 1orderfield.OrderPriceType = api.THOST_FTDC_OPT_LimitPriceorderfield.ContingentCondition = api.THOST_FTDC_CC_Immediatelyorderfield.TimeCondition = api.THOST_FTDC_TC_GFDorderfield.VolumeCondition = api.THOST_FTDC_VC_AVorderfield.CombHedgeFlag = "1"#开平标志    '0'开单  '1'平昨单  '3' 平今单orderfield.CombOffsetFlag = "0"orderfield.GTDDate = ""orderfield.orderfieldRef = "1"orderfield.MinVolume = 0orderfield.ForceCloseReason = api.THOST_FTDC_FCC_NotForceCloseorderfield.IsAutoSuspend = 0tradeapi.ReqOrderInsert(orderfield, 0)print("ReqOrderInsert End")
#撤单
def ReqOrderfieldAction(tradeapi,z,f):orderfield = api.CThostFtdcInputOrderActionField()orderfield.BrokerID = "9999"orderfield.InstrumentID = "rb1905"orderfield.UserID = "******"orderfield.InvestorID='*******'orderfield.OrderSysID=zorderfield.ExchangeID=forderfield.ActionFlag=api.THOST_FTDC_AF_Deletetradeapi.ReqOrderAction(orderfield,1)print("撤单")class CTradeSpi(api.CThostFtdcTraderSpi):tapi = ''def __init__(self, tapi):api.CThostFtdcTraderSpi.__init__(self)self.tapi = tapidef OnFrontConnected(self):print("OnFrontConnected")# time.sleep( 60 )loginfield = api.CThostFtdcReqUserLoginField()loginfield.BrokerID = "9999"loginfield.UserID = "*******"自己账号loginfield.Password = "********"自己账号的密码loginfield.UserProductInfo = "python dll"self.tapi.ReqUserLogin(loginfield, 0)print("send login ok")def OnRspUserLogin(self, *args):print("OnRspUserLogin")rsploginfield = args[0]rspinfofield = args[1]msg = args[2]print("SessionID=", rsploginfield.SessionID)print("ErrorID=", rspinfofield.ErrorID)print("ErrorMsg=", rspinfofield.ErrorMsg.encode("utf-8", errors='surrogateescape').decode('gbk'))#下单ReqorderfieldInsert(self.tapi)#qry=api.CThostFtdcQryOrderField()#qry.ExchangeID='SHFE'#qry.BrokerID = "9999"#qry.InvestorID = "******"自己账号#self.tapi.ReqQryOrder(qry,1)# qryinfofield = api.CThostFtdcQryTradingAccountField()# qryinfofield.BrokerID = "9999"# qryinfofield.InvestorID = "******"自己账号# self.tapi.ReqQryTradingAccount(qryinfofield, 1)#查询报单响应def OnRspQryOrder(self, pOrder, pRspInfo, nRequestID, bIsLast):what=pOrderprint(what.OrderStatus,what.ExchangeID,what.OrderSysID)#撤掉为成交的订单if what.OrderStatus=='3':ReqOrderfieldAction(self.tapi,what.OrderSysID,what.ExchangeID)def OnRtnOrder(self, *args):print("OnRtnOrder")rtnfield = args[0]print("OrderStatus=", rtnfield.OrderStatus)print("StatusMsg=", rtnfield.StatusMsg.encode("utf-8", errors='surrogateescape').decode('gbk'))print("LimitPrice=", rtnfield.LimitPrice)print("报单编号",rtnfield.OrderSysID)def OnRspOrderInsert(self, *args):print("OnRspOrderInsert")rspinfofield = args[1]print("ErrorID=", rspinfofield.ErrorID)print("ErrorMsg=", rspinfofield.ErrorMsg.encode("utf-8", errors='surrogateescape').decode('gbk'))def main():tradeapi = api.CThostFtdcTraderApi_CreateFtdcTraderApi()tradespi = CTradeSpi(tradeapi)tradeapi.RegisterFront("tcp://180.168.146.187:10001")tradeapi.RegisterSpi(tradespi)tradeapi.SubscribePrivateTopic(api.THOST_TERT_RESUME)tradeapi.SubscribePublicTopic(api.THOST_TERT_RESUME)tradeapi.Init()tradeapi.Join()if __name__ == '__main__':main()

python 调用 CTP API 进行下多单 下空单 平单 撤单 操作相关推荐

  1. 用Python调用OpenAI API做有趣的事

    获取 API KEY 首先需要 可以开全局的梯子,选择日本或韩国节点,可以通过 ipinfo 检查当前 IP 地址是否为日本或韩国地区,然后访问 OpenAI 网站注册账号并完成认证. 如果自己完成账 ...

  2. python调用lib_基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  3. 用Python调用OpenAI API进行文本创作

    文章目录 一.前言 二.使用教程 2.1获取API密钥 2.2 连接API 2.3 文本生成 三.创作示例 3.1 诗歌创作 3.2 推荐书单 3.3 超级百度 四.总结 一.前言 本文将教大家用py ...

  4. Python调用WPS API

    Python调用WPS API 完整文档 最佳实践 WPS 在对于Office或WPS的操作场景中,最适合的其实是Pywin32的方式,因为这种方式可以直接调度由原厂商开放的API,目前我们的场景中最 ...

  5. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  6. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

  7. python电脑怎么打开任务管理器_利用Python调用Windows API,实现任务管理器功能

    任务管理器具体功能有: 1. 列出系统当前所有进程. 2. 列出隶属于该进程的所有线程. 3. 如果进程有窗口,可以显示和隐藏窗口. 4. 强行结束指定进程. 通过Python调用Windows AP ...

  8. 使用Python调用Flickr API抓取图片数据

    Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...

  9. 利用Python调用Windows API,实现任务管理器功能

    任务管理器具体功能有: 1. 列出系统当前所有进程. 2. 列出隶属于该进程的所有线程. 3. 如果进程有窗口,可以显示和隐藏窗口. 4. 强行结束指定进程. 通过Python调用Windows AP ...

最新文章

  1. Linux之 手动释放内存
  2. php当前栏目位置,thinkphp获取栏目和文章当前位置的方法,_PHP教程
  3. Git bash:初步入门(1)
  4. java web随机抽取_java实现随机抽取奖品工具类
  5. 链接分析算法系列-机器学习排序
  6. python程序 爱意_程序员式优雅表白,教你用python代码画爱心
  7. Java入门到精通——基础篇之static关键字
  8. 艺术创意灵感地---集设网 | 人体彩绘的张力
  9. SAP License:SAP权限原理与授权对象
  10. win7计算机右键直接有设备管理器等相关,为什么我的计算机点击右键后里头没有设备管理器了?windows7旗舰版的,不知怎么就不见了...
  11. MSchart控件在Win7 64位操作系统上的注册方法
  12. JAVA中ResourceBundle使用详解
  13. fiddler和wireshark对比
  14. 互联网的起源发展历史
  15. 业务流程规范的战争兴起:XPDL、BPEL、BPDM
  16. Linux系统更改时区
  17. 苹果m1可以虚拟服务器,苹果M1芯片可以运行ARM版win10 但需要利用虚拟机
  18. 安全多方计算之六:秘密共享
  19. git switch 与 git checkout的不同
  20. android:很抱歉,XXX已停止运行

热门文章

  1. Python学习FAQ
  2. 【算法刷题日记之本手篇】星际密码与数根
  3. Chef 环境的安装及使用
  4. 你知道项目为啥会失败么?就是因为你们产品看了这本书。
  5. mysql decimal
  6. 10位管理学大师及其核心重要思想
  7. 2021年宣传部第一次ps培训总结
  8. typeof与keyof
  9. 人工智能画画 yyds
  10. 今日头条起诉今日油条!后者还注册了“饼多多”和“快手抓饼”