麦语言编写趋势策略确实十分简单,得益于封装,只需使用几行代码就可以写出一个策略。在优宽量化(优宽)交易平台上使用麦语言,除了查询麦语言文档:优宽量化My语言(Mylang)文档之外,缺少一些指导文章。本篇我们就一起来玩转优宽上的麦语言。麦语言在优宽上可以分为商品期货、股票证券,我们一起来梳理各个不同市场的使用区别。先来看一下一个比较重要的内容。
「麦语言交易类库」是把一些需要用户设置的数值、参数、模式整合封装在了一起,脱离策略代码层面,在创建机器人时由使用者设置、配置的框架类库,创建麦语言策略时自带。
对于熟练掌握在优宽上使用麦语言策略,这些参数、设置的了解是必不可少的,下面我们一起来学习各个参数的概念、用途。
执行方式
执行方式分为收盘价模型
、实盘价模型
。
收盘价模型 收盘价模型是指,每次有新K线柱产生时,执行一次交易逻辑。例如下图,策略使用的是5分钟K线周期,当前时间是09:15:01,在此时新的5分钟K线柱产生,机器人执行一次编写的策略代码逻辑,K线图表上只显示周期完成的K线柱(即倒数第二根),当倒数第一根柱走完时,才会更新到图表上(此时走完的倒数第一根就变成了倒数第二根K线柱)。 简单的说就是当最后一根K线柱走完,新周期的K线柱出来时的一瞬间,机器人程序执行一次既定的策略逻辑(编写的交易策略代码)。 这种模式的优点在于避免在周期内价格实时变动产生的干扰,只看最后一根K线柱定型时的行情数据,作为策略买卖、开平的依据。缺点是有可能会开仓、平仓滞后,因为要最后一根K线柱周期完成后策略才会有动作。
实时价模型 实时价模型是指根据实时行情,不停的去执行既定的策略逻辑。一旦策略中交易条件触发,立即执行交易指令。这种模式的优点是实时监控行情,不等待确认,立即执行交易指令。缺点是容易被行情频繁扰动。如下图,更新时间是实时变动的,图表上显示的也是倒数第一根K线柱(当前的K线柱,并且在图表上这根K线柱也是实时变动的)。
默认开仓手数 在编写麦语言策略时,如果对于BK,SK,BPK,SPK没有指定下单数量参数则按照该参数作为下单数量。例如:
MA5^^MA(C,5);
MA10^^MA(C,10);
CROSSUP(MA5,MA10),BK;
此时如果「默认开仓手数」设置为2,那么当策略BK的执行条件CROSSUP(MA5,MA10)
触发时,买开数量为2手(商品期货合约)。
最大单次交易下单量 允许的单次下单的最大数量,如果设置的信号触发时下单量比较大(由策略中指令参数设置或者默认开仓手数设置),执行下单时会把订单拆分成小的订单分笔下单。
滑价点数(整数)
该参数和「现货交易」分组中的定价货币精度
参数相关,主要用于设置下单交易吃单时加上或减去的溢价,例如当需要买入时,对手卖一的价格时10,我们下买单价格出11,此时11-10=1,多出的1元差价就是滑价,卖出相反,减价卖出的部分就是滑价,加滑价的目的是为了确保成交。
在商品期货交易中,不同品种有不同的priceTick(即一跳价格),如果下单的价格不是priceTick的倍数,例如i2009
铁矿石2009合约,价格一跳是0.5,如果我下单760.1,这样就不满足priceTick的要求,这样的委托单是无法下成功的,交易所会拒绝此次报单,如果下单是760.5是可以的。所以在设置滑价的时候就需要考虑这个问题。
对于商品期货,系统会自动获取当前品种的priceTick(定价货币精度这个参数不生效),此时设置的滑价点数
就是priceTick的倍数,例如:
显示铁矿石的价格一跳是0.5,当我们设置滑价点数为5时。
由于价格一跳之类的信息可能不同品种并不统一。所以需要「定价货币精度」这个参数来控制。例如,「定价货币精度」参数设置为2,即当前交易时下单价格精确到小数位第二位即0.01。此时priceTick就为0.01,如果设置滑价点数为5,那么每次下单时基于对手价加上或者减去的滑价(或者叫溢价)就为0.05。
变量最长周期数 保存的数据最长周期数,如果设置该参数为200,那么策略中计算的各种数据序列,例如均线、MACD指标线等,只保存最近200根K线上的数据。
品种代码
该参数主要用于商品期货
、股票证券
市场设置合约代码,参看麦语言文档:https://www.youquant.com/bbs-topic/8232#合约
股票证券 参考API文档中:https://www.youquant.com/api#股票证券
商品期货 商品期货合约代码:https://www.youquant.com/api#期货交易
自动恢复进度
勾选上该参数,在策略停止后重启,会继续之前的持仓,信号继续运行,而并非使用初始状态运行。如果需要让策略以初始状态运行,可以不勾选该参数。
下单重试次数 下单如果没有成交(例如行情变化很快,滑价设置不大的情况,可能下单时,盘口已经移动了)。撤销订单重新下单,该参数控制重新下单的次数,超过次数不再下单,信号执行完毕。
网络轮训间隔(毫秒) 控制程序轮转执行的频率。
账户同步时间(秒) 读取账户数据的时间间隔。
开仓后仓位同步时间(毫秒) 让策略下单开仓后,等待一定时间同步仓位。
杠杆倍数
商品期货是固定的保证金率,无法自主设置。
一手交易量 即设置默认下单量
最小交易量 简单说就是一次下单操作,下单量最少要满足这个数值,小于这个数值就不下单了。
定价货币精度 该参数指的是交易时的价格精度(价格小数位数),影响到我们之前讲的「滑价点数」参数。
交易品种精度 该参数指的是交易时的下单量精度,控制下单量小数位,例如下单量计划为0.1234个币,该参数如果设置为2,下单量会调整为0.12。
盈亏统计间隔 麦语言的收益统计是按时间间隔定时计算、打印当前的浮动盈亏,所以无论是否持仓均可计算出。 如上图,该参数设置为小时,收益曲线每一小时打印一次(如果是商品期货,非交易时间除外)。打印的收益为:累计收益+当前浮动盈亏。
失败重试(毫秒) 该参数用于接口调用失败时,间隔多少时间重试。
隐藏常见网络错误 勾选该参数,可以过滤一些错误日志。
推送通知 该参数勾选后,下单日志,策略中的推送消息会推送到当前账号设置的推送选项。
对于麦语言的模板参数我们先熟悉到这里,下一篇我们可以一起熟悉优宽平台上的麦语言运行时界面、图表、等内容。
329768475zj 麦语言策略转换j