
API расширения платформы количественной торговли Inventor был недавно обновлен для поддержки режима прямого доступа, что упрощает отправку сигналов тревоги TradingView роботу платформы количественной торговли Inventor для реализации автоматической торговли. Если вы все еще не знаете, что такое API расширения, позвольте мне объяснить его подробно.
Ссылки по документации API Inventor
Основная функция расширенного API — предоставить интерфейс для различных функций на количественной торговой платформе разработчика программных операций, таких как одновременный запуск роботов партиями, запуск и остановка роботов в запланированное время, считывание подробной информации о роботах и т. д. Мы используем API расширения Inventor Quantitative Trading Platform для реализации торговли по сигналу оповещения TradingView. Это требование требует только расширения API.CommandRobot(RobotId, Cmd)Интерфейс может отправлять интерактивные инструкции роботу с указанным идентификатором. Робот может выполнять соответствующие операции (например, размещать ордера на покупку или продажу) после получения инструкций.
Чтобы использовать API расширения, вам сначала необходимо создать собственную учетную запись Inventor.API KEY:
API KEYКлюч в том,access keyиsecret keyсостав,API KEYЭто ключ к количественной торговой платформе, созданной с помощью запрограммированных операций, поэтому его необходимо хранить надлежащим образом и никогда не разглашать. Создание расширения FMZAPI KEYВы можете указать разрешения при использованииAPI KEYПредоставить доступCommandRobot(RobotId, Cmd)В этом примере из соображений безопасности предоставьте разрешения только расширениям FMZ.API KEYНаделятьCommandRobot(RobotId, Cmd)Разрешения доступа к интерфейсу.
Режим прямого доступа означаетAPI KEYНапишите его непосредственно в запросе URL. Например, URL для доступа к API расширения Inventor Quantitative Trading Platform можно написать так:
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), параметрыsecret_keyСекретный ключ представлен как yyyy (при использовании введите свой собственный secret_key учетной записи), параметрmethodКонкретное имя расширенного интерфейса API, к которому необходимо получить доступ.argsЧтобы называтьсяmethodПараметры интерфейса.
Мы используем TradingView в качестве источника сигналов для отправки торговых команд на роботизированную платформу количественной торговли, разработанную изобретателем.CommandRobotЭтот интерфейс.
Прежде всего, вам необходимо иметь учетную запись TradingView Pro. Функция WebHood в будильнике недоступна на уровне Basic. Переходим к графику на TradingView.

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

Щелкните правой кнопкой мыши по диаграмме и выберите «Добавить оповещение» во всплывающем меню.

Установить во всплывающем окне «Оповещение»WebHookНа этом этапе не нужно торопиться с настройкой. Давайте сначала запустим робота, который отслеживает сигналы на платформе количественной торговли Inventor.
Исходный код стратегии:
// 全局变量
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 = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("添加的交易所为期货交易所:", eName, "#FF0000")
eType = 1
if (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 = 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("期货交易所不支持!", "#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Функция вернет это сообщение, а затем программа стратегии выполнит соответствующие торговые операции на основе содержания сообщения. Интерактивная кнопка была установлена на этой стратегии, которая может протестировать интерактивную функцию. Например, запустите эту стратегию и настройте робота с имитацией обмена Inventor Quantitative Trading Platform.WexApp。

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

Вы можете видеть, что командная строка, полученная роботом, выглядит следующим образом:buy:0.01。
Нам просто нужно сделать так, чтобы URL-адрес запроса WebHook имел доступ к API расширения количественной торговой платформы Inventor при срабатывании оповещения TradingView.CommandRobotПри использовании интерфейса переносятся следующие параметры:buy:0.01Вот и все.
Возвращаясь в TradingView, заполняем URL-адрес WebHook. Даватьaccess_key、secret_keyЗаполните свои собственные параметрыAPI KEY。methodИсправлено, нам просто нужно получить доступCommandRobotЭтот расширенный интерфейс API,argsПараметры:[机器人ID,命令字符串]В форме мы можем напрямую получить идентификатор робота через страницу робота, как показано на рисунке:
На этот раз мы позволяем сигналу сработать и покупаем 0,02 монеты. Командная строка:"buy:0.02". На этом URL-адрес WebHook завершен. Этот метод поддерживает только запись сигнала в URL. Если вы хотите получить содержимое сообщения оповещения, которое может быть выдано самой стратегией ТВ, обратитесь к https://www.fmz.com/api#%E7%9B %B4%E6 %8E%A5%E9%AA%8C%E8%AF%81.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755,"buy:0.02"]
Настройка в TradingView:

Ожидание сигнала для срабатывания… Ожидание срабатывания сигнала. Ожидание срабатывания сигнала. …

Робот получил сигнал:

Таким образом, вы можете использовать богатые функции графиков и алгоритмы индикаторов на TradingView в сочетании со стратегическими роботами платформы количественной торговли Inventor для достижения желаемой вами автоматизированной торговли. По сравнению с переносом стратегий на TradingView на языки JavaScript и Python, сложность значительно снижена.
Код стратегии “Monitoring Signal Order Placing Robot” предназначен только для обучения и исследований. Его необходимо оптимизировать и настроить самостоятельно для фактического использования. Он поддерживает фьючерсы и рекомендуется установить его в режим рыночного ордера. Смотреть стратегию параметры кода для получения подробной информации. Это только отправная точка. Если у вас есть вопросы или предложения, пожалуйста, оставьте сообщение.