Gunakan API diperluas pada FMZ Quant untuk mewujudkan perdagangan sinyal peringatan "TradingView"

Penulis:Ninabadass, Dibuat: 2022-03-30 16:28:09, Diperbarui: 2022-03-31 17:32:25

Menggunakan API diperluas pada FMZ untuk merealisasikan TradingView Alert Signal Trading

Video link di Bilibili

API diperpanjang dari platform FMZ Quant Trading baru-baru ini telah ditingkatkan, dan peningkatan ini mendukung mode akses langsung, sehingga sinyal peringatan TradingView dapat dengan mudah dikirim ke bot di FMZ untuk perdagangan otomatis.

API diperluas dari FMZ Quant Platform

Tautan Bagian yang Terkait dalam Dokumentasi API FMZ

Fungsi utama dari API diperluas adalah untuk menyediakan antarmuka untuk berbagai fungsi pada platform perdagangan FMZ Quant, untuk operasi programatik, seperti batch memulai bot secara bersamaan, waktu bot memulai dan berhenti, membaca rincian informasi bot, dll. Kami menggunakan FMZ diperluas API untuk menerapkan TradingView sinyal peringatan perdagangan.CommandRobot(RobotId, Cmd)antarmuka di API diperluas. antarmuka ini dapat mengirim perintah interaktif ke bot dengan ID yang ditentukan, dan bot dapat melakukan operasi yang sesuai (seperti menempatkan pesanan untuk membeli atau menjual, dll)

Untuk menggunakan API diperpanjang, Anda harus pertama membuat akun Anda sendiriAPI KEYdi FMZ:img

API KEYterdiri dariaccess keydansecret key; API KEYadalah kunci untuk secara programmatic mengoperasikan FMZ Quant Trading platform, jadi pastikan untuk menyimpannya dengan benar dan tidak mengungkapkan.API KEY, Anda dapat menentukan izin. Misalnya gambar di atas hanya memberikanAPI KEYizin untuk mengaksesCommandRobot(RobotId, Cmd)Dalam contoh ini, untuk alasan keamanan, silakan hanya memberikan izin aksesCommandRobot(RobotId, Cmd)antarmuka ke FMZ diperpanjangAPI KEY.

Mode Akses Langsung dari API Terluas

Mode akses langsung menunjukkan langsung menulisAPI KEYdalam Query of URL; misalnya, URL yang mengakses API diperpanjang dari platform FMZ Quant dapat ditulis sebagai:

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

Di antaranya,https://www.fmz.com/api/v1adalah alamat antarmuka;?diikuti olehQuery; parameteraccess_keyadalah, misalnya, diwakili oleh xxx (saat menggunakan, isi akses_key akun FMZ Anda sendiri); parametersecret_keydiwakili oleh yyyy (saat menggunakan, isi akun Anda sendiri rahasia_kunci); parametermethodadalah nama spesifik antarmuka API diperluas yang akan diakses, danargsadalah parameter darimethodantarmuka yang akan dipanggil.

Kami menggunakan TradingView sebagai sumber sinyal untuk mengirim perintah perdagangan ke bot FMZ.CommandRobot interface.

TradingView

Pertama-tama, Anda perlu memiliki akun TradingView Pro. Tingkat Dasar tidak dapat menggunakan fungsi WebHood dalam peringatan.

img

Tambahkan indikator ke grafik, dan algoritma skrip lainnya juga dapat digunakan.MACDindikator, dan kemudian atur periode garis K menjadi 1 menit (untuk membuat sinyal memicu lebih cepat dan memfasilitasi demonstrasi).

img

Klik kanan pada grafik dan pilih Tambahkan Alert dari menu pop-up.

img

SetWebHookdi jendela pop-up Alert. Pada titik ini, Anda tidak perlu khawatir tentang mengaturnya. Mari kita pertama-tama menjalankan bot yang memantau sinyal di platform perdagangan FMZ Quant.

Pemesanan Bot dari sinyal pemantauan

Kode sumber strategi:

// 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)
    }
}

Kode Sumber Strategi

Kode ini sangat sederhana. Ini mendeteksi nilai kembali dariGetCommandKetika ada pesan interaktif yang dikirim ke program strategi,GetCommandakan mengembalikan pesan ini, dan kemudian program strategi akan melakukan operasi perdagangan yang sesuai berdasarkan isi pesan. tombol interaksi telah diatur pada strategi, yang dapat menguji fungsi interaktif. misalnya ketika strategi dioperasikan, bot dikonfigurasi dengan platform simulasiWexAppdari platform perdagangan FMZ Quant.

img

Klik tombol interaksi untuk menguji kapasitas bot untuk menerima perintah untuk membeli.

img

Kita bisa melihat string perintah yang diterima oleh bot adalah:buy:0.01.

Kita hanya perlu membuat parameter dibawa menjadibuy:0.01saat mengaksesCommandRobotantarmuka FMZ Quant diperluas API di WebHook permintaan URL, ketika peringatan TradingView dipicu.

WebHook Konfigurasi TradingView

Kembali ke TradingView, kita mengisi URL WebHook.API KEYdalamaccess_keydansecret_keyparameter.methoddiperbaiki, kita hanya perlu mengakses API diperpanjangCommandRobot; yangargsparameter adalah dalam bentuk[robot ID, command string], kita dapat langsung mendapatkan ID robot melalui halaman bot, seperti yang ditunjukkan pada gambar:img

Kali ini ketika kita memicu sinyal, membeli koin 0.02, dan string perintah adalah:"buy:0.02"Itu menyelesaikan URL WebHook.

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

Setel pada TradingView:

img

Tunggu sinyal untuk dipicu. Ketika bot menerima sinyal, Anda dapat melihat peringatan sinyal di kanan atas halaman, dan log pemicu di kanan bawah halaman.

Robot menerima sinyal:img

Dengan cara ini, Anda dapat menggunakan fungsi grafik yang kaya dan algoritma indikator di TradingView untuk bekerja sama dengan bot strategi FMZ Quant untuk mewujudkan perdagangan otomatis yang Anda inginkan.

Kode strategi Ordering Bot of Monitoring Signal hanya untuk studi dan penelitian. Ini perlu dioptimalkan dan disesuaikan untuk penggunaan bot nyata. Ini juga mendukung futures. Kami merekomendasikan untuk mengaturnya ke mode pesanan pasar. Untuk rincian, silakan lihat parameter kode strategi. Jika Anda memiliki pertanyaan atau saran, silakan tinggalkan pesan.


Lebih banyak