Расширенный API платформы FMZ Quant Trading недавно был обновлен, и обновление поддерживает режим прямого доступа, так что сигнал предупреждения TradingView может быть легко отправлен ботам на FMZ для автоматической торговли.
Ссылка на сопутствующую часть в документации FMZ API
Основная функция расширенного API заключается в предоставлении интерфейсов для различных функций на торговой платформе FMZ Quant, для программируемых операций, таких как одновременное запуск ботов, время запуска и остановки бота, чтение деталей информации бота и т. Д. Мы используем расширенный API FMZ для реализации торгового сигнала предупреждения TradingView.CommandRobot(RobotId, Cmd)
Этот интерфейс может отправлять интерактивные команды боту с указанным ID, и бот может выполнять соответствующие операции (например, размещение ордера на покупку или продажу и т. Д.)
Чтобы использовать расширенный API, вам сначала нужно создать свой собственный аккаунтAPI KEY
на FMZ:
API KEY
состоит из:access key
иsecret key
; API KEY
Это ключ к программированию FMZ Quant Trading платформы, поэтому убедитесь, что вы храните его должным образом и не раскрывайте его.API KEY
, вы можете указать разрешения. Например, приведенная выше фигура дает толькоAPI KEY
разрешение на доступ кCommandRobot(RobotId, Cmd)
В этом примере, по соображениям безопасности, пожалуйста, разрешите доступ толькоCommandRobot(RobotId, Cmd)
расширенный интерфейс FMZAPI KEY
.
Режим прямого доступа указывает на прямое письмоAPI KEY
в запросе URL; например, URL для доступа к расширенному API платформы FMZ Quant может быть написан как:
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 (при использовании, заполните access_key вашей собственной учетной записи FMZ); параметрsecret_key
представляет собой yyyy (при использовании, заполните свой собственный аккаунт secret_key); параметрmethod
является конкретным названием расширенного интерфейса API, к которому должен быть получен доступ, иargs
является параметромmethod
интерфейс, который должен быть вызван.
Мы используем TradingView в качестве источника сигнала для отправки торговых команд ботам FMZ.CommandRobot
interface.
Прежде всего, вам нужно иметь учетную запись TradingView Pro. Основной уровень не может использовать функцию WebHood в оповещении. Мы вводим график TradingView.
Добавьте индикатор к диаграмме, и другие алгоритмы сценария также могут быть использованы.MACD
индикатор, а затем установить период K-линии на 1 минуту (чтобы сделать сигнал более быстрым и облегчить демонстрацию).
Правый клик на графике и выберите
УстановленоWebHook
в всплывающем окне
Источник стратегии:
// 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)
}
}
Код очень прост. Он обнаруживает возвращение значенияGetCommand
Когда есть интерактивное сообщение, отправленное в программу стратегии,GetCommand
будет возвращать это сообщение, а затем программа стратегии будет делать соответствующую торговую операцию на основе содержания сообщения. кнопка взаимодействия была установлена на стратегии, которая может протестировать интерактивную функцию.WexApp
торговой платформы FMZ Quant.
Нажмите кнопку взаимодействия, чтобы проверить способность бота получать команду на покупку.
Мы видим, что командная строка, полученная ботом:buy:0.01
.
Нам нужно только сделать перенесенный параметр бытьbuy:0.01
во время доступа кCommandRobot
интерфейс расширенного API FMZ Quant в URL запроса WebHook, когда запускается предупреждение TradingView.
Возвращаясь к TradingView, мы заполняем URL-адрес WebHook.API KEY
вaccess_key
иsecret_key
параметров.method
исправлено, нам нужно только получить доступ к расширенному APICommandRobot
;args
параметр представляется в виде:[robot ID, command string]
, мы можем напрямую получить идентификатор робота через страницу бота, как показано на рисунке:
На этот раз, когда мы запускаем сигнал, покупаем монету 0.02, и командная строка:"buy:0.02"
Это завершает URL-адрес WebHook.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
Настроить на TradingView:
Подождите, пока сигнал не запустится. Когда бот получает сигнал, вы можете увидеть сигнал оповещения в правом верхнем углу страницы, а запуск в правом нижнем углу страницы.
Бот получил сигнал:
Таким образом, вы можете использовать богатые графические функции и алгоритмы индикаторов на TradingView для сотрудничества с ботом стратегии FMZ Quant для реализации автоматизированной торговли, которую вы хотите.
Код стратегии