API mở rộng của nền tảng FMZ Quant Trading gần đây đã được nâng cấp, và nâng cấp hỗ trợ chế độ truy cập trực tiếp, do đó tín hiệu cảnh báo TradingView có thể dễ dàng được gửi đến các bot trên FMZ để giao dịch tự động.
Liên kết của phần liên quan trong tài liệu API FMZ
Chức năng chính của API mở rộng là cung cấp giao diện cho các chức năng khác nhau trên nền tảng giao dịch FMZ Quant, cho các hoạt động lập trình, chẳng hạn như bắt đầu lô bot đồng thời, bắt đầu và dừng thời gian bot, đọc chi tiết thông tin bot, vv Chúng tôi sử dụng API mở rộng FMZ để thực hiện giao dịch tín hiệu cảnh báo TradingView. Nhu cầu này chỉ cần sử dụngCommandRobot(RobotId, Cmd)
giao diện trong API mở rộng. Giao diện này có thể gửi lệnh tương tác đến bot với ID được chỉ định, và bot có thể thực hiện các hoạt động tương ứng (chẳng hạn như đặt lệnh mua hoặc bán, v.v.)
Để sử dụng API mở rộng, trước tiên bạn cần tạo tài khoản của riêng bạnAPI KEY
trên FMZ:
### Direct Access Mode of Extended API
The direct access mode indicates directly writing ```API KEY``` in the Query of URL; for example, the URL accessing the extended API of FMZ Quant platform can be written as:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,“ok12345”]
Among them, ```https://www.fmz.com/api/v1``` is the interface address; ```?``` is followed by ```Query```; the parameter ```access_key``` is, for example, represented by xxx (when using, fill in the access_key of your own FMZ account); the parameter ```secret_key``` is represented by yyyy (when using, fill in your own account secret_key); the parameter ```method``` is the specific name of the extended API interface to be accessed, and ```args``` is the parameter of the ```method``` interface to be called.
We use TradingView as a signal source to send trading commands to the FMZ bots. In fact, we only use the ```CommandRobot``` interface.
### TradingView
First of all, you need to have a TradingView Pro account. The Basic level cannot use the WebHood function in the alert. We enter the Chart of TradingView.
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/269159723a8d53f907d86.png)
Add an indicator to the chart, and other script algorithms can also be used. Here, for the convenience of demonstration, we use the most commonly used ```MACD``` indicator, and then set the K-line period to 1 minute (in order to make the signal trigger faster and facilitate the demonstration).
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/26980a2ff4858e1ed81e6.png)
Right-click on the chart and select "Add Alert" from the pop-up menu.
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/2689e1efab8e133c43188.png)
Set ```WebHook``` in the "Alert" pop-up window. At this point, you don't have to worry about setting it. Let's first run the bot that monitors the signals on FMZ Quant trading platform.
### Ordering Bot of Monitoring Signal
Strategy source code:
```js
// global variable
var BUY = "buy" // Note: the command used for spot
var SELL = "sell" // the command used for futures
var LONG = "long" // the command used for futures
var SHORT = "short" // the command used for futures
var COVER_LONG = "cover_long" // the command used for futures
var COVER_SHORT = "cover_short" // the command used for futures
function main() {
// Empty the logs; delete, if not needed
LogReset(1)
// Set the precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Judge whether it is spot or futures
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added platform is a futures platform:", eName, "#FF0000")
eType = 1
if (Ct == "") {
throw "Ct contract set to null"
} else {
Log(exchange.SetContractType(Ct), "Set contract:", Ct, "#FF0000")
}
} else {
Log("The added platform is a spot platform:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect the interactive command
lastMsg = "Command:" + cmd + "Time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("Wrong cmd information:", 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("Spot trading platforms are not supported!", "#FF0000")
}
} else if (eType == 1) {
var tradeInfo = null
var 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("Futures trading platforms are not supported!", "#FF0000")
}
if (tradeInfo) {
Log("tradeInfo:", tradeInfo)
}
} else {
throw "eType error, eType:" + eType
}
acc = _C(exchange.GetAccount)
}
var tbl = {
type : "table",
title : "Status information",
cols : ["Data"],
rows : []
}
// tbl.rows.push([JSON.stringify(acc)]) // Used during testing
LogStatus(_D(), eName, "The command received last time:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
Mã rất đơn giản. Nó phát hiện ra giá trị trả về củaGetCommand
Khi có một thông điệp tương tác được gửi đến chương trình chiến lược,GetCommand
sẽ trả lại thông điệp này, và sau đó chương trình chiến lược sẽ thực hiện một hoạt động giao dịch tương ứng dựa trên nội dung của thông điệp. nút tương tác đã được thiết lập trên chiến lược, có thể kiểm tra chức năng tương tác. Ví dụ, khi chiến lược được vận hành, bot được cấu hình với nền tảng mô phỏngWexApp
của nền tảng giao dịch FMZ Quant.
Nhấp vào nút tương tác để kiểm tra khả năng bot để nhận lệnh mua.
Chúng ta có thể thấy chuỗi lệnh nhận được bởi bot là:buy:0.01
.
Chúng ta chỉ cần làm cho các tham số được vận chuyển đượcbuy:0.01
trong khi truy cậpCommandRobot
giao diện của FMZ Quant mở rộng API trong WebHook yêu cầu URL, khi cảnh báo TradingView được kích hoạt.
Trở lại TradingView, chúng tôi điền URL của WebHook.API KEY
trongaccess_key
vàsecret_key
các thông số.method
được sửa chữa, chúng ta chỉ cần truy cập API mở rộngCommandRobot
;args
tham số là dưới dạng[robot ID, command string]
, chúng ta có thể trực tiếp lấy ID robot thông qua trang bot, như được hiển thị trong hình:
Lần này khi chúng tôi kích hoạt tín hiệu, mua 0.02 đồng xu, và chuỗi lệnh là:"buy:0.02"
. Điều đó hoàn thành URL WebHook.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
Đặt trên TradingView:
Chờ tín hiệu được kích hoạt. Khi bot nhận được tín hiệu, bạn có thể thấy cảnh báo tín hiệu ở phía trên bên phải của trang, và nhật ký kích hoạt ở phía dưới bên phải của trang.
Robot nhận được tín hiệu:
Bằng cách này, bạn có thể sử dụng các chức năng biểu đồ phong phú và thuật toán chỉ số trên TradingView để hợp tác với bot chiến lược của FMZ Quant để thực hiện giao dịch tự động mà bạn muốn.
Mã chiến lược của