Loading ...

FMZ上玩转麦语言你所需要知道的事情--麦语言交易类库参数篇

Author: 小小梦, Created: 2020-06-17 17:47:34, Updated: 2020-06-22 09:37:28

FMZ上玩转麦语言你所需要知道的事情–麦语言交易类库参数篇

麦语言编写趋势策略确实十分简单,得益于封装,只需使用几行代码就可以写出一个策略。在发明者量化(FMZ)交易平台上使用麦语言,除了查询麦语言文档:发明者量化My语言(Mylang)文档之外,缺少一些指导文章。本篇我们就一起来玩转FMZ上的麦语言。麦语言在FMZ上可以分为商品期货、数字货币现货、数字货币期货三个方面,我们一起来梳理各个不同市场的使用区别。先来看一下一个比较重要的内容。

麦语言交易类库

「麦语言交易类库」是把一些需要用户设置的数值、参数、模式整合封装在了一起,脱离策略代码层面,在创建机器人时由使用者设置、配置的框架类库,创建麦语言策略时自带。

img img

对于熟练掌握在FMZ上使用麦语言策略,这些参数、设置的了解是必不可少的,下面我们一起来学习各个参数的概念、用途。

「交易设置」分组

  • 执行方式 执行方式分为收盘价模型实盘价模型

    • 收盘价模型 收盘价模型是指,每次有新K线柱产生时,执行一次交易逻辑。例如下图,策略使用的是5分钟K线周期,当前时间是09:15:01,在此时新的5分钟K线柱产生,机器人执行一次编写的策略代码逻辑,K线图表上只显示周期完成的K线柱(即倒数第二根),当倒数第一根柱走完时,才会更新到图表上(此时走完的倒数第一根就变成了倒数第二根K线柱)。 img img 简单的说就是当最后一根K线柱走完,新周期的K线柱出来时的一瞬间,机器人程序执行一次既定的策略逻辑(编写的交易策略代码)。 这种模式的优点在于避免在周期内价格实时变动产生的干扰,只看最后一根K线柱定型时的行情数据,作为策略买卖、开平的依据。缺点是有可能会开仓、平仓滞后,因为要最后一根K线柱周期完成后策略才会有动作。

    • 实时价模型 实时价模型是指根据实时行情,不停的去执行既定的策略逻辑。一旦策略中交易条件触发,立即执行交易指令。这种模式的优点是实时监控行情,不等待确认,立即执行交易指令。缺点是容易被行情频繁扰动。如下图,更新时间是实时变动的,图表上显示的也是倒数第一根K线柱(当前的K线柱,并且在图表上这根K线柱也是实时变动的)。

      img img

  • 默认开仓手数 在编写麦语言策略时,如果对于BK,SK,BPK,SPK没有指定下单数量参数则按照该参数作为下单数量。例如:

    MA5^^MA(C,5);
    MA10^^MA(C,10);
    CROSSUP(MA5,MA10),BK;
    

    此时如果「默认开仓手数」设置为2,那么当策略BK的执行条件CROSSUP(MA5,MA10)触发时,买开数量为2(具体是2手、2个币或者2张合约要看添加的是什么交易所,是商品期货,还是数字货币现货,数字货币期货)。 以回测系统中举例: img 实盘要看交易所页面自己添加配置的交易所对象: img

  • 最大单次交易下单量 允许的单次下单的最大数量,如果设置的信号触发时下单量比较大(由策略中指令参数设置或者默认开仓手数设置),执行下单时会把订单拆分成小的订单分笔下单。

  • 滑价点数(整数) 该参数和「现货交易」分组中的定价货币精度参数相关,主要用于设置下单交易吃单时加上或减去的溢价,例如当需要买入时,对手卖一的价格时10,我们下买单价格出11,此时11-10=1,多出的1元差价就是滑价,卖出相反,减价卖出的部分就是滑价,加滑价的目的是为了确保成交。

    在商品期货交易中,不同品种有不同的priceTick(即一跳价格),数字货币交易中也是一样,如果下单的价格不是priceTick的倍数,例如i2009铁矿石2009合约,价格一跳是0.5,如果我下单760.1,这样就不满足priceTick的要求,这样的委托单是无法下成功的,交易所会拒绝此次报单,如果下单是760.5是可以的。所以在设置滑价的时候就需要考虑这个问题。

    对于商品期货,系统会自动获取当前品种的priceTick(定价货币精度这个参数不生效),此时设置的滑价点数就是priceTick的倍数,例如:

    img

    显示铁矿石的价格一跳是0.5,当我们设置滑价点数为5时。

    img img

    由于数字货币提供价格一跳之类的信息并不统一,并且有些提供,有些不提供。所以需要「定价货币精度」这个参数来控制。例如,「定价货币精度」参数设置为2,即当前交易时下单价格精确到小数位第二位即0.01。此时priceTick就为0.01,如果设置滑价点数为5,那么每次下单时基于对手价加上或者减去的滑价(或者叫溢价)就为0.05。 img

  • 变量最长周期数 保存的数据最长周期数,如果设置该参数为200,那么策略中计算的各种数据序列,例如均线、MACD指标线等,只保存最近200根K线上的数据。

