微信公众号:AlgoPlus
欢迎关注点赞转发收藏!
您的认可是我们最大的动力!
将AlgoPlus设为星标,及时获取最新研究成果!

提交申请

看穿式认证申请,除了提交个人信息之外,还需要提交以下信息:

1、接入模式。直连还是中继?如果交易相关指令从客户端先被发送到服务端,然后再被转发至期货公司交易前置,这种模式属于中继。没有负责中转的服务端,则属于直连模式。一般情况,自己开发自己使用的基本都属于直连模式。具体属于哪种模式,请以期货公司判定为准。

2、AppID,是你给自己的程序起的名字。格式为:client_不超过10个字符的名字_不超过8个字符的版本号,例如:client_pikachu_1.0。

申请通过后,你会得到一枚授权码,这是期货公司的通行口令。每次接入时都需要同时提供名字和口令,并且与系统留底匹配上才允许进行后续操作,否则后果很严重!什么严重的后果?被拒之门外。

除了授权码,期货公司还会给你用于测试的服务器地址和仿真账号(有期货公司让你自己注册)。新注册账号,一般都需要修改密码之后才能正常交易。如果还不习惯使用API,可以到期货公司官网下载仿真交易客户端修改。我们会给出使用API修改密码的例子。

仿真交易

有些期货公司要求较少,有些期货公司要求则比较多。下面的例子是按照最多的要求情况编写的。安装AlgoPlus后,运行这个范例,将对应结果截图发给期货公司,一定能通过认证。

另外需要提醒大家的是,仿真行情与模拟行情不同,大家可以先通过仿真客户端找到比较活跃的行情进行测试,以免因没有行情导致无法完成仿真交易。

文件目录:

\AlgoPlus\exemplification\8客户端认证\req_authenticate.py

源代码:*

