Sumber dimuat naik... memuat...

Gunakan API yang diperluaskan di Platform Dagangan Kuantum FMZ untuk merealisasikan perdagangan isyarat amaran TradingView

Penulis:FMZ~Lydia, Dicipta: 2022-12-14 13:42:41, Dikemas kini: 2023-09-20 10:17:53

img

Gunakan API yang diperluaskan di Platform Dagangan Kuantum FMZ untuk merealisasikan perdagangan isyarat amaran TradingView

API lanjutan di Platform Dagangan Kuantum FMZ telah dinaik taraf baru-baru ini untuk menyokong akses langsung, supaya ia dapat dengan mudah menghantar isyarat amaran TradingView ke robot Platform Dagangan Kuantum FMZ untuk perdagangan automatik.

API yang diperluaskan di Platform Dagangan Kuantum FMZ

Beberapa pautan ke dokumentasi API di FMZ (https://www.fmz.com/api)

Fungsi utama API yang diperluaskan adalah untuk menyediakan antara muka untuk pelbagai fungsi di Platform Dagangan Kuantum FMZ untuk operasi berprogram, seperti memulakan robot dalam batch secara serentak, masa robot untuk memulakan dan berhenti, membaca butiran maklumat robot, dll. Kami menggunakan API yang diperluaskan di Platform Dagangan Kuantum FMZ untuk merealisasikan rancangan permintaan perdagangan isyarat amaran TradingView, yang hanya menggunakanCommandRobot(RobotId, Cmd)Antara muka ini boleh menghantar arahan interaktif kepada robot dengan ID yang ditentukan, dan robot boleh melaksanakan operasi yang sepadan (seperti meletakkan pesanan untuk membeli, menjual, dll.) selepas menerima arahan. Untuk menggunakan API yang dilanjutkan, anda perlu membuatAPI KEYuntuk akaun FMZ anda sendiri terlebih dahulu:

img

Kunci rahsiaAPI KEYterdiri daripada:access keydansecret key. API KEYadalah kunci untuk mengukur FMZ Quant Trading Platform operasi programatik, jadi ia mesti disimpan dengan betul dan tidak didedahkan.API KEYpada FMZ, anda boleh menentukan kebenaran. Sebagai contoh, angka di atas hanya memberikanAPI KEYkebenaran untuk mengaksesCommandRobot(RobotId, Cmd)Untuk contoh ini, berdasarkan pertimbangan keselamatan, sila hanya memberikan sambunganAPI KEYmengenai kebenaran FMZ untuk mengaksesCommandRobot(RobotId, Cmd) interface.

Mod akses langsung API yang diperluaskan

Mod akses langsung bermaksud bahawaAPI KEYboleh ditulis secara langsung dalam URL Query. Sebagai contoh, URL untuk mengakses API lanjutan di FMZ Quant Trading Platform boleh ditulis sebagai:

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

Di mana?https://www.fmz.com/api/v1adalah alamat antara muka,?diikuti denganQuery, parameteraccess_keykunci rahsia diwakili oleh xxx sebagai contoh (isi dalam akses_key akaun FMZ anda sendiri apabila anda menggunakannya). Parametersecret_keydiwakili oleh yyyy (isi dalam akaun anda sendiri rahsia_kunci apabila anda menggunakannya). 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 transaksi ke robot Platform Dagangan Kuantum FMZ.CommandRobot interface.

TradingView

Pertama, anda mesti mempunyai akaun peringkat TradingView Pro. Fungsi WebHood dalam amaran tidak boleh digunakan pada tahap asas.

Dalam carta TradingView, anda boleh menambah penunjuk kepada carta atau algoritma skrip lain.MACDpenunjuk, dan kemudian kita menetapkan tempoh K-garis untuk 1 minit (untuk pemicu isyarat yang lebih cepat dan mudah demonstrasi).

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

SetWebHookPada ketika ini, kita boleh menjalankan robot isyarat pemantauan di Platform Dagangan Kuantum FMZ terlebih dahulu.img

Robot arahan isyarat pemantauan

Kod sumber strategi:

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

Kod sumber strategi (https://www.fmz.com/strategy/203063)

Kod strategi adalah sangat mudah. Ia mengesan nilai pulanganGetCommandApabila mesej interaktif dihantar ke program strategi,GetCommandfungsi mengembalikan mesej, dan program strategi membuat operasi transaksi yang sepadan mengikut kandungan mesej. butang interaktif telah ditetapkan pada strategi ini untuk menguji fungsi interaktif. Sebagai contoh, menjalankan strategi ini dan mengkonfigurasi robot denganWexApp, pertukaran simulasi Platform Dagangan Kuantum FMZ.

Kita klik butang interaktif untuk menguji fungsi robot untuk menerima pesanan untuk membeli, maka kita dapat melihat bahawa rentetan arahan yang diterima oleh robot adalah:buy:0.01.

Kami hanya perlu membuat URL permintaan WebHook apabila amaran TradingView dicetuskan untuk mengaksesCommandRobotantara muka FMZ Quant Trading Platform diperluaskan API, parameter yang dibawa adalahbuy:0.01.

Tetapkan WebHook TradingView

Kembali di TradingView, kita mengisi URL WebHook. isi KEY API anda sendiri untuk parameteraccess_key, secret_key.methodKita hanya perlu mengaksesCommandRobotAntara muka API yang diperluaskan.argsadalah dalam bentuk[Robot ID, Command String]. Kita boleh mendapatkan ID robot melalui halaman robot, terus seperti yang ditunjukkan dalam gambar:

img

Kali ini, kita biarkan isyarat mencetuskan, membeli 0.02 syiling, dan rentetan arahan adalah:buy:0.02. Kemudian URL WebHook selesai. Kaedah ini hanya menyokong menulis isyarat dalam URL. Jika anda ingin mendapatkan kandungan mesej amaran yang boleh dihantar oleh strategi TV itu sendiri, merujuk kepadahttps://www.fmz.com/api#pengesahan langsung.

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

Tetapkan pada TradingView:

img

Tunggu isyarat untuk mencetuskan... Tunggu isyarat untuk mencetuskan... Tunggu isyarat untuk mencetuskan... ... yang penting.

img

Kemudian robot akan menerima isyarat, dengan cara ini, kita boleh menggunakan pelbagai fungsi carta dan algoritma penunjuk pada TradingView untuk bekerjasama dengan robot strategi Platform Dagangan Kuantum FMZ untuk mencapai perdagangan automatik yang anda mahukan.

Kod strategi robot untuk meletakkan pesanan dengan memantau isyarat hanya untuk pembelajaran dan penyelidikan. Penggunaan pada bot sebenar perlu dioptimumkan sendiri dan disesuaikan untuk menyokong niaga hadapan. Disyorkan untuk menetapkannya ke mod pesanan harga pasaran. Lihat parameter kod strategi untuk butiran. Jika anda mempunyai sebarang soalan atau cadangan, sila berasa bebas untuk meninggalkan mesej.


Berkaitan

Lebih lanjut