Sử dụng API mở rộng trên nền tảng giao dịch FMZ Quant để thực hiện giao dịch tín hiệu cảnh báo TradingView

Tác giả:Lydia., Tạo: 2022-12-14 13:42:41, Cập nhật: 2023-09-20 10:17:53

img

Sử dụng API mở rộng trên nền tảng giao dịch FMZ Quant để thực hiện giao dịch tín hiệu cảnh báo TradingView

API mở rộng trên nền tảng giao dịch FMZ Quant đã được nâng cấp gần đây để hỗ trợ truy cập trực tiếp, để nó có thể dễ dàng gửi tín hiệu cảnh báo TradingView cho robot nền tảng giao dịch FMZ Quant để giao dịch tự động.

API mở rộng trên nền tảng giao dịch FMZ Quant

Một số liên kết đến tài liệu API về FMZ (https://www.fmz.com/api)

Chức năng chính của API mở rộng là cung cấp giao diện cho các chức năng khác nhau trên nền tảng giao dịch FMZ Quant cho các hoạt động lập trình, chẳng hạn như khởi động robot trong các lô đồng thời, thời gian robot để bắt đầu và dừng lại, đọc chi tiết thông tin robot, v.v. Chúng tôi sử dụng API mở rộng trên nền tảng giao dịch FMZ Quant để thực hiện kế hoạch nhu cầu của giao dịch tín hiệu cảnh báo TradingView, chỉ sử dụngCommandRobot(RobotId, Cmd)giao diện trong API mở rộng. Giao diện này có thể gửi các hướng dẫn tương tác cho robot với ID được chỉ định, và robot có thể thực hiện các hoạt động tương ứng (chẳng hạn như đặt lệnh mua, bán, v.v.) sau khi nhận được các hướng dẫn. Để sử dụng API mở rộng, bạn cần tạo mộtAPI KEYcho tài khoản FMZ của riêng bạn trước tiên:

img

Chìa khóa bí mật củaAPI KEYbao gồmaccess keysecret key. API KEYlà chìa khóa để định lượng FMZ Quant Trading Platform của hoạt động chương trình, vì vậy nó phải được giữ đúng và không được tiết lộ.API KEYtrên FMZ, bạn có thể chỉ định quyền. Ví dụ, hình trên chỉ choAPI KEYquyền truy cập vàoCommandRobot(RobotId, Cmd)Đối với ví dụ này, dựa trên các cân nhắc an ninh, xin vui lòng chỉ cung cấp các mở rộngAPI KEYvề phép FMZ để truy cậpCommandRobot(RobotId, Cmd) interface.

Chế độ truy cập trực tiếp của API mở rộng

Chế độ truy cập trực tiếp có nghĩa làAPI KEYVí dụ, URL để truy cập API mở rộng trên nền tảng giao dịch FMZ Quant có thể được viết như sau:

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]

Ở đâu?https://www.fmz.com/api/v1là địa chỉ giao diện,?tiếp theo làQuery, tham sốaccess_keykhóa bí mật được đại diện bởi xxx ví dụ (đổ vào access_key của tài khoản FMZ của riêng bạn khi bạn sử dụng nó). Các tham sốsecret_keyđược đại diện bởi yyyy (đổ vào tài khoản riêng của bạn secret_key khi bạn sử dụng nó).methodlà tên cụ thể của giao diện API mở rộng được truy cập, vàargslà tham số củamethodgiao diện được gọi.

Chúng tôi sử dụng TradingView như là nguồn tín hiệu để gửi lệnh giao dịch đến robot FMZ Quant Trading Platform.CommandRobot interface.

TradingView

Đầu tiên, bạn phải có một tài khoản cấp TradingView Pro. Chức năng WebHood trong cảnh báo không thể được sử dụng ở cấp cơ bản.

Trong biểu đồ TradingView, bạn có thể thêm một chỉ số vào biểu đồ hoặc các thuật toán kịch bản khác.MACDchỉ số, và sau đó chúng tôi thiết lập thời gian K-line đến 1 phút (để kích hoạt tín hiệu nhanh hơn và dễ dàng chứng minh).

Nhấp chuột phải vào biểu đồ và chọn Add Alert từ menu bật lên.

ĐặtWebHookTại thời điểm này, chúng ta có thể chạy robot tín hiệu giám sát trên nền tảng giao dịch lượng tử FMZ đầu tiên.img

