Используйте расширенный API на FMZ Quant для реализации трейдинга сигналов предупреждения "TradingView"

Автор:Нинабадасс., Создано: 2022-03-30 16:28:09, Обновлено: 2022-03-31 17:32:25

Использование расширенного API на FMZ для реализации TradingView Alert Signal Trading

Видео ссылка на Bilibili

Расширенный API платформы FMZ Quant Trading недавно был обновлен, и обновление поддерживает режим прямого доступа, так что сигнал предупреждения TradingView может быть легко отправлен ботам на FMZ для автоматической торговли.

Расширенный API квантовой платформы FMZ

Ссылка на сопутствующую часть в документации FMZ API

Основная функция расширенного API заключается в предоставлении интерфейсов для различных функций на торговой платформе FMZ Quant, для программируемых операций, таких как одновременное запуск ботов, время запуска и остановки бота, чтение деталей информации бота и т. Д. Мы используем расширенный API FMZ для реализации торгового сигнала предупреждения TradingView.CommandRobot(RobotId, Cmd)Этот интерфейс может отправлять интерактивные команды боту с указанным ID, и бот может выполнять соответствующие операции (например, размещение ордера на покупку или продажу и т. Д.)

Чтобы использовать расширенный API, вам сначала нужно создать свой собственный аккаунтAPI KEYна FMZ:img

API KEYсостоит из:access keyиsecret key; API KEYЭто ключ к программированию FMZ Quant Trading платформы, поэтому убедитесь, что вы храните его должным образом и не раскрывайте его.API KEY, вы можете указать разрешения. Например, приведенная выше фигура дает толькоAPI KEYразрешение на доступ кCommandRobot(RobotId, Cmd)В этом примере, по соображениям безопасности, пожалуйста, разрешите доступ толькоCommandRobot(RobotId, Cmd)расширенный интерфейс FMZAPI KEY.

Режим прямого доступа расширенного API

Режим прямого доступа указывает на прямое письмо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 (Вид торговли)

Прежде всего, вам нужно иметь учетную запись TradingView Pro. Основной уровень не может использовать функцию WebHood в оповещении. Мы вводим график TradingView.

img

Добавьте индикатор к диаграмме, и другие алгоритмы сценария также могут быть использованы.MACDиндикатор, а затем установить период K-линии на 1 минуту (чтобы сделать сигнал более быстрым и облегчить демонстрацию).

img

Правый клик на графике и выберите Добавить предупреждение из всплывающего меню.

img

УстановленоWebHookв всплывающем окне Alert. В этот момент вам не нужно беспокоиться о настройке. Давайте сначала запустим бота, который отслеживает сигналы на торговой платформе FMZ Quant.

Бот-заказчик сигнала мониторинга

Источник стратегии:

// 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.

img

Нажмите кнопку взаимодействия, чтобы проверить способность бота получать команду на покупку.

img

Мы видим, что командная строка, полученная ботом:buy:0.01.

Нам нужно только сделать перенесенный параметр бытьbuy:0.01во время доступа кCommandRobotинтерфейс расширенного API FMZ Quant в URL запроса WebHook, когда запускается предупреждение TradingView.

Конфигурация WebHook TradingView

Возвращаясь к TradingView, мы заполняем URL-адрес WebHook.API KEYвaccess_keyиsecret_keyпараметров.methodисправлено, нам нужно только получить доступ к расширенному APICommandRobot;argsпараметр представляется в виде:[robot ID, command string], мы можем напрямую получить идентификатор робота через страницу бота, как показано на рисунке:img

На этот раз, когда мы запускаем сигнал, покупаем монету 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:

img

Подождите, пока сигнал не запустится. Когда бот получает сигнал, вы можете увидеть сигнал оповещения в правом верхнем углу страницы, а запуск в правом нижнем углу страницы.

Бот получил сигнал:img

Таким образом, вы можете использовать богатые графические функции и алгоритмы индикаторов на TradingView для сотрудничества с ботом стратегии FMZ Quant для реализации автоматизированной торговли, которую вы хотите.

Код стратегии Ordering Bot of Monitoring Signal предназначен только для изучения и исследования. Он должен быть оптимизирован и скорректирован для использования реальных ботов. Он также поддерживает фьючерсы. Мы рекомендуем установить его в режим рыночного заказа. Для подробной информации обратитесь к параметрам кода стратегии. Если у вас есть вопросы или предложения, пожалуйста, оставьте сообщение.


Больше