目前不清退的交易所推荐:
1、全球第二大交易所OKX欧意
国区邀请链接: https://www.myts3cards.com/cn/join/1837888 币种多,交易量大!
国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!
2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183
全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031 币安注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。支持币种多,交易安全!
买好币上KuCoin:https://www.kucoin.com/r/af/1f7w3 CoinMarketCap前五的交易所,注册友好操简单快捷!
FMZ量化交易平台邀请链接:https://www.fmz.com/
可视化编辑策略扩展自定义类库
如何给可视化策略扩展自己需要的自定义类库呢?例如我希望计算MA指标,但是系统自带的只有:
这些指标,如何能添加自定义的一些代码呢?
我们就以添加自定义的MA指标计算模块为例,讲解如何扩展可视化模块。
数字货币现货交易类库
首先讲一下【数字货币现货交易类库】这个模板,地址为:https://www.fmz.com/strategy/10989
虽然该模板为FMZ平台JavaScript语言的模板(不理解模板概念的同学,可以到FMZ API 文档查询:https://www.fmz.com/api#模板类库)
但是模板开头部分的注释中有定义可视化模块的代码,并且定义的代码中可以引用这个JavaScript模板的代码。这就非常方便我们自己扩展了(给了一个很好的例子,让我们模仿)。
数字货币现货交易类库,开头部分的可视化定义:
/*blockly
{
\"type\": \"ext_Trade\",
\"message0\": \"%1 币数 %2|%1 Coins %2\",
\"args0\": [{
\"type\": \"field_dropdown\",
\"options\": [
[\"买入|Buy\", \"Buy\"],
[\"卖出|Sell\", \"Sell\"]
]
}, {
\"type\": \"input_value\",
\"check\": \"Number\"
}],
\"template\": \"(function(){var r = $.%1(%2); return r ? r.amount : 0; })()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": \"Number\",
\"colour\": 85
}, {
\"type\": \"ext_CancelPendingOrders\",
\"message0\": \"取消 %1 订单|Cancel %1 Orders\",
\"args0\": [{
\"type\": \"field_dropdown\",
\"name\": \"TYPE\",
\"options\": [
[\"所有|All\", \" \"],
[\"买单|Buy\", \"ORDER_TYPE_BUY\"],
[\"卖单|Sell\", \"ORDER_TYPE_SELL\"]
]
}],
\"previousStatement\": null,
\"nextStatement\": null,
\"template\": \"$.CancelPendingOrders(%1);\",
\"colour\": 85
}, {
\"type\": \"ext_Cross\",
\"message0\": \"计算交叉 周期 %1 与 %2|Cross Period %1 and %2\",
\"inputsInline\": true,
\"args0\": [{
\"type\": \"input_value\"
}, {
\"type\": \"input_value\"
}],
\"template\": \"$.Cross(%1,%2)\",
\"order\": \"ORDER_ATOMIC\",
\"output\": \"Number\"
}, {
\"type\": \"ext_GetAccount\",
\"message0\": \"获取资产信息|GetAccount\",
\"template\": \"$.GetAccount()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": null
}
*/
分别对应可视化编辑页面中的模块:
构造一个自己定义的计算MA指标的模块
有了现成的例子,那么自己动手构造就很简单了,比葫芦画瓢即可。
首先,新建一个JavaScript语言的模板。
编辑模板代码。
/*blockly
{
\"type\": \"ext_testA\",
\"message0\": \"testA|testA\",
\"template\": \"function(){return 99;}()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": \"Number\"
},{
\"type\": \"ext_MA\",
\"message0\": \"MA 周期 %1| MA Period %1\",
\"args0\": [{
\"type\": \"input_value\",
\"check\": \"Number\"
}],
\"template\": \"(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": null,
\"colour\": 85
}
*/
- type : 属性定义模块类型,可以自己起名字定义。
- message0 : 模块上显示的文本。
- template :模块执行的代码。
- output :模块输出的类型。
- args0 :模块的输入参数,在模块定义代码中%1代表第一个输入参数,%2代表第二个。
新建的这个模板编辑好之后,保存。
在到我们需要使用这个模板的策略中,勾选上这个模板。
可以看到多出了两个模块:
- 名为:testA 的模块,我们看下他的执行代码:
function(){return 99;}()
就是很简单的一个JavaScript函数,执行返回一个数值99。
- 名为:MA周期的模块,我们看下他的执行代码:
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
代码是一个匿名函数调用,匿名函数中首先执行了获取K线数据操作,K线数据r
。然后根据获取的r是不是为null
或者r
的长度是不是小于模块的输入参数%1
去判断返回false
还是返回TA.MA(r, %1)
计算的指标结果。
接下来就可以使用了。
测试计算MA指标
可视化策略编辑:
运行:
可以看到以上如愿以偿的拿到了MA指标计算的数据。
以上只是抛砖引玉,对于可视化模块的设计可以使用模板功能自行扩展。
FMZ量化交易平台邀请链接:https://www.fmz.com/
全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031 币安注册不了IP地址用香港,居住地选香港,认证照旧,邮箱推荐如gmail、outlook。支持币种多,交易安全!
买好币上KuCoin:https://www.kucoin.com/r/af/1f7w3 CoinMarketCap前五的交易所,注册友好操简单快捷!
目前不清退的交易所推荐:
1、全球第二大交易所OKX欧意,邀请链接:https://www.myts3cards.com/cn/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!。
2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183
买好币上币库:https://www.kucoin.com/r/1f7w3
火必所有用户现在可用了,但是要重新注册账号火币:https://www.huobi.com
全球最大交易所币安,
国区邀请链接:https://accounts.suitechsui.mobi/zh-CN/register?ref=16003031 支持86手机号码,网页直接注册。
这些指标,如何能添加自定义的一些代码呢?
我们就以添加自定义的MA指标计算模块为例,讲解如何扩展可视化模块。
虽然该模板为FMZ平台JavaScript语言的模板(不理解模板概念的同学,可以到FMZ API 文档查询:https://www.fmz.com/api#模板类库)
但是模板开头部分的注释中有定义可视化模块的代码,并且定义的代码中可以引用这个JavaScript模板的代码。这就非常方便我们自己扩展了(给了一个很好的例子,让我们模仿)。
/*blockly
{
\"type\": \"ext_Trade\",
\"message0\": \"%1 币数 %2|%1 Coins %2\",
\"args0\": [{
\"type\": \"field_dropdown\",
\"options\": [
[\"买入|Buy\", \"Buy\"],
[\"卖出|Sell\", \"Sell\"]
]
}, {
\"type\": \"input_value\",
\"check\": \"Number\"
}],
\"template\": \"(function(){var r = $.%1(%2); return r ? r.amount : 0; })()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": \"Number\",
\"colour\": 85
}, {
\"type\": \"ext_CancelPendingOrders\",
\"message0\": \"取消 %1 订单|Cancel %1 Orders\",
\"args0\": [{
\"type\": \"field_dropdown\",
\"name\": \"TYPE\",
\"options\": [
[\"所有|All\", \" \"],
[\"买单|Buy\", \"ORDER_TYPE_BUY\"],
[\"卖单|Sell\", \"ORDER_TYPE_SELL\"]
]
}],
\"previousStatement\": null,
\"nextStatement\": null,
\"template\": \"$.CancelPendingOrders(%1);\",
\"colour\": 85
}, {
\"type\": \"ext_Cross\",
\"message0\": \"计算交叉 周期 %1 与 %2|Cross Period %1 and %2\",
\"inputsInline\": true,
\"args0\": [{
\"type\": \"input_value\"
}, {
\"type\": \"input_value\"
}],
\"template\": \"$.Cross(%1,%2)\",
\"order\": \"ORDER_ATOMIC\",
\"output\": \"Number\"
}, {
\"type\": \"ext_GetAccount\",
\"message0\": \"获取资产信息|GetAccount\",
\"template\": \"$.GetAccount()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": null
}
*/
/*blockly
{
\"type\": \"ext_testA\",
\"message0\": \"testA|testA\",
\"template\": \"function(){return 99;}()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": \"Number\"
},{
\"type\": \"ext_MA\",
\"message0\": \"MA 周期 %1| MA Period %1\",
\"args0\": [{
\"type\": \"input_value\",
\"check\": \"Number\"
}],
\"template\": \"(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()\",
\"order\": \"ORDER_ATOMIC\",
\"output\": null,
\"colour\": 85
}
*/
在到我们需要使用这个模板的策略中,勾选上这个模板。
function(){return 99;}()
就是很简单的一个JavaScript函数,执行返回一个数值99。
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
代码是一个匿名函数调用,匿名函数中首先执行了获取K线数据操作,K线数据r
。然后根据获取的r是不是为null
或者r
的长度是不是小于模块的输入参数%1
去判断返回false
还是返回TA.MA(r, %1)
计算的指标结果。
买好币上KuCoin:https://www.kucoin.com/r/af/1f7w3 CoinMarketCap前五的交易所,注册友好操简单快捷!
目前不清退的交易所推荐:
1、全球第二大交易所OKX欧意,邀请链接:https://www.myts3cards.com/cn/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!。
2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183
买好币上币库:https://www.kucoin.com/r/1f7w3