qetrader交易接口
简介
qetrader交易接口可以通过pip直接安装在用户本地,实现在任意python环境下进行策略开发、回测、模拟交易和实盘交易。
安装说明
首先,您的系统上必须已经安装了python环境(版本3.7或以上),推荐使用anaconda3. 然后,就可以按照如下步骤安装了。
windows环境
安装Microsoft C++ Build Tools
下载链接:Microsoft C++ Build Tools
注:该工具版本号需要在14以上
安装并启动Redis-server数据库服务
安装Redis-server数据库服务。
下载链接:Redis-server
假定下载到D:\download目录下,进入该目录,用解压工具(winzip/winrar...)解压zip文件到当前目录,可以看到当前目录下多了一个Redis-x64目录。
进入windows的命令行(搜索CMD或者Windows PowerShell),切换到刚才的目录进行安装:
d: cd download\Redis-x64 redis-server --service-install redis.windows.conf
出现如下信息"Redis successully installed as a service"代表安装成功:
打开windows功能“服务”(可以用搜索找到),找到Redis,点击启动。
看到Redis状态变成‘正在运行’, 表明Redis服务安装和启动成功。
qetrader使用的Redis端口号是6379。若需要修改为其他端口号,需要在qetrader安装完毕后修改qetrader的配置
安装qetrader
pip install -U qetrader --timeout=60
注: 若要加快安装速度,可以使用国内镜像站点
linux环境
安装Redis
linux下安装Redis最简单快捷的方式是使用Docker安装
首先用docker pull 下载redis最新版本
sudo docker pull redis
然后启动redis容器
sudo docker run -itd --name redis-server -p 6379:6379 redis
安装libffi
若为Debian/Ubuntu 系统:
sudo apt-get install libffi-dev
使用如上命令安装
若为CentOS/RHEL/Fedora 系统:
sudo yum install libffi-devel
使用如上命令安装
更新pip版本
pip install -U pip
安装qetrader
pip install -U qetrader --timeout=60
注: 若要加快安装速度,可以使用国内镜像站点
使用说明
启动网页服务
写一个python文件命名为runWeb.py
from qetrader.qeweb import runWebpage ## "your username"和"your authcode"需要替换成官网注册的用户名和授权码 from qesdk import auth; auth('your username','your authcode') runWebpage()
在Anaconda的命令行环境下进入runWeb.py所在目录,并运行如下命令
python runWeb.py
运行后web网页服务将启动,用户可以实时查看订单委托,成交,持仓,权益和日志信息,并可以观察行情图。
按键Ctrl+C或者关闭窗口可以终止该服务,网页将无法查看,重新运行上述命令后可恢复。
编写策略并运行
如下是一个python策略文件范例
import qesdk
from datetime import datetime,timedelta
from qetrader import *
qesdk.auth('Your username','Your authcode')
user_setting = {'investorid':'000000', 'password':'XXXXXXXXXXXXXX','broker':'simnow'}
user = 'myname'
def getLastToken(user):
acclist = listSimuAccounts(user)
if len(acclist)>0:
return acclist[-1]
else:
return createSimuAccount(user, initCap=10000000)
class mystrat(qeStratBase):
def __init__(self):
self.instid=['AG2306.SFE']
self.datamode='minute'
self.freq = 1
def crossDay(self,context):
pass
def onBar(self,context):
print(get_bar(context,1))
def handleData(self,context):
pass
if __name__=='__main__':
strat1 = mystrat()
token_code = getLastToken(user)
runStrat(user,'real', [strat1], simu_token=token_code, real_account=user_setting)
auth需要换成您的用户名和授权码
注:
1.auth语句中授权码需要在https://quantease.cn上注册登录后点击主页右上角菜单'授权码'获取。
2.user_setting中账户信息需要换成您自己的账户信息
3.运行后复制给出的网页链接在浏览器中查看运行结果即可
修改系统配置
获取系统配置
from qetrader import read_sysconfig read_sysconfig()
获取结果为
{'redis': {'host': '127.0.0.1', 'port': 6379, 'password': ''}, 'webpage': {'host': '127.0.0.1', 'port': 5814}}
修改Redis配置
接口函数为
setRedisConfig(host='127.0.0.1', port=6379, password='')
根据您本地Redis-server配置修改该接口,使得qetrader可以访问您的本地数据库。
比如您本地Redis端口号为6380, 那么可以这么运行
from qetrader import setRedisConfig setRedisConfig(port=6380)
恢复默认出厂设置仅需要调用不带参数的setRedisConfig即可
from qetrader import setRedisConfig setRedisConfig()
修改网页配置
接口函数为
setWebConfig(host='127.0.0.1',port=5814)
如果qetrader网页服务默认端口号5814和您本地端口冲突,您可以修改为其他端口号,比如修改为5008。
from qetrader import setWebConfig setWebConfig(port=5008)
恢复默认出厂设置仅需要调用不带参数的setWebConfig即可
from qetrader import setWebConfig setWebConfig()
在浏览器测试一下输入网址http://127.0.0.1:5814, 出现如下文字代表启动成功:
qetrader网页展示服务已经成功启动
插件说明
安装插件
以“algoex“插件为例,下载插件代码如下:
from qesdk import auth
auth('your username','your authcode')
from qetrader.qeplugins import installPlugin
installPlugin('algoex')
运行代码后,出现如下提示代表安装成功:
插件algoex下载成功
在策略文件中按如下格式import该插件:
from qetrader.plugins.qealgoex import plugin_algoex
注;下载插件需要成为VIP付费客户,否则会下载失败。注册VIP请联系客户
引用插件
以'algoex'为例,根据按照的说明,在code中使用:
from qesdk import auth
##授权码
auth('your username','your authcode')
from qetrader import listSimuAccounts, createSimuAccount,runStrat
##这里引用插件
from qetrader.plugins.qealgoex import plugin_algoex
##实盘账户信息
user_setting = {'investorid':'xxxxxx', 'password':'xxxxxxxx','broker':'xxxxxx'}
if __name__=='__main__':
##换成自己的用户名
user='myname'
##如果有模拟账户,用第一个账户,没有新建一个
tokenlist = listSimuAccounts(user)
if len(tokenlist) > 0:
token = tokenlist[0]
else:
token = createSimuAccount(user)
##运行策略,algoex插件本身就是个策略实例,可以直接使用
runStrat(user,'real',[plugin_algoex], simu_token=token,real_account=user_setting)
插件库
algoex插件
algoex插件具备csv下单和twap拆单所有功能外,增加了“seesaw”算法,该算法在多个品种同时交易的环境下,可以比无脑对价下单节省交易费用。
安装
如上文安装插件所述使用qetrader.qeplugins.installPlugin函数安装
调用
如上文引用插件所述引用插件,并加入runStrat的strats参数。
csv文件说明
和csv下单工具中csv文件区别如下:
- 文件位置在当前工作目录。
- 为了引入seesaw,相比辅助工具中的qeorders.csv增加了两列,用于提供seesaw的参数。
文件样本可以参考algoex专用csv样本下单文件
参数说明如下:
▼ 详细说明
字段 | 类型 | 说明 |
---|---|---|
账号 | 文本 | 如果是模拟交易,为模拟账号的Token,若为实盘,则为实盘account设置中的investorid |
合约名 | 文本 | 需要交易的合约名,可以直接用交易所习惯命名'ag2212', 也可以写宽易平台命名'AG2212.SFE',如果是主力合约,写‘ag9999’就好 |
目标多头仓位 | 整数 | 要达到的目标多头仓位(非新增开仓)。 |
目标空头仓位 | 整数 | 要达到的目标空头仓位(非新增开仓)。 |
价格类型 | 文本 | 支持如下类型:‘market’市价,‘limit’限价,‘quote’挂价(多头为买一价,空头为卖一价),'opponent'对手价(多头为卖一价,空头为买一价)‘current’最新价(指最新成交价格) |
限价价格 | 浮点数 | 当价格类型为'limit'该项价格有效,作为下单的目标价格 |
价格偏移点数 | 整数 | 价格偏移多少个tick点数,比如5代表价格向上偏移5个点,-3代表向下偏移3个点。当价格类型为'market'时参数无效 |
时间类型 | 文本 | 有效值:‘GFD’,‘FAK’,‘FOK’。GFD表示订单当日有效; FOK表示要么全部即时成交,要么全部即时撤单;FAK表示即时成交,剩余部分自动撤单。FAK/FOK模式撤单不计入交易所撤单次数限制,因此常常被机构使用 |
追单模式 | 整数 | 有效值0~2, 0表示不追单,1表示FAK方式追单,未完成部分迅速挂单直到全部成交或者追单次数满,此时时间类型必须是FAK。 2表示被动等待超过“追单时间“,或者价格偏移超过 “追单超价点数”. |
追单时间 | 整数 | 单位为秒,比如30代表每过30秒没有全部成交的话,将剩余订单撤单,然后重新以最新的对手价挂单. |
追单超价点数 | 整数 | 追单模式2时, 价格向不利方向移动超过该点数触发追单,此时将剩余订单撤单,然后重新以最新的对手价挂单. |
追单次数 | 整数 | 最大追单次数,代表最多追单几次。比如2代表最多2次。 |
撤单时间 | 整数 | 单位秒,超过多少秒未成交,撤除所有剩余订单。比如500代表500秒后撤除所有未成交订单。 |
撤单滑点数 | 整数 | 代表价格向不利方向移动几个tick后将所有未成交自动撤单。比如做多时该值为5代表价格涨了5个tick后自动撤单。 |
算法交易 | 文本 | 支持‘no’或者‘twap’两种设置。‘no’代表不做算法交易。‘twap’代表按照时间分批下大单,自动调用算法交易,详见算法交易。 |
执行时间 | 整数 | 算法交易在多少秒之内结束。 |
算法参数1 | 整数 | 不同算法不同定义 |
算法参数2 | 整数 | 不同算法不同定义 |
算法参数3 | 整数 | 不同算法不同定义 |
TWAP算法参数:
参数1 代表扰动系数,使得每次下单量在一定范围上下波动
SEESAW算法参数:
参数1 代表交易价格超过初始挂价多少个ticks自动变成对价下单加FAK追单模式
参数2 代表自动转对价下单加FAK追单模式后,交易价格偏离多少个ticks后自动撤单放弃交易
参数3 备用,目前无意义
注:该插件是收费功能。