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

注册Simnow模拟账号

1、Simnow是上海期货交易所旗下技术公司维护的一套模拟交易系统,只需注册账号即可免费使用:http://www.simnow.com.cn/

2、在常用下载页面下载客户端,方便实时查看模拟交易情况:http://www.simnow.com.cn/static/softwareDownload.action

3、记录个人主页中的InvestrorID,以及产品与服务页面中的服务器地址。配置账户参数时需要使用这些信息。

另外,如果偶遇simnow官网无法登录的情况,在AlgoPlus公众号回复simnow,可获取服务器相关参数。

安装AlgoPlus

好交易不求甚解安装法:

  • pip install命令安装:
pip install AlgoPlus
  • easy_install命令安装:
easy_install AlgoPlus

Windows系统编译安装

1、安装Visual Studio 2019

微软官网地址:https://visualstudio.microsoft.com/zh-hans/downloads/

6.65GB!如果对VS没有其他需求,建议选择在线安装。

2、下载AlgoPlus

码云(推荐):https://gitee.com/AlgoPlus/AlgoPlus

GitHub(慢):https://github.com/CTPPlus/AlgoPlus

3、在Windows系统安装

① 解压AlgoPlus

② 双击运行\AlgoPlus\tools\ctp\install_ctp.bat

如果你看到了:

Traceback (most recent call last):File "setup.py", line 7, in <module>from Cython.Build import cythonize, build_ext
ModuleNotFoundError: No module named 'Cython'
Traceback (most recent call last):File "setup.py", line 7, in <module>from Cython.Build import cythonize, build_ext
ModuleNotFoundError: No module named 'Cython'

我好像也发现了什么。好吧,请执行以下代码安装Cython后,再次运行安装脚本:

conda install Cython

当你看到以下内容时:

Processing dependencies for AlgoPlus==1.5
Finished processing dependencies for AlgoPlus==1.5
请按任意键继续. . .

恭喜你!你已成为AlgoPlus的一员了!让我们一起将交易进行到底!

如果幸运女神再次眷顾了你,给了我们再次深入交流的机会,那还等什么,房间都开好了(http://www.ctp.plus)。

安装代码编辑器

我推荐使用PyCharm。

官网地址
https://www.jetbrains.com/pycharm/download/#section=windows

Community版与Professional版有什么区别呢?能省不少钱呐。

安装

根据提示完成安装,遇到Installation Options时,勾选以下选项:

为AlgoPlus项目配置解释器

1、找到解压后的AlgoPlus文件夹,鼠标右键单击根目录空白处;

2、单击菜单中【Open Folder as Project】选项;

3、在新窗口单击File菜单中的【Settings…】选项;

4、找到【Project: AlgoPlus】下的【Project Interpreter】,选择python解释器环境;

5、单击【Apply】。

print hello world!

作为“程序员”,不把hello world打印出来怎么能彰显bigger呢。瞧,代码我都准备好了,就是这么贴心!

1、在AlgoPlus项目中打开\exemplification\1环境配置与安装\hello world.py;

2、鼠标右键单击文件内任意位置;

3、单击新菜单中的【Run ‘hello world’】。

配置账户参数

存放目录:

\AlgoPlus\exemplification\6报单(买卖开平)及回报\account_info.py

源代码:

# -*- coding: utf-8 -*-BASE_LOCATION = "."  # 根目录地址
MD_LOCATION = BASE_LOCATION + "\\MarketData"  # 行情数据地址
TD_LOCATION = BASE_LOCATION + "\\TradingData"  # 交易数据地址
SD_LOCATION = BASE_LOCATION + "\\StrategyData"  # 策略数据地址class FutureAccountInfo:def __init__(self, broker_id, server_dict, reserve_server_dict, investor_id, password, app_id, auth_code, instrument_id_list, md_page_dir=MD_LOCATION, td_page_dir=TD_LOCATION):self.broker_id = broker_id  # 期货公司BrokerIDself.server_dict = server_dict  # 服务器地址。TDServer为交易服务器,MDServer为行情服务器。服务器地址格式为"ip:port"self.reserve_server_dict = reserve_server_dict  # 备用服务器地址self.investor_id = investor_id  # 账户self.password = password  # 密码self.app_id = app_id  # 认证使用AppIDself.auth_code = auth_code  # 认证使用授权码self.instrument_id_list = instrument_id_list  # 订阅合约列表[]self.md_page_dir = md_page_dir  # MdApi流文件存储地址,默认MD_LOCATIONself.td_page_dir = td_page_dir  # TraderApi流文件存储地址,默认TD_LOCATIONmy_future_account_info_dict = {# 交易时间测试'SimNow': FutureAccountInfo(broker_id='9999'  # 期货公司BrokerID# TDServer为交易服务器,MDServer为行情服务器。服务器地址格式为"ip:port", server_dict={'TDServer': "180.168.146.187:10100", 'MDServer': '180.168.146.187:10110'}# 备用服务器地址, reserve_server_dict={'电信1': {'TDServer': "180.168.146.187:10100", 'MDServer': '180.168.146.187:10110'},'电信2': {'TDServer': "180.168.146.187:10101", 'MDServer': '180.168.146.187:10111'},'其他1': {'TDServer': "180.168.146.187:10130", 'MDServer': '180.168.146.187:10131'},  # 7*24'其他2': {'TDServer': "218.202.237.33:10102", 'MDServer': '218.202.237.33:10112'},  # 移动}, investor_id=''  # 账户, password=''  # 密码, app_id='simnow_client_test'  # 认证使用AppID, auth_code='0000000000000000'  # 认证使用授权码# 订阅合约列表, instrument_id_list=[b'rb2001', b'ni2001', b'ag1912', b'j2001', b'TA001']),
}

