Konfigurasi pertukaran strategi perdagangan kuantitatif cryptocurrency

Penulis:Kebaikan, Dicipta: 2019-09-16 14:55:26, Dikemas kini: 2024-12-17 20:47:00

Cryptocurrency quantitative trading strategy exchange configuration

Apabila pemula merancang strategi perdagangan kuantitatif mata wang kripto, sering terdapat pelbagai keperluan fungsi. Terlepas dari bahasa pengaturcaraan dan platform, mereka semua akan menghadapi pelbagai keperluan reka bentuk. Sebagai contoh, kadang-kadang pelbagai jenis perdagangan putaran diperlukan, kadang-kadang lindung nilai pelbagai platform diperlukan, dan kadang-kadang pelbagai jenis perdagangan diperlukan untuk serentak.

Platform pembelajaran masih menggunakan platform perdagangan FMZ Quant (https://www.fmz.com), dan pasaran dipilih sebagai pasaran cryptocurrency.

Reka bentuk strategi multi-cryptocurrency

Kebanyakan situasi permintaan ini disediakan untuk strategi trend dan grid multi-cryptocurrency, yang perlu dilaksanakan di pasaran dengan kaedah pengulangan perdagangan yang berbeza.

Biasanya direka seperti ini:

function Process (symbol) {
     exchange.IO("currency", symbol)
     var ticker = _C(exchange.GetTicker)
     Log("has switched trading pairs, processing trading pairs according to strategy logic:", symbol, "quotes: ", ticker)
     // ...
     // ..
     // .
}

function main(){
     var symbols = ["BTC_USDT", "LTC_USDT", "ETH_USDT"]
     while (true) {
         for (var i = 0 ; i < symbols.length; i++) {
             Process(symbols[i])
             Sleep(500)
         }
     }
}

Kami mengkonfigurasi robot:

Cryptocurrency quantitative trading strategy exchange configuration

Cryptocurrency quantitative trading strategy exchange configuration

Ia dapat dilihat bahawa ini menyedari bahawa objek pertukaran dikonfigurasi pada robot, dan pasangan dagangan ditukar; pasaran pasangan dagangan yang berbeza diperoleh, dan pasaran pelbagai pelbagai perdagangan dilaksanakan; dan ia dilaksanakan di bawah logik strategi.

Ia dapat dilihat bahawa tiga pasangan dagangan yang kita tentukan: BTC_USDT, LTC_USDT, ETH_USDT, dalam gelung, secara berulang mendapatkan sebut harga pasaran, dan selepas mendapatkan maklumat, ia dapat secara khusus mengesan pasaran dan mencetuskan logik dagangan yang direka oleh strategi.

Sesetengah pembaca mungkin bertanya: Saya tidak suka menukar pasangan dagangan, ia terasa sedikit menyusahkan, dan logik strategi tidak jelas.

Terdapat pilihan reka bentuk lain, yang akan kita perkenalkan di bawah.

Mengatur pelbagai objek pertukaran untuk robot dalam akaun pertukaran yang sama

Data pasaran pasangan dagangan yang berbeza diperoleh melalui pelbagai objek pertukaran, dan dilaksanakan dalam logik strategi berulang.

Sebagai contoh, sesuaikan robot dengan mengkonfigurasi tiga objek pertukaran untuk robot. Pasangan dagangan ditetapkan untuk BTC_USDT, LTC_USDT, dan ETH_USDT masing-masing.

Cryptocurrency quantitative trading strategy exchange configuration

Nama adalah objek pertukaran OKEX Spot V3 Test, di halaman Dashboard, halaman konfigurasi pertukaran:

Cryptocurrency quantitative trading strategy exchange configuration

Sudah selesai.

Kami mengubah sedikit kod ini, kerana kali ini kami menambah pelbagai objek pertukaran kepada robot, yang merupakan objek pertukaran pasangan perdagangan BTC_USDT, LTC_USDT, ETH_USDT.

function Process (e) {
    var ticker = _C(e.GetTicker)
    Log("exchange", e.GetName(), "Process trading pairs according to strategy logic:", e.GetCurrency(), "Quotes:", ticker)
    // ...
    // ..
    // .
}  

function main(){
    while (true) {
        for (var i = 0 ; i < exchanges.length; i++) {
            Process(exchanges[i])
            Sleep(500)
        }
    }
}

Jalankan robot:

Cryptocurrency quantitative trading strategy exchange configuration

Contoh yang kami jelaskan di atas, sama ada menukar pasangan dagangan atau menambah objek dagangan untuk beberapa pasangan dagangan yang berbeza dari akaun konfigurasi.

Jadi bagaimana anda menggunakan pelbagai akaun pertukaran dalam satu strategi?

Strategi untuk menggunakan pelbagai akaun pertukaran

Beberapa strategi seperti lindung nilai rentas pasaran pelbagai bursa, strategi pelbagai akaun dalam satu bursa.

  • Konfigurasi pelbagai pertukaran dengan pertukaran yang berbeza

Cryptocurrency quantitative trading strategy exchange configuration

Sebagai contoh, kita telah mengkonfigurasi 2 pertukaran pada Dashboard -> Exchange -> Tambah halaman Exchange.

kita boleh mengakses maklumat aset akaun yang dikonfigurasikan oleh kedua-dua bursa dalam strategi.

Cryptocurrency quantitative trading strategy exchange configuration

function main(){
     Log(exchanges[0].GetAccount()) // Print the account asset information of the first exchange object.
     Log(exchanges[1].GetAccount()) // ... Print the asset information of the Bit-Z exchange
}

Sudah tentu, saya juga boleh menambah kedua dan ketiga akaun pertukaran konfigurasi untuk pertukaran.

  • Konfigurasi pelbagai pertukaran dengan pertukaran yang sama.

Sebagai contoh, kita menambah akaun lain untuk Huobi Futures.

Cryptocurrency quantitative trading strategy exchange configuration

Seperti yang anda lihat, ini mengkonfigurasi akaun dua bursa Huobi Futures.

Cryptocurrency quantitative trading strategy exchange configuration

Apabila strategi dicipta, objek Huobi Futures Exchange muncul dalam pilihan Robot's Modify Configuration untuk dipilih.

Cryptocurrency quantitative trading strategy exchange configuration

Sebagai contoh, ini membolehkan dua akaun menjual terlebih dahulu dan kemudian membeli dengan strategi grid biasa (ke atas) atau membeli terlebih dahulu kemudian menjual (ke bawah).

Melalui dua contoh di atas

Berikut adalah perbezaan antara mengkonfigurasi pelbagai objek pertukaran pada robot dan Mengkonfigurasi pelbagai objek pertukaran untuk akaun pertukaran yang sama untuk robot:

Contoh yang mencolok dan disebutkan di atas Akaun pertukaran yang sama mempunyai pelbagai objek pertukaran untuk robot agak serupa, tetapi terdapat perbezaan.

Perbezaannya adalah bahawa contoh di atas adalah konfigurasi pertukaran, iaitu:

Cryptocurrency quantitative trading strategy exchange configuration

Apabila robot mengkonfigurasi objek pertukaran, ia sentiasa menggunakan:

Cryptocurrency quantitative trading strategy exchange configuration

Konfigurasi ini.

Ia hanya bahawa apabila anda menambah objek pertukaran, tetapan pasangan dagangan adalah berbeza.

Jika fungsi GetAccount dipanggil, maklumat aset akaun yang sama sentiasa diakses.

Walau bagaimanapun:

Cryptocurrency quantitative trading strategy exchange configuration

Dua objek pertukaran niaga hadapan huobi yang dikonfigurasi sedemikian, walaupun mereka semua niaga hadapan huobi, mewakili akaun pertukaran yang berbeza.

  • Penggunaan konfigurasi pertukaran memudahkan reka bentuk strategi niaga hadapan cryptocurrency.

Kadang-kadang dalam strategi lindung nilai kontrak cryptocurrency, untuk merebut peluang perdagangan yang berlalu, banyak senario perlu diletakkan secara serentak. Walau bagaimanapun, kerana kontraknya berbeza, anda perlu beralih ke kontrak yang sesuai apabila anda mendapat sebut harga pasaran dan meletakkan pesanan.exchange.Godan reka bentuk kontrak beralih juga membuat logik tidak begitu mudah. adakah ada cara yang lebih baik?

Sudah tentu ada, Kita boleh menambah dua objek pertukaran kepada robot dengan mengikuti Konfigurasikan pelbagai objek pertukaran untuk robot dalam akaun pertukaran yang sama.

Cryptocurrency quantitative trading strategy exchange configuration

Kemudian gunakan konfigurasi pertukaran ini untuk menambah objek pertukaran lain.

Kotak arahan akan muncul!

Cryptocurrency quantitative trading strategy exchange configuration

Satu konfigurasi akaun pertukaran, anda tidak boleh menambah objek pertukaran mata wang yang sama atau pasangan dagangan.

Apa yang perlu saya lakukan? Rupanya robot strategi tidak boleh menggunakan dua objek pertukaran, dan objek pertukaran terikat kepada nombor akaun pertukaran?

Masih ada jalan!

Mari kita pergi ke Dashboard -> Exchange, dan kemudian menambah konfigurasi pertukaran niaga hadapan OKEX.

Cryptocurrency quantitative trading strategy exchange configuration

Klik Simpan apabila dikonfigurasi.

Cryptocurrency quantitative trading strategy exchange configuration

Dengan cara ini kita mempunyai dua konfigurasi pertukaran, tetapi maklumat konfigurasi API KEY yang sama digunakan.

Cryptocurrency quantitative trading strategy exchange configuration

Apakah faedahnya?

Apabila menulis strategi, reka bentuknya akan sangat mudah!

function main(){
    exchanges[0].SetContractType("quarter") // Set the first added exchange object. The current contract is a quarterly contract.
    exchanges[1].SetContractType("this_week") // Set the second added exchange object, the current contract is the current week contract
    
    while (true) {
        var beginTime = new Date().getTime() // Record the timestamp from which this time the market quote was taken.
        var rA = exchanges[0].Go("GetTicker") // Create a concurrent thread to get the first exchange object, which is the market data for the quarterly contract.
        var rB = exchanges[1].Go("GetTicker") // Create a concurrent thread to get the second exchange object, which is the market data for the weekly contract.
        
        var tickerA = rA.wait() // The two threads executing each other perform their own tasks, waiting to get the data. When A waits, the B task is also executing.
        var tickerB = rB.wait() // So it seems to be sequential execution, actually at the bottom of the concurrency. Only when you get the order is to get A first, and get B.
        var endTime = new Date().getTime() // Record the timestamp at the end of the two contract quotes.
        
        if (tickerA && tickerB) { // If there is no problem with the data obtained, execute the following logic.
            var diff = tickerA.Last - tickerB.Last // calculate the difference
            $.PlotLine("diff", diff) // Use the line drawing library to plot the difference on the chart.
            if (diff > 500) { // If the spread is greater than 500, hedge arbitrage (of course, the difference of 500 is relatively large, rarely seen.)
                // Hedging
                rA = exchanges[0].Go("Sell", tickerA.Buy, 1) // Concurrent threads create a selling order under the quarterly contract
                rB = exchanges[1].Go("Buy", tickerB.Sell, 1) // Concurrent thread create a buying order under the weekly contract
                
                var idA = rA.wait() // Waiting for the return of placing order results, returning the order ID
                var idB = rB.wait() // ...
            }
            
            // ...
        }
        
        LogStatus(_D(), "Concurrently get two contract quotes taking time:", endTime - beginTime, "millisecond.") // Shows the time on the status bar to know that the program is executing.
        Sleep(500)
    }

Adakah strategi reka bentuk ini lebih mudah dan jelas?

Operasi pasaran sebenar:

Cryptocurrency quantitative trading strategy exchange configuration

Seperti yang anda lihat, ia hanya mengambil masa kira-kira 50 milidetik untuk mendapatkan harga dua kontrak setiap kali.


Kandungan berkaitan

Lebih lanjut