
API mở rộng của Nền tảng giao dịch định lượng Inventor gần đây đã được nâng cấp để hỗ trợ chế độ truy cập trực tiếp, giúp dễ dàng gửi tín hiệu cảnh báo TradingView đến robot Nền tảng giao dịch định lượng Inventor để thực hiện giao dịch tự động. Nếu bạn vẫn chưa biết API mở rộng là gì, hãy để tôi giải thích chi tiết.
Liên kết liên quan đến tài liệu API của Inventor
Chức năng chính của API mở rộng là cung cấp giao diện cho nhiều chức năng khác nhau trên nền tảng giao dịch định lượng của nhà phát minh hoạt động theo chương trình, chẳng hạn như khởi động robot theo lô cùng lúc, khởi động và dừng robot theo thời gian đã lên lịch, đọc thông tin chi tiết về robot, v.v. Chúng tôi sử dụng API mở rộng nền tảng giao dịch định lượng Inventor để triển khai giao dịch tín hiệu cảnh báo TradingView. Yêu cầu này chỉ yêu cầu mở rộng API.CommandRobot(RobotId, Cmd)Giao diện có thể gửi hướng dẫn tương tác đến robot có ID được chỉ định. Robot có thể thực hiện các hoạt động tương ứng (như đặt lệnh mua hoặc bán) sau khi nhận được hướng dẫn.
Để sử dụng API mở rộng, trước tiên bạn cần tạo tài khoản nhà phát minh của riêng mìnhAPI KEY:
API KEYChìa khóa làaccess keyVàsecret keythành phần,API KEYĐây là chìa khóa của nền tảng giao dịch định lượng được phát minh bởi các hoạt động được lập trình, do đó phải được lưu giữ cẩn thận và không bao giờ được tiết lộ. Tạo phần mở rộng FMZAPI KEYBạn có thể chỉ định quyền khi bạn sử dụngAPI KEYCấp quyền truy cậpCommandRobot(RobotId, Cmd)Trong ví dụ này, vì lý do bảo mật, chỉ cấp quyền cho tiện ích mở rộng FMZ.API KEYChoCommandRobot(RobotId, Cmd)Quyền truy cập vào giao diện.
Chế độ truy cập trực tiếp có nghĩa làAPI KEYViết trực tiếp vào truy vấn của URL. Ví dụ, URL để truy cập API mở rộng của Inventor Quantitative Trading Platform có thể được viết như sau:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
TRONG,https://www.fmz.com/api/v1là địa chỉ giao diện,?Sau đóQuery,tham sốaccess_keyVí dụ khóa được biểu diễn bằng xxx (điền access_key tài khoản FMZ của bạn khi sử dụng), các tham sốsecret_keyKhóa bí mật được biểu diễn bằng yyyy (điền vào khóa bí mật của tài khoản của bạn khi sử dụng), tham sốmethodLà tên cụ thể của giao diện API mở rộng cần truy cập.argsĐược gọi làmethodCác tham số của giao diện.
Chúng tôi sử dụng TradingView làm nguồn tín hiệu để gửi lệnh giao dịch đến robot nền tảng giao dịch định lượng của nhà phát minh.CommandRobotGiao diện này.
Trước hết, bạn cần có tài khoản TradingView Pro. Tính năng WebHood trong báo thức không khả dụng ở cấp độ Cơ bản. Chúng ta sẽ xem biểu đồ trên TradingView.

Thêm một chỉ báo vào biểu đồ và các thuật toán script khác. Ở đây chúng tôi sử dụng những thứ được sử dụng phổ biến nhấtMACDĐèn báo, sau đó đặt chu kỳ dòng K thành 1 phút (để kích hoạt tín hiệu nhanh hơn và tạo điều kiện trình diễn).

Nhấp chuột phải vào biểu đồ và chọn Thêm cảnh báo từ menu bật lên.

Đặt trong cửa sổ bật lên “Cảnh báo”WebHookỞ bước này, bạn không cần phải vội vàng thiết lập. Trước tiên, chúng ta hãy chạy robot theo dõi tín hiệu trên Nền tảng giao dịch định lượng của Inventor.
Mã nguồn chiến lược:
// 全局变量
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)
}
}
Mã chiến lược rất đơn giản, phát hiệnGetCommandGiá trị trả về của hàm khi một thông điệp tương tác được gửi đến chương trình chính sách,GetCommandHàm này sẽ trả về tin nhắn này và sau đó chương trình chiến lược sẽ thực hiện các hoạt động giao dịch tương ứng dựa trên nội dung của tin nhắn. Nút tương tác đã được thiết lập trên chiến lược này, có thể kiểm tra chức năng tương tác. Ví dụ, chạy chiến lược này và cấu hình robot với một cuộc trao đổi mô phỏng của Nền tảng giao dịch định lượng Inventor.WexApp。

Nhấp vào nút tương tác để kiểm tra khả năng tiếp nhận lệnh mua của robot.

Bạn có thể thấy chuỗi lệnh mà robot nhận được là:buy:0.01。
Chúng ta chỉ cần yêu cầu URL WebHook truy cập API mở rộng nền tảng giao dịch định lượng Inventor khi cảnh báo TradingView được kích hoạt.CommandRobotKhi sử dụng giao diện, các tham số được mang theo làbuy:0.01Vậy thôi.
Quay lại TradingView, chúng ta điền URL của WebHook. Đưa choaccess_key、secret_keyĐiền thông số của riêng bạnAPI KEY。methodĐã sửa, chúng ta chỉ cần truy cậpCommandRobotGiao diện API mở rộng này,argsCác thông số là[机器人ID,命令字符串]Ở dạng này, chúng ta có thể lấy trực tiếp ID của robot thông qua trang robot như hình minh họa:
Lần này chúng ta để tín hiệu kích hoạt và mua 0,02 xu. Chuỗi lệnh là:"buy:0.02". Như vậy là hoàn thành URL WebHook. Phương pháp này chỉ hỗ trợ ghi tín hiệu vào URL. Nếu bạn muốn lấy nội dung của tin nhắn cảnh báo có thể được phát ra bởi chính chiến lược TV, hãy tham khảo 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"]
Thiết lập trên TradingView:

Đang chờ tín hiệu kích hoạt… Đang chờ tín hiệu kích hoạt.. Đang chờ tín hiệu kích hoạt. …

Robot đã nhận được tín hiệu:

Theo cách này, bạn có thể sử dụng các hàm biểu đồ phong phú và thuật toán chỉ báo trên TradingView kết hợp với các robot chiến lược của Nền tảng giao dịch định lượng Inventor để đạt được giao dịch tự động mà bạn muốn. So với việc chuyển các chiến lược trên TradingView sang ngôn ngữ JavaScript và Python, độ khó được giảm đi đáng kể.
Mã chiến lược của “Robot đặt lệnh tín hiệu giám sát” chỉ dành cho mục đích học tập và nghiên cứu. Bạn cần tự tối ưu hóa và điều chỉnh để sử dụng thực tế. Nó hỗ trợ hợp đồng tương lai và nên đặt ở chế độ lệnh thị trường. Xem chiến lược tham số mã để biết chi tiết. Đây chỉ là điểm khởi đầu. Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào, vui lòng để lại tin nhắn.