API lanjutan platform FMZ Quant Trading baru-baru ini telah dinaik taraf, dan peningkatan ini menyokong mod akses langsung, supaya isyarat amaran TradingView dapat dengan mudah dihantar ke bot di FMZ untuk perdagangan automatik.
Pautan bahagian yang berkaitan dalam dokumentasi FMZ API
Fungsi utama API yang diperluaskan adalah untuk menyediakan antara muka untuk pelbagai fungsi di platform perdagangan FMZ Quant, untuk operasi programatik, seperti bot permulaan batch secara serentak, permulaan bot masa dan berhenti, membaca butiran maklumat bot, dll. Kami menggunakan API diperluaskan FMZ untuk melaksanakan perdagangan isyarat amaran TradingView. Permintaan ini hanya perlu menggunakanCommandRobot(RobotId, Cmd)
antara muka dalam API yang dilanjutkan. Antara muka ini boleh menghantar arahan interaktif kepada bot dengan ID yang ditentukan, dan bot boleh melakukan operasi yang sesuai (seperti meletakkan pesanan untuk membeli atau menjual, dll.)
Untuk menggunakan API lanjutan, anda perlu membuat akaun anda sendiriAPI KEY
di 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)
}
}
Kod ini sangat mudah. Ia mengesan nilai pulanganGetCommand
Apabila ada mesej interaktif yang dihantar ke program strategi,GetCommand
akan mengembalikan mesej ini, dan kemudian program strategi akan membuat operasi dagangan yang sepadan berdasarkan kandungan mesej. butang interaksi telah ditetapkan pada strategi, yang boleh menguji fungsi interaktif. contohnya, apabila strategi dikendalikan, bot dikonfigurasi dengan platform simulasiWexApp
dari platform dagangan FMZ Quant.
Klik butang interaksi untuk menguji keupayaan bot untuk menerima perintah untuk membeli.
Kita boleh lihat rentetan arahan yang diterima oleh bot adalah:buy:0.01
.
Kita hanya perlu membuat parameter dibawa menjadibuy:0.01
semasa mengaksesCommandRobot
antara muka FMZ Quant API lanjutan dalam URL permintaan WebHook, apabila amaran TradingView dicetuskan.
Kembali ke TradingView, kita mengisi URL WebHook.API KEY
dalamaccess_key
dansecret_key
parameter.method
adalah tetap, kita hanya perlu mengakses API yang dilanjutkanCommandRobot
;args
parameter adalah dalam bentuk[robot ID, command string]
, kita boleh mendapatkan ID robot secara langsung melalui halaman bot, seperti yang ditunjukkan dalam gambar:
Kali ini apabila kita mencetuskan isyarat, membeli 0.02 syiling, dan rentetan arahan adalah:"buy:0.02"
. Itu melengkapkan URL WebHook.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
Tetapkan pada TradingView:
Tunggu isyarat akan diaktifkan. Apabila bot menerima isyarat, anda boleh melihat isyarat amaran di sebelah kanan atas halaman, dan log pencetus di sebelah kanan bawah halaman.
Bot menerima isyarat:
Dengan cara ini, anda boleh menggunakan fungsi carta yang kaya dan algoritma penunjuk pada TradingView untuk bekerjasama dengan bot strategi FMZ Quant untuk merealisasikan perdagangan automatik yang anda mahukan.
Kod strategi