期货选项

实盘选项

  • 自动恢复进度

    勾选上该参数,在策略停止后重启,会继续之前的持仓,信号继续运行,而并非使用初始状态运行。如果需要让策略以初始状态运行,可以不勾选该参数。

  • 下单重试次数 下单如果没有成交(例如行情变化很快,滑价设置不大的情况,可能下单时,盘口已经移动了)。撤销订单重新下单,该参数控制重新下单的次数,超过次数不再下单,信号执行完毕。

  • 网络轮训间隔(毫秒) 只是对于数字货币期货、现货有效,控制程序轮转执行的频率。

  • 账户同步时间(秒) 读取账户数据的时间间隔。

  • 开仓后仓位同步时间(毫秒) 主要用于数字货币期货交易所,有时候数字货币期货交易所接口会返回旧数据,导致判断持仓错误,从而引起策略重复下单。该参数设置增大可以缓解此类问题。让策略下单开仓后,等待一定时间同步仓位。

  • 杠杆倍数 该参数只用于数字货币期货,设置数字货币期货杠杆,各个数字货币期货交易所支持的杠杆范围、数值可能有所不同,要具体对待设置。 商品期货是固定的保证金率,无法自主设置。

现货交易

  • 一手交易量 该参数只对数字货币现货交易有效,即设置默认下单量

  • 最小交易量 用于数字货币现货,区别于精度的概念,新同学总是容易这里搞混,精度指的是小数位精确到那一位上,并没说数值大小。最小交易量是指每次下单的最小数值,如果计算出来的下单量低于这个数值就不交易了(例如资金不足、未完全成交、分笔交易剩余的一点点计划交易数量等情况)。简单说就是一次下单操作,下单量最少要满足这个数值,小于这个数值就不下单了。

  • 定价货币精度 该参数指的是交易时的价格精度(价格小数位数),影响到我们之前讲的「滑价点数」参数。对于一些以BTC计价的交易对需要特别注意,这类交易对价格数值非常小,价格小数位非常多,设置这个价格精度需要注意。

  • 交易品种精度 该参数指的是交易时的下单量精度,控制下单量小数位,例如下单量计划为0.1234个币,该参数如果设置为2,下单量会调整为0.12。

  • 手续费 该参数应用于数字货币现货,手续费参数用于计算下单时下单量(买单时),避免计算出的下单量超出实际需要使用的资产数量,如果不确定交易所手续费率,可以适当设置大一点该参数。

  • 盈亏统计间隔 麦语言的收益统计是按时间间隔定时计算、打印当前的浮动盈亏,所以无论是否持仓(数字货币现货无真正持仓,是逻辑上的持仓)均可计算出。 img img 如上图,该参数设置为小时,收益曲线每一小时打印一次(如果是商品期货,非交易时间除外)。打印的收益为:累计收益+当前浮动盈亏。

  • 失败重试(毫秒) 该参数用于接口调用失败时,间隔多少时间重试。

  • 使用代理 该参数主要用于数字货币期货、数字货币现货,使用SS5代理可以让国内服务器托管者访问到一些被Q的交易所接口。

  • 隐藏常见网络错误 勾选该参数,可以过滤一些错误日志。

  • 该参数主要用于数字货币期货、数字货币现货,用于切换rest协议API接口基地址,例如https://www.okex.com 只能海外服务器访问到,可以用该参数切换为:https://www.okex.me,这样使用本机电脑运行托管者也可以访问到OKEX交易所接口了。

  • 推送通知 该参数勾选后,下单日志,策略中的推送消息会推送到当前账号设置的推送选项。 img

对于麦语言的模板参数我们先熟悉到这里,下一篇我们可以一起熟悉FMZ平台上的麦语言运行时界面、图表、等内容。


More