上一期文章我们一起学习了麦语言的「麦语言交易类库」模板参数,这个模板是麦语言策略创建时自带的,封装了一些交易中需要设置的功能。本期文章我们继续来了解一些关于在发明者量化交易平台使用麦语言的内容。
麦语言的策略参数和在发明者量化交易平台上的其它语言一样,在策略编辑页面设置,例如我们以麦语言版本的Dual Thrust
策略为例。
策略地址:https://www.fmz.com/strategy/128884 。
在策略编辑页面,给策略设置的参数,在策略代码中是可以直接使用的。麦语言的策略参数一般只用数值类型,其它类型例如:布尔类型、下拉框、字符串等并不常用。
例如上例中N
这个参数,默认值为4,如果创建机器人时没有修改这个参数,那么机器人运行起来以后,在策略中N的值即为4。
麦语言策略层面的内容我们已经都有所了解了(麦语言策略参数、麦语言交易类库模板参数)。接下来看一下麦语言实盘与回测。
回测
选定回测时间范围后(起始时间、结束时间),设置策略的K线周期,麦语言也支持策略中多K线周期数据。但是这里设置的K线周期是默认K线周期,这里设置为日K线,那么策略运行后自动生成的图表上就是日K线。回测模式分为「实盘级别」、「模拟级别」具体可以查询文档:https://www.fmz.com/digest-topic/4009 。然后选定要回测的市场或者交易所,添加之后就可以回测了,其它参数如果需要调整,例如初始回测资金数值等,可以具体根据需求设置,鼠标放在参数上有提示。
参数中和市场、交易所相关的参数,例如:回测模拟资金数值、回测交易费率、回测价格精度、交易数量精度、回测数据源这些参数,并不是在回测页面修改就生效的,需要把之前添加的市场、交易所点掉,重新添加才是设置之后的。
实盘
实盘设置就简单很多了,只用给创建的机器人配置指定托管者(即在哪个托管者上运行机器人)。设置K线周期、设置要操作的交易所对象(即配置的交易所账户对象)。
策略运行起来,实盘和回测差别不大,只是回测多了一些回测系统自动生成的统计数据。
状态栏信息
状态栏信息,表格主要分为「行情信息」和「资金信息」。 行情信息主要记录了当前设置的默认K线周期的周期起始时间、交易品种(合约代码)、持仓量、持仓价格等数据。需要注意的是,麦语言交易类库模板参数中设置「实时价模型」、「收盘价模型」这里的行情更新是不一样的。关注这里的时间更新,可以判断策略的运转情况,行情更新情况。(初步判断程序卡死、日志塞满硬盘空间等问题)
资金信息主要记录了机器人从运行开始,到当前资金的数值。
状态栏底部还可以显示策略中的任意数据,例如例子中显示:UPTRACK
, DOWNTRACK
,根据需求设置显示。这里就需要讲一下策略代码中的赋值方式。
用于给某个变量赋值用以下符号(摘录自麦语言API文档)
符号 :
冒号,代表赋值并且输出到图(副图)中,并显示在状态栏表格。
符号 :=
冒号等于,代表赋值,但不输出到图(主图、副图……)中,也不显示在状态栏表格中。
符号 ^^
两个 ^ 符号代表赋值,给变量赋值并且输出到图(主图)中,并显示在状态栏表格。
符号 ..
两个 . 符号代表赋值,给变量赋值并且显示在状态栏表格中,但是不输出到图(主图、副图……)中。
可见这些符号都是赋值操作,但是不同之处在于把变量是否显示在状态栏,是否把变量画在主图、附图上(稍后展示)。
^^
、:
、..
是都可以把变量数值显示在状态栏表格底部的。
K线图表 根据策略回测、实盘页面设置的默认K线周期,策略会生成K线图表,并且根据策略编写内容,在K线图表上显示变量值曲线。例如例子中的图表:
主图:
简单理解,和K线共用同样Y轴的为主图,那么什么时候需要显示数据在主图?
当所要显示的数据、指标线数值大小和标的物价格大小类似(即和K线BAR上的价格数值大小差不多)时,可以显示在主图,例如策略计算出的均线,例如本例中计算出的价格上下轨(UPTRACK
和DOWNTRACK
)。
副图:
那什么样的数据适合显示在副图呢?
当所要画出的线(显示的数据)和K线BAR上的价格数值相差比较大时(比K线上的价格大得多或者小得多),可以显示在副图,因为如果此时显示在主图,会导致图像压缩,非常不便于观察。例如计算出MACD指标,要显示MACD指标在图表上时。
举例子,给本例子策略中加上一句,AA^^(O-C)*100000;
K线图表直接压缩的找不到了。
还有一点差别是,实盘时麦语言策略图表为HighCharts图表,回测时为tradingView图表。
实盘时的图表:
麦语言策略,在触发交易信号时( BK
,SK
,BP
,SP
,BPK
,SPK
),会打印一条日志,显示代码中信号触发的位置(行数),显示信号触发的次数。
在下单日志价格、数量之后,日志还会附带输出当时的对手盘第一档价格,例如买入开多时,会显示Ask即卖一档位订单的价格、数量。