说明:

1、FutureAccountInfo类定义了期货账户的所有属性;

2、my_future_account_info_dict是所有账户类的字典。使用时根据键值获取对应账户类属性。

3、MdApi实例会生成DialogRsp.con、QueryRsp.con、TradingDay.con三个流文件,存储在MD_LOCATION目录中,默认是当前目录下的MarketData文件夹。TraderApi实例会生成DialogRsp.con、Private.con、Public.con、QueryRsp.con、TradingDay.con五个流文件,存储在TD_LOCATION目录中,默认是当前目录下的TradingData文件夹。

4、实盘账户参数可从期货公司获取。

5、关于看穿式监管认证,我们会未来给大家讲解。

6、范例配置的是Simnow模拟账户。在补充账户investor_id、密码password和服务器地址server_dict(交易时间选择电信1/电信2/其他2,非交易时间选择其他1。7*24服务器在注册3个交易日后才能使用。)之后,就可以进行下一步了。

7、账户参数还可以被存储为其他形式。如果大家感兴趣,我们未来会写一个用json文件保存账户参数的例子。

运行测试文件

存放目录:

\AlgoPlus\exemplification\6报单(买卖开平)及回报\trader_engine.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 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:# ############################################################################# ## 涨停买开仓self.order_ref += 1self.buy_open(test_exchange_id, test_instrument_id, test_raise_limited, test_vol, self.order_ref)self._write_log(f"=>发出涨停买开仓请求!10秒后后进行卖平仓测试。")time.sleep(10)# 跌停卖平仓self.order_ref += 1self.sell_close(test_exchange_id, test_instrument_id, test_fall_limited, test_vol, self.order_ref)self._write_log(f"=>发出跌停卖平仓请求!10秒后进行卖开仓测试。")time.sleep(10)# ############################################################################# ## 跌停卖开仓self.order_ref += 1self.sell_open(test_exchange_id, test_instrument_id, test_fall_limited, test_vol, self.order_ref)self._write_log(f"=>发出跌停卖平仓请求!10秒后进行买平仓测试。")time.sleep(10)# 涨停买平仓self.order_ref += 1self.buy_close(test_exchange_id, test_instrument_id, test_raise_limited, test_vol, self.order_ref)self._write_log(f"=>发出涨停买平仓请求!")time.sleep(10)# ############################################################################# #print("老爷,这里的测试工作AlgoPlus已经按照您的吩咐全部完成!")print("老爷,这里的测试工作AlgoPlus已经按照您的吩咐全部完成!")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、先配置102-106行测试合约的参数。

2、测试交易的逻辑是:确认结算单完成后,先以涨停板买开仓,3秒后以跌停板卖平仓,再3秒后以跌停板卖开仓,再3秒后以涨停板买平仓。最后等待3秒退出程序。