# -*- coding: utf-8 -*-from AlgoPlus.CTP.TraderApi import TraderApi
from AlgoPlus.CTP.ApiStruct import *
import timeclass TraderEngine(TraderApi):def __init__(self, td_server, broker_id, investor_id, password, app_id, auth_code, md_queue=None, page_dir='', private_resume_type=2, public_resume_type=2):self.order_ref = 0self.Join()# 撤单def withdraw(self, exchange_ID, instrument_id, order_ref, order_sysid=''):pOrderAction = InputOrderActionField(BrokerID=self.broker_id,InvestorID=self.investor_id,UserID=self.investor_id,ExchangeID=exchange_ID,ActionFlag="0",InstrumentID=instrument_id,FrontID=self.front_id,SessionID=self.session_id,OrderSysID=order_sysid,OrderRef=str(order_ref),)l_retVal = self.ReqOrderAction(pOrderAction)# 报单def insert_order(self, exchange_ID, instrument_id, order_price, order_vol, order_ref, direction, offset_flag):pBuyOpen = InputOrderField(BrokerID=self.broker_id,InvestorID=self.investor_id,ExchangeID=exchange_ID,InstrumentID=instrument_id,UserID=self.investor_id,OrderPriceType="2",Direction=direction,CombOffsetFlag=offset_flag,CombHedgeFlag="1",LimitPrice=order_price,VolumeTotalOriginal=order_vol,TimeCondition="3",VolumeCondition="1",MinVolume=1,ContingentCondition="1",StopPrice=0,ForceCloseReason="0",IsAutoSuspend=0,OrderRef=str(order_ref),)l_retVal = self.ReqOrderInsert(pBuyOpen)# 买开仓def buy_open(self, exchange_ID, instrument_id, order_price, order_vol, order_ref):self.insert_order(exchange_ID, instrument_id, order_price, order_vol, order_ref, '0', '0')# 卖开仓def sell_open(self, exchange_ID, instrument_id, order_price, order_vol, order_ref):self.insert_order(exchange_ID, instrument_id, order_price, order_vol, order_ref, '1', '0')# 买平仓def buy_close(self, exchange_ID, instrument_id, order_price, order_vol, order_ref):if exchange_ID == "SHFE" or exchange_ID == "INE":self.insert_order(exchange_ID, instrument_id, order_price, order_vol, order_ref, '0', '3')else:self.insert_order(exchange_ID, instrument_id, order_price, order_vol, order_ref, '0', '1')# 卖平仓def sell_close(self, exchange_ID, instrument_id, order_price, order_vol, order_ref):if exchange_ID == "SHFE" or exchange_ID == "INE":self.insert_order(exchange_ID, instrument_id, order_price, order_vol, order_ref, '1', '3')else:self.insert_order(exchange_ID, instrument_id, order_price, order_vol, order_ref, '1', '1')def Join(self):while True:if self.status >= 0:# ############################################################################# ## 确认结算单req_settlement_infoConfirm = SettlementInfoConfirmField(BrokerID=self.broker_id,InvestorID=self.investor_id)self.ReqSettlementInfoConfirm(req_settlement_infoConfirm)self._write_log(f"=>发出确认结算单请求!")time.sleep(3)# ############################################################################# ## 连续5次买开 - 卖平ikk = 0while ikk < 5:ikk += 1self.order_ref += 1self.buy_open(test_exchange_id, test_instrument_id, test_raise_limited, test_vol, self.order_ref)self._write_log(f"=>{ikk}=>发出涨停买开仓请求!")time.sleep(1)# 跌停卖平仓self.order_ref += 1self.sell_close(test_exchange_id, test_instrument_id, test_fall_limited, test_vol, self.order_ref)self._write_log(f"=>发出跌停卖平仓请求!")# ############################################################################# ## 连续5次卖开 - 买平ikk = 0while ikk < 5:# 跌停卖开仓self.order_ref += 1self.sell_open(test_exchange_id, test_instrument_id, test_fall_limited, test_vol, self.order_ref)self._write_log(f"=>{ikk}=>发出跌停卖平仓请求!")time.sleep(1)# 涨停买平仓self.order_ref += 1self.buy_close(test_exchange_id, test_instrument_id, test_raise_limited, test_vol, self.order_ref)self._write_log(f"=>发出涨停买平仓请求!")ikk += 1# ############################################################################# ## 买开 - 撤单self.order_ref += 1self.buy_open(test_exchange_id, test_instrument_id, test_fall_limited, test_vol, self.order_ref)self._write_log(f"=>发出涨停买开仓请求!")time.sleep(1)# 撤单self.withdraw(test_exchange_id, test_instrument_id, self.order_ref)self._write_log(f"=>发出撤单请求!")# ############################################################################# ## 卖开 - 撤单self.order_ref += 1self.sell_open(test_exchange_id, test_instrument_id, test_raise_limited, test_vol, self.order_ref)self._write_log(f"=>发出跌停卖平仓请求!")time.sleep(1)# 撤单self.withdraw(test_exchange_id, test_instrument_id, self.order_ref)self._write_log(f"=>发出撤单请求!")# ############################################################################# ## 查询订单qry_order_field = QryOrderField(BrokerID=self.broker_id,InvestorID=self.investor_id)self.ReqQryOrder(qry_order_field)self._write_log(f"=>发出查询订单请求!")time.sleep(3)# ############################################################################# ## 查询资金qry_trading_account_field = QryTradingAccountField(BrokerID=self.broker_id,AccountID=self.investor_id,CurrencyID="CNY",BizType="1")self.ReqQryTradingAccount(qry_trading_account_field)self._write_log(f"=>发出查询资金请求!")time.sleep(3)# ############################################################################# ## 查询成交qry_trade_field = QryTradeField(BrokerID=self.broker_id,InvestorID=self.investor_id)self.ReqQryTrade(qry_trade_field)self._write_log(f"=>发出查询成交请求!")time.sleep(3)# ############################################################################# ## 查询持仓qry_investor_position_field = QryInvestorPositionField(BrokerID=self.broker_id,InvestorID=self.investor_id)self.ReqQryInvestorPosition(qry_investor_position_field)self._write_log(f"=>发出查询持仓请求!")# ############################################################################# ## 查询资金qry_trading_account_field = QryTradingAccountField(BrokerID=self.broker_id,AccountID=self.investor_id,CurrencyID="CNY",BizType="1")self.ReqQryTradingAccount(qry_trading_account_field)self._write_log(f"=>发出查询资金请求!")time.sleep(3)# ############################################################################# #print("老爷,看穿式监管认证仿真交易已经完成!请截图联系期货公司!")breaktime.sleep(1)# ############################################################################# #
# 请在这里填写需要测试的合约数据
# 警告:该例子只支持上期所品种平今仓测试
test_exchange_id = 'SHFE'  # 交易所
test_instrument_id = 'rb2001'  # 合约代码
test_raise_limited = 3708  # 涨停板
test_fall_limited = 3159  # 跌停板
test_vol = 1  # 报单手数if __name__ == "__main__":import syssys.path.append("..")from account_info import my_future_account_info_dictfuture_account = my_future_account_info_dict['SimNow24']ctp_trader = TraderEngine(future_account.server_dict['TDServer'], future_account.broker_id, future_account.investor_id, future_account.password, future_account.app_id, future_account.auth_code, None, future_account.td_page_dir)

说明:

1、account_info请参考《《AlgoPlus使用手册》之全天候模拟测试》。

2、在仿真客户端软件选择活跃的品种设置196-200行参数。

