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

Tác giả:Ninabadass, Tạo: 2022-03-30 16:28:09, Cập nhật: 2022-03-31 17:32:25

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

Liên kết video trên Bilibili

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

API mở rộng của nền tảng FMZ Quant

Liên kết của phần liên quan trong tài liệu API FMZ

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ư bắt đầu lô bot đồng thời, bắt đầu và dừng thời gian bot, đọc chi tiết thông tin bot, vv Chúng tôi sử dụng API mở rộng FMZ để thực hiện giao dịch tín hiệu cảnh báo TradingView. Nhu cầu này chỉ cần sử dụngCommandRobot(RobotId, Cmd)giao diện trong API mở rộng. Giao diện này có thể gửi lệnh tương tác đến bot với ID được chỉ định, và bot có thể thực hiện các hoạt động tương ứng (chẳng hạn như đặt lệnh mua hoặc bán, v.v.)

Để sử dụng API mở rộng, trước tiên bạn cần tạo tài khoản của riêng bạnAPI KEYtrên FMZ:img

API KEYbao gồmaccess keysecret key; API KEYlà chìa khóa để chương trình vận hành nền tảng FMZ Quant Trading, vì vậy hãy chắc chắn để giữ nó đúng cách và không tiết lộ nó.API KEY, bạn có thể chỉ định các quyền. Ví dụ, hình trên chỉ choAPI KEYquyền truy cập vàoCommandRobot(RobotId, Cmd)Trong ví dụ này, vì lý do an ninh, xin vui lòng chỉ cấp quyền truy cập choCommandRobot(RobotId, Cmd)giao diện với FMZ mở rộngAPI KEY.

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

Chế độ truy cập trực tiếp cho thấy viết trực tiếpAPI KEYtrong truy vấn của URL; ví dụ, URL truy cập API mở rộng của nền tảng 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"]

Trong số đó,https://www.fmz.com/api/v1là địa chỉ giao diện;?tiếp theo làQuery; tham sốaccess_keylà, ví dụ, đại diện cho xxx (khi sử dụng, điền vào access_key của tài khoản FMZ của riêng bạn); tham sốsecret_keyđược đại diện bởi yyyy (khi sử dụng, điền vào tài khoản riêng của bạn secret_key); tham số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ư một nguồn tín hiệu để gửi lệnh giao dịch đến các robot FMZ.CommandRobot interface.

TradingView

Trước hết, bạn cần có một tài khoản TradingView Pro. cấp độ cơ bản không thể sử dụng chức năng WebHood trong cảnh báo. chúng tôi nhập biểu đồ của TradingView.

img

Thêm một chỉ số vào biểu đồ, và các thuật toán kịch bản khác cũng có thể được sử dụng.MACDChỉ số, và sau đó đặt thời gian K-line thành 1 phút (để làm cho tín hiệu kích hoạt nhanh hơn và tạo điều kiện cho việc chứng minh).

img

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

img

ĐặtWebHooktrong cửa sổ popup Alert. Tại thời điểm này, bạn không cần phải lo lắng về việc thiết lập nó. Hãy chạy đầu tiên bot theo dõi các tín hiệu trên nền tảng giao dịch FMZ Quant.

Đặt hàng Bot của 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 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)
    }
}

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

Mã rất đơn giản. Nó phát hiện ra giá trị trả về củaGetCommandKhi có một thông điệp tương tác được gửi đến chương trình chiến lược,GetCommandsẽ trả lại thông điệp này, và sau đó chương trình chiến lược sẽ thực hiện một hoạt động giao dịch tương ứng dựa trên nội dung của thông điệp. nút tương tác đã được thiết lập trên chiến lược, có thể kiểm tra chức năng tương tác. Ví dụ, khi chiến lược được vận hành, bot được cấu hình với nền tảng mô phỏngWexAppcủa nền tảng giao dịch FMZ Quant.

img

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

img

Chúng ta có thể thấy chuỗi lệnh nhận được bởi bot là:buy:0.01.

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

Cấu hình WebHook của TradingView

Trở lại TradingView, chúng tôi điền URL của WebHook.API KEYtrongaccess_keysecret_keycác thông số.methodđược sửa chữa, chúng ta chỉ cần truy cập API mở rộngCommandRobot;argstham số là dưới dạng[robot ID, command string], chúng ta có thể trực tiếp lấy ID robot thông qua trang bot, như được hiển thị trong hình:img

Lần này khi chúng tôi kích hoạt tín hiệu, mua 0.02 đồng xu, và chuỗi lệnh là:"buy:0.02". Điều đó hoàn thành URL WebHook.

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

Đặt trên TradingView:

img

Chờ tín hiệu được kích hoạt. Khi bot nhận được tín hiệu, bạn có thể thấy cảnh báo tín hiệu ở phía trên bên phải của trang, và nhật ký kích hoạt ở phía dưới bên phải của trang.

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

Bằng cách này, bạn có thể sử dụng các chức năng biểu đồ phong phú và thuật toán chỉ số trên TradingView để hợp tác với bot chiến lược của FMZ Quant để thực hiện giao dịch tự động mà bạn muốn.

Mã chiến lược của Ordering Bot of Monitoring Signal chỉ dành cho nghiên cứu và nghiên cứu. Nó cần được tối ưu hóa và điều chỉnh để sử dụng các bot thực sự. Nó cũng hỗ trợ tương lai. Chúng tôi khuyên bạn nên đặt nó vào chế độ lệnh thị trường. Để biết chi tiết, vui lòng tham khảo các tham số mã chiến lược. 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.


Thêm nữa