自动交易
添加策略
用户可以基于编写好的价差策略模板(类)来创建不同的策略实例(对象)。
在左侧的下拉框中选择要交易的策略名称(如BasicSpreadStrategy),如下图所示:
请注意,显示的策略名称是策略类(驼峰式命名)的名字,而不是策略文件(下划线模式命名)的名字。
选择好策略类之后,点击【添加策略】,会弹出添加策略对话框,如下图所示:
在创建策略实例时,需要配置相关参数,各参数要求如下:
实例名称
用户自定义的策略实例名称,这里是test;
策略实例名称不能重名;
价差名称
用于交易的价差合约,这里是y_05_09;
一定要是价差组件可以查询到的价差合约;
参数设置
显示的参数名是策略里写在parameters列表中的参数名;
默认数值为策略里的参数的默认值;
由上图可观察到,参数名后面<>括号中显示的是该参数的数据类型,在填写参数时应遵循相应的数据类型。其中,<class ‘str’>是字符串、<class ‘int’>是整数、<class ‘float’>是浮点数;
请注意,如果某个参数可能会调整至有小数位的数值,而默认参数值是整数(比如1)。请在编写策略时,把默认参数值设为浮点数(比如1.0)。否则策略会默认该项参数为整数,在后续【编辑】策略实例参数时,会只允许填进整数。
以BasicSpreadStrategy为例,该策略的参数设置如下:
buy_price
- 买入开仓阈值,图中是-300,即当价格跌破-300时,执行委托;
sell_price
- 卖出平仓阈值,图中是400,即当价格回升到400时,执行委托;
short_price
- 卖出开仓阈值,图中是800,即当价格上涨到800时,执行委托;
cover_price
- 买入平仓阈值,图中是600,即当价格下跌到600时,执行委托;
max_pos
- 主动腿委托数量;
payup
- 超价的数值;
interval
- 时间间隔,即每隔一段时间,会发出委托。
参数配置完成后,点击【添加】按钮,则开始创建策略实例。创建成功后可在右下角的策略监控组件中看到该策略实例,如下图所示:
策略监控组件顶部显示的是策略实例名、价差名、策略类名以及策略作者名(在策略里定义的author)。顶部按钮用于控制和管理策略实例,第一行表格显示了策略内部的参数信息(参数名需要写在策略的parameters列表中图形界面才会显示),第二行表格则显示了策略运行过程中的变量信息(变量名需要写在策略的variables列表中图形界面才会显示)。【inited】字段表示当前策略的初始化状态(是否已经完成了历史数据回放),【trading】字段表示策略当前是否能够开始交易。
从上图可观察到,此时该策略实例的【inited】和【trading】状态都为【False】。说明该策略实例还没有初始化,也还不能发出交易信号。
策略实例创建成功后,该策略实例的配置信息会被保存到.vntrader文件夹下的spread_trading_strategy.json文件中。
管理策略
初始化
策略实例创建成功后,就可以对该实例进行初始化了。点击该策略实例下的【初始化】按钮,若初始化成功,则如下图所示:
可观察到此时该策略实例的【inited】状态已经为【True】。说明该策略实例已经调用过load_bar函数加载历史数据并完成初始化了。【trading】状态还是为【False】,说明此时该策略实例还不能开始自动交易。
启动
策略实例初始化成功,【inited】状态为【True】时,才能启动该策略的自动交易功能。点击该策略实例下的【启动】按钮,即可启动该策略实例。成功启动后,【日志】组件则会输出相应信息(请注意,策略启动并不代表算法启动,算法启动状态取决于策略逻辑),如下图所示:
此时,【算法】组件显示,test策略调用SpreadTaker算法,分别在600和-300的位子上挂上买入和卖出委托;由于实际价格没有达到这2个阈值,故委托一直挂着,其委托状态为【未成交】。
【策略】组件中【trading】字段从【True】变为【False】,如下图所示:
停止
若要停止策略,点击策略实例下的【停止】按钮,即可停止该策略实例的自动交易。【日志】组件输出“算法已停止”,如下图所示:
【算法】组件中算法状态变为【已撤销】,如下图所示:
【策略】组件中【trading】字段从【True】变为【False】,如下图所示:
编辑
如果创建策略实例之后,想要编辑某个策略实例的参数(若已启动策略,需要先点击策略实例下的【停止】按钮,停止策略),可以点击该策略实例下的【编辑】按钮,会弹出参数编辑对话框,以供修改策略参数,如下图所示:
编辑完策略参数之后,点击下方的【确定】按钮,相应的修改会立即更新在参数表格中,如下图所示:
但是策略实例的交易合约代码无法修改,同时修改完后也不会重新执行初始化操作。也请注意,此时修改的只是.vntrader文件夹下spread_trading_strategy.json文件中该策略实例的参数值,并没有修改原策略文件下的参数。
修改前,json文件如下图所示:
修改后,json文件如下图所示:
若盘中编辑后想要再次启动策略,点击策略实例下的【启动】按钮即可再次启动该策略实例,如下图所示:
移除
如果创建策略实例之后,想要移除某个策略实例(若已启动策略,需要先点击策略实例下的【停止】按钮,停止策略),可以点击该策略实例下的【移除】按钮。移除成功后,图形界面右下角的策略监控组件中将不会再显示该策略实例的信息。如下图所示:
此时.vntrader文件夹下的spread_trading_strategy.json文件也移除了该策略实例的配置信息。
批量操作
在策略经过充分测试,实盘运行较为稳定,不需要经常进行调整的情况下,如果有多个需要运行的价差策略实例,可以使用界面左下角的【全部初始化】、【全部启动】和【全部停止】功能来执行盘前批量初始化、启动策略实例以及盘后批量停止策略实例的操作。
全部初始化
在所有策略实例创建成功后,点击左下角的【全部初始化】按钮,则可批量初始化策略实例,如下图所示:
点击【全部初始化】后,如下图所示:
全部启动
在所有策略实例初始化成功后,点击左下角的【全部启动】按钮,则可批量启动策略实例,如下图所示:
全部停止
在所有策略实例启动成功后,点击左下角的【全部停止】按钮,则可批量停止策略实例,如下图所示: