网站建设资讯

NEWS

网站建设资讯

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

这期内容当中小编将会给大家带来有关如何使用发明者量化交易平台扩展API实现TradingView报警信号交易,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、大祥网络推广、小程序设计、大祥网络营销、大祥企业策划、大祥品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供大祥建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

发明者API文档相关部分链接

扩展API的主要作用是给程序化操作发明者量化交易平台上的各种功能提供接口,例如同时批量启动机器人,定时机器人启动、停止,读取机器人信息详情等。我们使用发明者量化交易平台扩展API实现TradingView报警信号交易这个需求计划只用扩展API中的CommandRobot(RobotId, Cmd)接口即可,这个接口可以给指定ID的机器人发送交互指令,机器人接收到指令即可执行对应操作(例如下单买入、卖出等)。

要使用扩展API,首先需要创建自己的发明者账号的API KEY:
如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

API KEY秘钥由access keysecret key组成,API KEY即程序化操作发明者量化交易平台的钥匙,所以一定要妥善保管,切勿泄露。

扩展API的直接访问模式

直接访问模式是指把API KEY直接写在URL的Query中,例如访问发明者量化交易平台扩展API的URL可以写成:

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]

其中,https://www.fmz.com/api/v1是接口地址,?之后是Query,参数access_key秘钥举例用xxx表示(使用时填写自己的FMZ账号的access_key),参数secret_key秘钥用yyyy表示(使用时具体填写自己的账号secret_key),参数method是要访问的扩展API接口具体名称,args为要调用的method接口的参数。

我们使用TradingView作为信号源,向发明者量化交易平台机器人发送交易命令,其实就只用CommandRobot这个接口。

TradingView

首先你要有个TradingView Pro级别的账户,Basic级别是无法使用报警中的WebHood功能的。我们进入TradingView的图表。

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

向图表添加一个指标,也可以是其它的脚本算法。这里为了方便演示我们使用最常用的MACD指标,然后设置K线周期为1分钟(为了让信号更快的触发,方便演示)。

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

在图表上点击右键,弹出菜单中选择「添加警报」。

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

在「警报」弹窗中设置WebHook,到了这一步可以先不用着急设置,我们先把发明者量化交易平台这边的监控信号的机器人运行起来。

监控信号下单机器人

策略源码:

// 全局变量var BUY = "buy"var SELL = "sell"var LONG = "long"var SHORT = "short"var COVER_LONG = "cover_long"var COVER_SHORT = "cover_short"function main() {// 清空日志,如不需要,可以删除LogReset(1)	// 设置精度exchange.SetPrecision(QuotePrecision, BasePrecision)// 识别期货还是现货var eType = 0var eName = exchange.GetName()var patt = /Futures_/if (patt.test(eName)) {Log("添加的交易所为期货交易所:", eName, "#FF0000")eType = 1if (Ct == "") {throw "Ct 合约设置为空"} else {        	Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
        }
    } else {    	Log("添加的交易所为现货交易所:", eName, "#32CD32")
    }    var lastMsg = ""var acc = _C(exchange.GetAccount)while(true) {var cmd = GetCommand()if (cmd) {// 检测交互命令lastMsg = "命令:" + cmd + "时间:" + _D()var arr = cmd.split(":")if (arr.length != 2) {Log("cmd信息有误:", cmd, "#FF0000")continue}var action = arr[0]var amount = parseFloat(arr[1])if (eType == 0) {if (action == BUY) {               var buyInfo = IsMarketOrder ? exchange.Buy(-1, amount) : $.Buy(amount)Log("buyInfo:", buyInfo)
                } else if (action == SELL) {        var sellInfo = IsMarketOrder ? exchange.Sell(-1, amount) : $.Sell(amount)Log("sellInfo:", sellInfo)
                } else {                	Log("现货交易所不支持!", "#FF0000")
                }
            } else if (eType == 1) {            	var tradeInfo = nullvar ticker = _C(exchange.GetTicker)if (action == LONG) {                	exchange.SetDirection("buy")tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                } else if (action == SHORT) {        exchange.SetDirection("sell")tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                } else if (action == COVER_LONG) {        exchange.SetDirection("closebuy")tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                } else if (action == COVER_SHORT) {        
                	exchange.SetDirection("closesell")                	tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                } else {                	Log("期货交易所不支持!", "#FF0000")
                }if (tradeInfo) {Log("tradeInfo:", tradeInfo)
                }
            } else {            	throw "eType error, eType:" + eType}acc = _C(exchange.GetAccount)
        }var tbl = {        	type : "table", 
        	title : "状态信息", 
        	cols : ["数据"], 
        	rows : []
        }tbl.rows.push([JSON.stringify(acc)])LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")    	Sleep(1000)
    }
}

策略源码

策略代码十分简单,检测GetCommand函数的返回值,当有交互消息发送给策略程序时,GetCommand函数会返回这个消息,然后策略程序根据消息内容作出对应的交易操作。该策略上已经设置了交互按钮,可以测试交互功能,例如运行起来这个策略,给机器人配置发明者量化交易平台的模拟交易所WexApp

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

点击一下交互按钮,测试一下机器人接收到命令买入的功能。

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

可以看到机器人接收到的命令字符串为:buy:0.01

我们只需让TradingView警报触发时,WebHook请求URL中访问发明者量化交易平台扩展API的CommandRobot接口时,携带的参数为buy:0.01即可。

设置TradingView的WebHook

回到TradingView中,我们填写WebHook的URL。给access_keysecret_key参数填写上自己的API KEYmethod固定的,我们要访问的就只是CommandRobot这个扩展API接口,args参数为[机器人ID,命令字符串]的形式,机器人ID我们可以通过机器人页面直接获取,如图:
如何使用发明者量化交易平台扩展API实现TradingView报警信号交易
这次我们让信号触发时,买入0.02个币,命令字符串就为:"buy:0.02"。这样WebHook URL就完成了。

https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755,"buy:0.02"]

在TradingView上设置:

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

等待信号触发...
等待信号触发..
等待信号触发.
...

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

机器人接收到了信号:

如何使用发明者量化交易平台扩展API实现TradingView报警信号交易

这样就可以使用TradingView上的丰富的图表功能、指标算法配合发明者量化交易平台的策略机器人,实现自己想要的自动化交易,相对于把TradingView上的策略移植成JavaScript、Python语言难度直线下降。

上述就是小编为大家分享的如何使用发明者量化交易平台扩展API实现TradingView报警信号交易了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


当前名称:如何使用发明者量化交易平台扩展API实现TradingView报警信号交易
链接地址:http://cdweb.net/article/ghgpcc.html