如何通过策略出租码元数据给出租的策略指定不同的版本数据

Posted K线骑士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过策略出租码元数据给出租的策略指定不同的版本数据相关的知识,希望对你有一定的参考价值。

策略需求

开发出一个策略出租时希望对于策略进行不同的资金限制,对策略出租时进行不同的交易所限制(限制策略操作的交易所),再或者希望对于策略出租时进行交易所账号配置的限制(指定这个策略只能操作事先约定好的账户,策略使用者使用其它账户时策略提示并不再做交易等操作)。

这些显然不能写死在代码里,因为如果写死在代码中。所有用户都会受到这些条件限制,就不能针对不同用户群体做出不同使用权限的控制。基于以上需求场景,发明者量化交易平台扩展了新功能:策略出租注册码元数据设置在创建注册码时,可以指定一个元数据Meta,数据为字符串。注意:生成注册码时Meta的长度不能超过190个字符。

使用FMZ注册码元数据对策略限定

例如我是一个策略开发大佬,我开发了一个现货交易对为BTC_USDT的策略,策略只做多(初始时只有计价币QuoteCurrency即USDT,买入了就持仓具有交易币BaseCurrency即BTC),我要出租这个策略,策略名称为test1

可见,对于策略的限定设计需要结合具体策略的情况具体设计。本例是现货策略的一个演示,如果策略是一个期货策略呢?那就要限定期货持仓信息了(根据GetPosition返回的持仓数据)。当策略发现超过限定的持仓时,不再执行下单开仓逻辑(其它逻辑需要正常执行,例如平仓等操作)。所以这些设计需要结合策略本身具体而言,本例只是一个简单的说明例子,可能并不具有实际使用价值。

策略源码:

function main() {
    // 策略允许的计价币最大资产数值
    var maxBaseCurrency = null
    
    // 获取创建注册码时的元数据
    var level = GetMeta()
    
    // 检测Meta对应的条件
    if (level == "level1") {
        // -1为不限制
        maxBaseCurrency = -1       
    } else if (level == "level2") {
        maxBaseCurrency = 10     
    } else if (level == "level3") {
        maxBaseCurrency = 1
    } else {
        maxBaseCurrency = 0.5
    }
    
    while(1) {
        Sleep(1000)
        var ticker = exchange.GetTicker()
        
        // 检测资产数值
        var acc = exchange.GetAccount()
        if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
            // 停止执行策略交易逻辑
            LogStatus(_D(), "持仓超过注册码的使用限定,不再执行策略交易逻辑!")
            continue
        }
        
        // 其它交易逻辑
        
        // 正常输出状态栏信息
        LogStatus(_D(), "策略正常运行!ticker数据:\\n", ticker)
    }
}

在创建注册码时,策略库中找到test1策略,点击右侧的操作项,点击售卖

点击内部出售

点击“小扳手”,设置注册码元数据。

然后把要限定的信息写进Meta控件,例如本例设计的几种策略使用等级:

  • level1 : 不限制持仓数量。
  • level2 : 限制持仓数量最大为10个币。
  • level3 : 限制持仓数量最大为1个币。
  • 不设置Meta : 不设置时,默认限制持仓数量最大为0.5个币。

我们首先给Meta控件设置level1,让这个创建的注册码具有test1策略的level1等级。创建好了注册码:

购买地址: https://www.fmz.com/m/s/282900
注册码: 7af0c24404b268812c97b55d073c1867

策略出租者将这个注册码发送给策略租用者。例如,这个时候我在我的另一个账号(策略租用者)使用这个注册码,就获得了test1这个策略的使用权。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fL1hGZfp-1628849469549)(https://www.fmz.com/upload/asset/16f7450fb512c0a705f6.png)]

策略租用者使用策略

策略租用者,创建实盘,策略使用test1,添加一个WexApp现货交易所对象(WexApp是FMZ平台的模拟盘),运行实盘。

可以看到策略正常运行起来了,说明level1等级不限定持仓数量(现货账户持有的币数)。

修改Meta数据

当策略注册码已经使用,如果策略开发者需要调整发出的注册码的Meta数据时,还可以修改。在策略库,出售记录中。

可以修改Meta数据。

我们把之前的注册码的Meta数据修改为level3,然后这边策略使用者,重启实盘测试。

可以看到上图,触发了level3等级限定持仓最大只能为1个币的限制。

综述

根据不同用户群体、不同付费等级出租策略时,具体配置Meta元数据,以实现策略分级控制。当然,以上只是列举了最常见的限定、控制需求。还有各种各样的类似需求都可以使用这个功能实现。

以上是关于如何通过策略出租码元数据给出租的策略指定不同的版本数据的主要内容,如果未能解决你的问题,请参考以下文章

出租车行驶速度可视化图需要啥数据,用啥软件的哪个功能做呢

粗糙分析设计模式-策略模式

粗糙分析设计模式-策略模式

出租车数据分析

基于8086的出租车计价器系统设计仿真程序报告(资料转发)

基于8086的出租车计价器系统设计仿真程序报告(资料转发)