《AlgoPlus使用手册》之全天候模拟测试相关推荐

  1. 《AlgoPlus使用手册》之看穿式监管认证

    微信公众号:AlgoPlus 欢迎关注点赞转发收藏! 您的认可是我们最大的动力! 将AlgoPlus设为星标,及时获取最新研究成果! 提交申请 看穿式认证申请,除了提交个人信息之外,还需要提交以下信息 ...

  2. 2018冬令营模拟测试赛(十八)

    2018冬令营模拟测试赛(十八) [Problem A]Table 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述&qu ...

  3. 2018冬令营模拟测试赛(九)

    2018冬令营模拟测试赛(九) [Problem A]王子 试题描述 不是所有王子都会遇见自己的中关村,主公,公主. 从前有个王子姓王,王王子遇到了一位美丽的公主,她的名字当然是公公主啦. 王王子对公 ...

  4. Mockito:一个强大的用于Java开发的模拟测试框架

    介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用Mockito的Java示例. 模拟(Mock)的概念 在软件开发的世界之外, "mock"一 ...

  5. WebRTC通话质量调优:三个弱网模拟测试工具的使用与对比

    作为一个使用 WebRTC 独立开发者或团队,怎样才能知道自己 App 的通话质量已经"达标"了呢?如何进行合理的弱网模拟测试?介绍给开发者们三个开源工具的部署.使用方法,及其各自 ...

  6. NOIP模拟测试19「count·dinner·chess」

    反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...

  7. 测试http请求的Chrome插件:Postman插件的查找安装模拟测试 - 讲解篇

    一个测试http请求的Chrome插件:Postman 本文简述一下这个Chrome插件:Postman插件的查找.下载.安装. 这里需要合法的VPN服务商,具体原因你懂的. Chrome资源查找下载 ...

  8. php代码练习,PHP模拟测试练习

    PHP模拟测试练习 宝剑不磨要生锈;人不学习要落后.以下是小编为大家搜索整理的PHP模拟测试练习,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! 一.单项选择题 1.下列哪些是PH ...

  9. 合肥信息技术职业学院计算机模拟考试准考证,【通知】全国计算机等级考试模拟测试通知...

    原标题:[通知]全国计算机等级考试模拟测试通知 全国计算机等级考试模拟测试来了 这里有小塔的秘密笔记哟 全国计算机等级考试模拟测试 1 模拟测试地点 16号教学楼2楼 2 模拟测试的安排 时间 地点 ...

最新文章

  1. 区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码
  2. ros的密码忘记解决方法
  3. 是什么管脚分配_FPGA是什么?里面有什么?能做什么?
  4. 王爽汇编第九章学习笔记
  5. IT部门如何应对VDI问题
  6. 商用平板 移动金融潜力巨大的应用平台
  7. UTF与ascii区别
  8. PHP第一天 ① 重置端口命令 netsh winsock reset
  9. 知名国产论坛,凉了!!!!
  10. 调用函数,判断一个数是否为素数
  11. 关于三极管的理解---根据IC符号简易迅速判断三极管导通情况
  12. 浏览器 文本转语音播放 Demo [SpeechSynthesis]
  13. Zookeeper(七)开源客户端
  14. 计算机系统存储器 分类,存储器的分类
  15. 企业微信周末加班怎么打卡?
  16. 逻辑函数公式化化简_数字IC面试题
  17. 为什么程序员难找对象?
  18. 计算机错误代码0X000000be,win7电脑出现蓝屏错误0x000000BE的解决方法
  19. 多商家商城系统有哪些功能
  20. 计算机上静音快捷键是什么,电脑静音快捷键是什么(如何设置电脑一键静音?)...

热门文章

  1. UBUNTU教程之菜鸟飞飞
  2. matlab自定义函数拟合散点
  3. 2021年宣传部第一次ps培训总结
  4. 关于INS-30131
  5. stamp 邮票设计 搜索02
  6. 3.7V锂电池充电详解
  7. 大数据学习之小白快速了解flume
  8. 每周推荐短视频:企业学校与用户如何参与开源生态建设?
  9. 大商创V2.7版短信接口替换
  10. Mysql数据库服务