@Channelchan
2018-03-30T03:29:35.000000Z
字数 7810
阅读 70129
环境安装
在安装实盘环境前请先安装好数据分析环境,安装方法见下面的链接:
https://www.zybuluo.com/Channelchan/note/1065836
点下面网址下载实盘易客户端,然后双击安装:
http://www.iguuu.com/download/e/installers/ShiPanE.exe
下载对应版本的同花顺,然后双击安装:
https://pan.baidu.com/s/1Oe4cEBP7Yl-8pazXFNnXSg
安装完成需要创建模拟账户用于实盘测试。
下面是实时运行策略需要的python包。
安装:
pip install --pre --no-binary shipane_sdk shipane_sdk
升级:
pip install --upgrade --pre --no-deps --no-binary shipane_sdk shipane_sdk
项目主页:
https://github.com/sinall/ShiPanE-Python-SDK#%E5%AE%89%E8%A3%85
安装:
pip install git+https://github.com/xingetouzi/rqalpha-mod-shipane-wrapper.git
rqalpha mod install shipane-wrapper
项目主页:
https://github.com/xingetouzi/rqalpha-mod-shipane-wrapper
Windows系统下如果没有安装 c++ compiler , 在安装该包的依赖包lru_dict时会失败。可以去下面的网站下载编译好的.whl文件直接安装,注意选择与您的系统和python环境对应的版本。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#lru_dict
安装lru_dict:
pip install path
path为下载的.whl文件的路径。
安装:
pip install git+https://github.com/xingetouzi/rqalpha-mod-fxdayu-source.git
rqalpha mod install fxdayu_source
项目主页:
https://github.com/xingetouzi/rqalpha-mod-fxdayu-source
需要一个同花顺模拟账户进行实时模拟。
打开同花顺,注册一个模拟账户并登陆:

登陆后在菜单栏点击模拟,在模拟炒股交易区选择同花顺练习区,点击

然后在弹出的窗口中选择打开委托,会进入交易登陆界面。
这里新账号的通讯密码默认为888888。

然后关闭该窗口。退回桌面,可以发现多了同花顺交易的桌面快捷方式,在接下来的操作中会用到该快捷方式,请勿删除。

实盘易安装好后,桌面会出现这样的图标:

双击打开,点击注册账号,在打开的网页中注册账号密码后输入并登陆。

选择:
工具 -> 设置 -> 基本设置
进入设置界面:

做如下设置并确认。
| 属性 | 取值 |
|---|---|
| 服务端口 | 8888 |
| 安全密钥 | shipanyi |
| 用户名 | 爱股网用户名 |
| 密码 | 爱股网账号密码 |
安全密钥可以随意取值,其作用主要是在策略连接实盘易时做验证。
选择:
工具 -> 设置 -> 交易账号
进入设置界面并点击左上角的 + 。
在此添加交易账号:
| 属性 | 说明 | 取值 |
|---|---|---|
| 名称 | 在与 shipanyi python sdk 对接时的名称 | client-1 |
| 券商 | 点击并下拉选择“模拟交易” | 模拟交易 |
| 命令行 | 见下方的命令行说明 | |
| 独立交易 | 是否独立交易 | true |
| 账号 | 同花顺交易账号 | |
| 交易密码 | 同花顺交易密码 | |
| 通讯密码 | 同花顺交易通讯密码 | 888888 |
| 启用 | 是否启用 | true |
右键同花顺交易快捷方式 -> 属性 -> 目标
将目标中的文本复制到交易账号设置的命令行属性中。


设置完毕后回到实盘易客户端主界面。
在菜单栏选择: 工具 -> 关闭所有。
然后选择: 工具 -> 自动登录。
此时实盘易会自动打开同花顺交易快捷方式并登陆交易账户,到此说明已经成功安装和配置好实盘易和同花顺。

