资源加载中... loading...

FMZ量化麦语言(My)--麦语言交易类库参数

Author: 发明者量化-小小梦, Created: 2020-06-17 17:47:34, Updated: 2023-10-08 19:49:55

img

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

麦语言交易类库

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

img img img

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

「交易设置」分组

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

    • 收盘价模型 收盘价模型是指,每次有新K线柱产生时,执行一次交易逻辑。例如下图,策略使用的是5分钟K线周期,当时间是10:45:01,在此时新的5分钟K线柱产生,实盘执行一次编写的策略代码逻辑,K线图表上只显示周期完成的K线柱(即倒数第二根),当倒数第一根柱走完时,才会更新到图表上(此时走完的倒数第一根就变成了倒数第二根K线柱)。

      img

      img

      简单的说就是当最后一根K线柱走完,新周期的K线柱出来时的一瞬间,实盘程序执行一次既定的策略逻辑(编写的交易策略代码)。 这种模式的优点在于避免在周期内价格实时变动产生的干扰,只看最后一根K线柱定型时的行情数据,作为策略买卖、开平的依据。缺点是有可能会开仓、平仓滞后,因为要最后一根K线柱周期完成后策略才会有动作。

      如上图,状态栏和策略图表时间显示相差8小时,是由于托管者所在设备和当前显示图表浏览器的时区设置不一致导致。

    • 实时价模型 实时价模型是指根据实时行情,不停的去执行既定的策略逻辑。一旦策略中交易条件触发,立即执行交易指令。这种模式的优点是实时监控行情,不等待确认,立即执行交易指令。缺点是容易被行情频繁扰动。如下图,更新时间是实时变动的,图表上显示的也是倒数第一根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

    显示价格一跳是1e-7即0.0000001,当我们设置滑价点数为5时。

    img

    img

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

    img

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

期货选项

  • 品种代码

    img

    该参数主要用于数字货币期货市场设置合约代码,参看麦语言文档

    • 数字货币期货 参考API文档中:合约代码描述。

    如果策略添加的交易所对象为数字货币现货,该参数设置无效。

实盘选项

  • 自动恢复进度

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

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

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

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

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

  • 杠杆倍数 该参数只用于数字货币期货,设置数字货币期货杠杆,各个数字货币期货交易所支持的杠杆范围、数值可能有所不同,要具体对待设置。

现货交易

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

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

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

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

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

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

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

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

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

  • 切换基地址 该参数主要用于数字货币期货、数字货币现货,用于切换rest协议API接口基地址,例如切换币安模拟盘环境:https://testnet.binancefuture.com

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

    img

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


Related

More

qq813380629 急需要挂单

发明者量化-小小梦 麦语言的这个架构不支持挂单的,您可以用其它语言策略实现挂单的机制。