《AlgoPlus使用手册》之看穿式监管认证相关推荐

  1. 期货穿透式监管实质(期货看穿式监管)

    期货量化交易编程怎么弄 1.CTP,从程序化接入CTP同时支持四大交易所,并且性能优越. 2.穿透式监管,所谓穿透式监管是对比之前的非穿透式监管,所有的接口都要采用新的标准,即官方公布的穿透式监管AP ...

  2. 《AlgoPlus使用手册》之全天候模拟测试

    微信公众号AlgoPlus 您的认可是我们最大的动力! 欢迎关注.点赞.转发.收藏! 将AlgoPlus设为星标,及时获取最新研究成果! 注册Simnow模拟账号 1.Simnow是上海期货交易所旗下 ...

  3. ubuntu期货穿透式监管相关信息查看

    经期货市场监控中心反馈,您在我司报备使用的第三方外部交易终端软件在生产环境中不满足看穿式监管要求.无法采集到您的私网IP1. 或 但是无法采集到您的硬盘序列号等其他序列号信息. 如何定位问题呢? 提供 ...

  4. 什么是穿透式监管,需要投资者做什么?

    一. 背景 详细背景可以参考证监会<关于进一步加强期货经营机构客户交易终端信息采集有关事项的公告>及期货市场监控中心<期货公司客户交易终端信息采集及接入认证技术规范>这两篇公告 ...

  5. 期货外接看穿式技术方面问答总结

    看穿式外部接入问答 一:APPID.授权码及终端系统标识 1.附件 2 中申请表里的 APPID 是否由客户填写?有什么注意事项? 答:APPID 由软件开发人员自行编写: 注意事项: (1).App ...

  6. PHP链接ctp接口,CTP接口穿透式监管升级后对外接入地址变更,适用SIMNOW 模拟账户...

    关于SIMNOW老账户穿透式监管接入授权码和APPID 下周SIMNOW升级到看穿式后,老账户统一APPID为simnow_client_test,认证码为0000000000000000(16个0) ...

  7. 简单介绍VNPY 1.9.2版本支持看穿式终端的流程

    我使用VNPY 1.9.2版本,因为监管要求,需要支持看穿式终端,这里说说实现流程.2.0版本还没有试过,不太确定,仅做参考. 首先感谢vnpy及时更新. 可以去GITHUB https://gith ...

  8. CTP穿透式监管怎么实现代码, 穿透测试API

    做量化交易的朋友都支持,2019年6月要开始实行穿透式监管了, 老的代码可能不再能够接入,那么如何将老的CTP程序实现升级到穿透式监管呢?本文就讲一下修改的方法. (1)先替换为最新的CTP api ...

  9. VirtualApi (ctp回测神器穿透式监管版本)Ver2.4发布

    http://www.virtualapi.cn 2019年6月14日开始实行穿透式监管了, CTP也升级了版本,本次VirtualApi的更新就是增加了对CTP穿透式新版本的支持. Ver2.4 提 ...

最新文章

  1. Dubbo 云原生之路:ASF 毕业一周年、3.0 可期
  2. 系统的MAC地址修改
  3. C/C++ 数据类型
  4. 宏信建发IT信息部门-大数据-HR面试
  5. .NET 云原生架构师训练营(设计原则设计模式)--学习笔记
  6. C# XML字符串与DataTable相互转换
  7. 【设计模式】设计模式C++编程实现之观察者模式(ObserverPattern)
  8. pyqt5 判断lineedit是否为空_是否注意过 isEmpty 和 isBlank 区别?
  9. Safe Or Unsafe(hdu2527)哈弗曼VS优先队列
  10. portal认证 只能重定向80和443请求_华为防火墙内置Portal认证报文交互
  11. 手把手教你强化学习 (六) 强化学习中的无模型预测
  12. 26个数据分析案例——第三站:基于python的药店销售数据分析
  13. 对于三极管饱和状态的一些浅见——与网友的讨论贴
  14. linux dstat rpm,dstat监控工具介绍
  15. 数据中心远程集中解决方案有哪些?
  16. 从冰雪盛会的幕后赛场,看数字建设者如何保障大型赛事
  17. Android Activity 启动模式详解
  18. au6989sn-gtd_GTD和OmniFocus 2-我的工作流程
  19. 长尾关键词-长尾关键词挖掘工具-长尾关键词优化排名软件
  20. 竞争优势究竟是什么?

热门文章

  1. 问题 1498: [蓝桥杯][算法提高VIP]凶手(C++)
  2. sweetalert2中ajax用法,Sweetalert2 Ajax - 发布输入数据(Sweetalert2 Ajax - post input data)
  3. MySQL数据库用户管理
  4. 需要谈谈的游戏测试(五)
  5. 台北智慧城市 打世界杯 目标Smart city整厂输出
  6. 理解Linux内存性能指标
  7. 9.|Palindrome Number
  8. C/C++线性表的实现
  9. 蒟蒻の小窝(快速幂)
  10. Java设计模式之简单工厂设计模式