Robot chỉ thị tín hiệu giám sát

Mã nguồn chiến lược:

// Global variable
var BUY = "buy"     // Note: The command used for spot
var SELL = "sell"   //      The command used for spot
var LONG = "long"   // The command used for future
var SHORT = "short" // The command used for future
var COVER_LONG = "cover_long"   // The command used for future
var COVER_SHORT = "cover_short" // The command used for future

function main() {
    // Clear the log and delete it if not needed
    LogReset(1)

    // Set precision
    exchange.SetPrecision(QuotePrecision, BasePrecision)

    // Identify future or spot
    var eType = 0
    var eName = exchange.GetName()
    var patt = /Futures_/
    if (patt.test(eName)) {
        Log("The added exchange is a futures exchange:", 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 exchange is a spots exchange:", eName, "#32CD32")
    }
    
    var lastMsg = ""
    var acc = _C(exchange.GetAccount)
    while(true) {
        var cmd = GetCommand()
        if (cmd) {
            // Detect interactive commands
            lastMsg = "command:" + cmd + "time:" + _D()
            var arr = cmd.split(":")
            if (arr.length != 2) {
                Log("cmd incorrect 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("The spots exchange is 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("The futures exchange is 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)])   // Use it when testing
        LogStatus(_D(), eName, "Last received command:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(1000)
    }
}

Mã nguồn chiến lược (https://www.fmz.com/strategy/203063)

Mã chiến lược rất đơn giản. Nó phát hiện ra giá trị trả về củaGetCommandKhi một thông điệp tương tác được gửi đến chương trình chiến lược,GetCommandfunction trả về thông điệp, và chương trình chiến lược thực hiện các hoạt động giao dịch tương ứng theo nội dung thông điệp. nút tương tác đã được đặt trên chiến lược này để kiểm tra các 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ớiWexApp, một sàn giao dịch mô phỏng của nền tảng giao dịch FMZ Quant.

Chúng ta nhấp vào nút tương tác để kiểm tra chức năng của robot nhận lệnh mua, sau đó chúng ta có thể thấy rằng chuỗi lệnh nhận được bởi robot là:buy:0.01.

Chúng ta chỉ cần làm cho WebHook yêu cầu URL khi cảnh báo TradingView được kích hoạt để truy cập vàoCommandRobotgiao diện của FMZ Quant Trading Platform API mở rộng, tham số được mang theo làbuy:0.01.

Thiết lập WebHook của TradingView

Trở lại trong TradingView, chúng tôi điền vào URL của WebHook. điền vào API của riêng bạn KEY cho các thông sốaccess_key, secret_key.methodChúng ta chỉ cần truy cậpCommandRobotgiao diện API mở rộng. Các tham sốargslà dưới dạng:[Robot ID, Command String]Chúng ta có thể nhận được robot ID thông qua trang robot, trực tiếp như được hiển thị trong hình:

img

Lần này, chúng ta để tín hiệu kích hoạt, mua 0.02 đồng xu, và chuỗi lệnh là:buy:0.02. Sau đó WebHook URL được hoàn thành. Phương pháp này chỉ hỗ trợ viết tín hiệu trong URL. Nếu bạn muốn có được nội dung của thông điệp cảnh báo có thể được gửi bởi chính chiến lược TV, hãy tham khảohttps://www.fmz.com/api#xác minh trực tiếp.

https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args= [191755,"buy:0.02"]

Đặt trên TradingView:

img

Chờ tín hiệu kích hoạt... Chờ tín hiệu kích hoạt... Chờ tín hiệu kích hoạt... ...

img

Sau đó, robot sẽ nhận được tín hiệu, theo cách này, chúng ta có thể sử dụng các chức năng biểu đồ và thuật toán chỉ số khác nhau trên TradingView để hợp tác với robot chiến lược của Nền tảng giao dịch FMZ Quant để đạt được giao dịch tự động bạn muốn.

Mã chiến lược của robot để đặt đơn đặt hàng bằng cách giám sát tín hiệu chỉ dành cho việc học tập và nghiên cứu. Việc sử dụng trên bot thực sự cần được tự tối ưu hóa và điều chỉnh để hỗ trợ tương lai. Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào, xin vui lòng để lại tin nhắn.


Có liên quan

Thêm nữa