Gunakan API yang diperluaskan di FMZ Quant untuk merealisasikan perdagangan isyarat amaran "TradingView"

Penulis:Ninabadass, Dicipta: 2022-03-30 16:28:09, Dikemas kini: 2022-03-31 17:32:25

Gunakan API Terpanjang di FMZ untuk merealisasikan TradingView Perdagangan Isyarat Isyarat

Pautan video di Bilibili

API lanjutan platform FMZ Quant Trading baru-baru ini telah dinaik taraf, dan peningkatan ini menyokong mod akses langsung, supaya isyarat amaran TradingView dapat dengan mudah dihantar ke bot di FMZ untuk perdagangan automatik.

API lanjutan Platform Kuantum FMZ

Pautan bahagian yang berkaitan dalam dokumentasi FMZ API

Fungsi utama API yang diperluaskan adalah untuk menyediakan antara muka untuk pelbagai fungsi di platform perdagangan FMZ Quant, untuk operasi programatik, seperti bot permulaan batch secara serentak, permulaan bot masa dan berhenti, membaca butiran maklumat bot, dll. Kami menggunakan API diperluaskan FMZ untuk melaksanakan perdagangan isyarat amaran TradingView. Permintaan ini hanya perlu menggunakanCommandRobot(RobotId, Cmd)antara muka dalam API yang dilanjutkan. Antara muka ini boleh menghantar arahan interaktif kepada bot dengan ID yang ditentukan, dan bot boleh melakukan operasi yang sesuai (seperti meletakkan pesanan untuk membeli atau menjual, dll.)

Untuk menggunakan API lanjutan, anda perlu membuat akaun anda sendiriAPI KEYdi FMZ:img

API KEYterdiri daripada:access keydansecret key; API KEYadalah kunci untuk mengoperasikan platform FMZ Quant Trading secara berprogram, jadi pastikan untuk menyimpannya dengan betul dan jangan mendedahkannya.API KEY, anda boleh menentukan keizinan. Sebagai contoh, gambar di atas hanya memberikanAPI KEYkebenaran untuk mengaksesCommandRobot(RobotId, Cmd)Dalam contoh ini, atas sebab keselamatan, sila hanya memberikan kebenaran aksesCommandRobot(RobotId, Cmd)antara muka ke FMZ diperluaskanAPI KEY.

Mod Akses Langsung API Terpanjang

Mod akses langsung menunjukkan langsung menulisAPI KEYdalam pertanyaan URL; contohnya, URL yang mengakses API lanjutan platform FMZ Quant boleh ditulis sebagai:

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

Antara mereka,https://www.fmz.com/api/v1adalah alamat antara muka;?diikuti denganQuery; parameteraccess_keyadalah, sebagai contoh, diwakili oleh xxx (apabila menggunakan, isi akses_key akaun FMZ anda sendiri); parametersecret_keydiwakili oleh yyyy (apabila menggunakan, isi dalam akaun anda sendiri rahsia_kunci); parametermethodadalah nama khusus antara muka API yang diperluaskan yang akan diakses, danargsialah parametermethodantara muka yang akan dipanggil.

Kami menggunakan TradingView sebagai sumber isyarat untuk menghantar perintah perdagangan kepada bot FMZ.CommandRobot interface.

TradingView

Pertama sekali, anda perlu mempunyai akaun TradingView Pro. Tahap asas tidak boleh menggunakan fungsi WebHood dalam amaran.

img

Tambah satu penunjuk kepada carta, dan algoritma skrip lain juga boleh digunakan.MACDpenunjuk, dan kemudian menetapkan tempoh garis K kepada 1 minit (untuk membuat isyarat mencetuskan lebih cepat dan memudahkan demonstrasi).

img

Klik kanan pada carta dan pilih Tambah Isyarat dari menu pop-up.

img

SetWebHookPada ketika ini, anda tidak perlu risau tentang menetapkannya. Mari mula-mula menjalankan bot yang memantau isyarat di platform perdagangan FMZ Quant.

Perintah Bot Isyarat Pemantauan

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

Kod Sumber Strategi

Kod ini sangat mudah. Ia mengesan nilai pulanganGetCommandApabila ada mesej interaktif yang dihantar ke program strategi,GetCommandakan mengembalikan mesej ini, dan kemudian program strategi akan membuat operasi dagangan yang sepadan berdasarkan kandungan mesej. butang interaksi telah ditetapkan pada strategi, yang boleh menguji fungsi interaktif. contohnya, apabila strategi dikendalikan, bot dikonfigurasi dengan platform simulasiWexAppdari platform dagangan FMZ Quant.

img

Klik butang interaksi untuk menguji keupayaan bot untuk menerima perintah untuk membeli.

img

Kita boleh lihat rentetan arahan yang diterima oleh bot adalah:buy:0.01.

Kita hanya perlu membuat parameter dibawa menjadibuy:0.01semasa mengaksesCommandRobotantara muka FMZ Quant API lanjutan dalam URL permintaan WebHook, apabila amaran TradingView dicetuskan.

WebHook Pengaturcaraan TradingView

Kembali ke TradingView, kita mengisi URL WebHook.API KEYdalamaccess_keydansecret_keyparameter.methodadalah tetap, kita hanya perlu mengakses API yang dilanjutkanCommandRobot;argsparameter adalah dalam bentuk[robot ID, command string], kita boleh mendapatkan ID robot secara langsung melalui halaman bot, seperti yang ditunjukkan dalam gambar:img

Kali ini apabila kita mencetuskan isyarat, membeli 0.02 syiling, dan rentetan arahan adalah:"buy:0.02". Itu melengkapkan URL WebHook.

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

Tetapkan pada TradingView:

img

Tunggu isyarat akan diaktifkan. Apabila bot menerima isyarat, anda boleh melihat isyarat amaran di sebelah kanan atas halaman, dan log pencetus di sebelah kanan bawah halaman.

Bot menerima isyarat:img

Dengan cara ini, anda boleh menggunakan fungsi carta yang kaya dan algoritma penunjuk pada TradingView untuk bekerjasama dengan bot strategi FMZ Quant untuk merealisasikan perdagangan automatik yang anda mahukan.

Kod strategi Ordering Bot of Monitoring Signal hanya untuk kajian dan penyelidikan. Ia perlu dioptimumkan dan disesuaikan untuk penggunaan bot sebenar. Ia juga menyokong niaga hadapan. Kami mengesyorkan untuk menetapkannya ke mod pesanan pasaran. Untuk butiran, sila rujuk parameter kod strategi. Jika anda mempunyai sebarang soalan atau cadangan, sila tinggalkan mesej.


Lebih lanjut