策略模板
复制下面的代码并保存为python脚本: strategy.py
# /bin/env python# -*- coding: utf-8 -*-from collections import defaultdictfrom rqalpha import run_filefrom rqalpha.api import *def init(context):logger.info("init")context.symbol = ["000001.XSHE","002415.XSHE","600004.XSHG","600006.XSHG",]update_universe(context.symbol)if not hasattr(context, "fired"):context.fired = defaultdict(lambda: False)def before_trading(context):passdef handle_bar(context, bar_dict):# test orderfor symbol in context.symbol:if not context.fired:# order_percent并且传入1代表买入该股票并且使其占有投资组合的100%percent = 1.0 / len(context.symbol)logger.info("Buy %s" % symbol)order_target_percent(symbol, percent)p = context.portfolio.positions[symbol]logger.info("Position of %s,总: %s 今: %s 昨: %s " % (symbol, p.quantity, p.quantity - p.sellable, p.sellable))context.fired[symbol] = Trueelse:percent = 0.9 / len(context.symbol)logger.info("Sell %s" % symbol)order_target_percent(symbol, percent)p = context.portfolio.positions[symbol]logger.info("Position of %s,总: %s 今: %s 昨: %s " % (symbol, p.quantity, p.quantity - p.sellable, p.sellable))context.fired[symbol] = False# 您可以指定您要传递的参数if __name__ == "__main__":import osconfig = {"base": {"start_date": "2016-06-01","end_date": "2016-06-05","accounts": {"stock": 100000},"frequency": "1m","benchmark": None,"data_bundle_path": os.path.expanduser("~/.rqalpha/bundle"),"strategy_file": __file__,"run_type": "p"},"extra": {"log_level": "verbose",},"mod": {"fxdayu_source": {"enabled": True,"source": "quantos","enable_cache": False,"quantos_url": "tcp://data.quantos.org:8910","quantos_user": "13662241013","quantos_token": "eyJhbGciOiJIUzI1NiJ9.eyJjcmVhdGVfdGltZSI6IjE1MTc2NDQzMzg5MTIiLCJpc3MiOiJhdXRoMCIsImlkIjoiMTM2NjIyNDEwMTMifQ.sVIzI5VLqq8fbZCW6yZZW0ClaCkcZpFqpiK944AHEow"},"shipane_wrapper": {"enabled": True,"manager_id": "manager-1" # 此处和实盘易配置中的manager.id一致}}}run_file(__file__, config=config)
config参数说明
| 选项 | 默认值 | 适用数据源类型 | 含义 |
|---|---|---|---|
| fxdayu_source.enabled | "mongo" | 通用 | 行情源类型,可选值为"mongo","bundle","quantos" |
| fxdayu_source.bundle_path | None | bundle | bundle数据文件位置,默认取"~/.fxdayu/bundle", 可以用环境变量覆盖,取值为"$FXDAYU_ROOT/bundle" |
| fxdayu_source.mongo_url | "mongodb://localhost:27017" | mongo | mongodb数据库地址 |
| fxdayu_source.enable_cache | True | 通用 | bool型,是否开启分页读取缓存优化功能(缓存优化适用于回测)。 |
| fxdayu_source.cache_length | 1000 | 通用 | 当开启缓存优化时,指定单页缓存的条目数 |
| fxdayu_source.quantos_url | "tcp://data.quantos.org:8910" | quantos | 可选,tushare服务器地址,默认不需要配置 |
| fxdayu_source.quantos_user | None | quantos | 必填,quantos用户名,可以从环境变量QUANTOS_USER传入 |
| fxdayu_source.quantos_token | None | quantos | 必填,quantos Token,可以从环境变量QUANTOS_TOKEN传入 |
配置文件
复制下面的代码并保存为配置文件:shipane_sdk_config.yaml
# *********************************************************# 实盘易 SDK 配置# 如无特别说明,配置项修改后,将在策略重启后生效# 注意:# - 请勿在策略运行期间修改结构,比如 id 等关键信息# - 配置项冒号后需保留一个空格# - <xxx> 为必选项,[xxx] 为可选项;需要将括号移除# - <xxx|yyy> 为多选一项,使用其中一项即可# *********************************************************# *********************************************************# 代理配置# *********************************************************proxies:- id: defaultbase-url: http://www.iguuu.com/proxy/trade# 爱股网用户名username: <username># 爱股网密码password: <password># *********************************************************# 实盘易配置# *********************************************************gateways:# 实盘易-1 配置- id: gateway-1# 连接方式# DIRECT:直连,适用于有公网 IP 的环境# PROXY: 通过爱股网代理连接connection-method: <DIRECT|PROXY># IP 地址host: xxx.xxx.xxx.xxx# 端口port: 8888# 代理 ID# 连接方式为“代理”时需要设置proxy: default# 实例 ID,即运行实盘易的计算机名# 连接方式为“代理”时需要设置instance-id: <instance-id># 密钥key: [key]# 超时timeout:# 连接超时connect: 5.0# 读取超时read: 10.0# 交易客户端clients:# 客户端-1# 注意:id 需全局唯一- id: client-1# 查询串,对应于 API 的 client 参数# 其中 xxxx 为交易账号或交易账号后半段query: account:xxxx# 是否默认?# 1 个实盘易只允许设置 1 个交易客户端为默认default: true# 其他资产价值# 基金及其他非场内资产价值,该项配置用于校验账户other-value: 0# 总资产价值偏差率# 该项配置用于校验账户total-value-deviation-rate: 0.001# 保留名单,每行一个# 股票代码,注意使用 str 标签# 例如:!!str 000001# 注意:该配置在下次 handle_data 调用时生效reserved-securities:# 含有非数字的代码- \D# B股代码- ^[92]# 港股代码- ^[\d]{5}$# 逆回购代码- ^(204|131)# 新标准券代码- !!str 888880# 客户端-2- id: client-2query: account:xxxxother-value: 0total-value-deviation-rate: 0.001reserved-securities:- \D- ^[92]- ^[\d]{5}$- ^(204|131)- !!str 888880# 实盘易-2 配置- id: gateway-2# 连接方式connection-method: DIRECThost: xxx.xxx.xxx.xxxport: 8888key:timeout:connect: 5.0read: 10.0clients:- id: client-3query: title:monijiaoyidefault: trueother-value: 0total-value-deviation-rate: 0.001reserved-securities:- \D- ^[92]- ^[\d]{5}$- ^(204|131)- !!str 888880- id: client-4query: title:xxx,account:xxxother-value: 0total-value-deviation-rate: 0.001reserved-securities:- \D- ^[92]- ^[\d]{5}$- ^(204|131)- !!str 888880# *********************************************************# 策略配置# 实体关系## manager 1 ---- N trader 1 ---- 1 交易客户端(client)## *********************************************************managers:# manager-1 配置- id: manager-1traders:# trader-1- id: trader-1client: client-1# 是否开启?# 正式运行时设置为 trueenabled: true# 是否排练?排练时不会下单。# 正式运行时设置为 falsedry-run: true# 工作模式# 1. SYNC: 指按模拟交易的持仓进行同步# 2. FOLLOW:指按模拟交易的下单进行跟单# 目前米筐只支持 SYNC 模式mode: SYNC# 同步选项# 如果该策略无需同步操作,可以省略 sync 配置项# 注意:该配置在下次 handle_data 调用时生效sync:# 同步前是否撤销模拟盘未成交订单# 如果该选项未启用,并且模拟盘有未成交订单,SDK 将不会做同步pre-clear-for-sim: false# 同步前是否撤销实盘未成交订单pre-clear-for-live: false# 最小订单金额,低于该值的订单将被忽略,以防因为价格波动导致的频繁调仓# 取值可以为数值,或者百分比min-order-value: 1%# 最大订单金额,用于分单# 取值为数值max-order-value: 200000# 轮次间隔时间,单位为毫秒# 建议不小于 5 秒,以防交易软件持仓刷新过慢round-interval: 5000# 批次间隔时间,单位为毫秒batch-interval: 1000# 下单间隔时间,单位为毫秒order-interval: 1000# 默认为 2 轮,该选项用于增加额外轮次# 额外轮次extra-rounds: 0- id: manager-2traders:- id: trader-2client: client-1enabled: truedry-run: truemode: SYNCsync:pre-clear-for-sim: falsepre-clear-for-live: falsemin-order-value: 1%max-order-value: 200000round-interval: 5000batch-interval: 1000order-interval: 1000extra-rounds: 0
配置文件模板无法直接使用,需要补充相应的字段:
| 属性 | 含义 |
|---|---|
| proxies.username | 爱股网用户名。 |
| proxies.password | 爱股网密码。 |
| gateways.connection-method | 连接方式: DIRECT|PROXY 。 |
| gateways.host | 实盘易客户端所在计算机的ip地址。如果运行在本机则填127.0.0.1,如果实盘易客户端运行在云服务器上需填写云服务器地址。 |
| gateways.port | 端口号,与实盘易客户端基本设置中的端口一致,根据上面的设置填: 8888。 |
| gateways.key | 密钥,与实盘易的密钥一致。 |
| gateways.clients.query | acounts:同花顺交易账号 。 |
| gateways.clients.id | 与实盘易交易账号设置的名称相同 |
| managers.traders.client | 与实盘易交易账号设置的名称相同 |
| managers.traders.id | 与实盘易交易账号设置的名称相同 |
| managers.traders.dry-run | 是否排练?排练时不会下单。正式运行时设为false。 |
将上述两个文件放在同一目录下。在开盘时间打开cmd进入该目录然后运行下面的命令即可实盘运行策略。
python strategy.py
| 简介 | 链接 |
|---|---|
| python安装 | https://pan.baidu.com/s/1Xa4GNf6n48C9E5o8tT_GKA |
| ShiPanE软件 | http://www.iguuu.com/download/e/installers/ShiPanE.exe |
| 同花顺软件 | https://pan.baidu.com/s/1Oe4cEBP7Yl-8pazXFNnXSg |