Tangan-tangan mengajarkan Anda bagaimana untuk memberikan sebuah strategi lama yang seamlessly pairing websocket pasar antarmuka

Penulis:Mimpi kecil, Dibuat: 2019-09-26 15:47:53, Diperbarui: 2023-10-18 19:54:36

img

Tangan-tangan mengajarkan Anda bagaimana untuk memberikan sebuah strategi lama yang seamlessly pairing websocket pasar antarmuka

Ini adalah salah satu platform perdagangan kuantitatif yang ditemukan oleh para penemu.Praja StrategiAda banyak strategi menarik yang digunakan pada saat itu untuk pertukaran mata uang digital.restAda banyak strategi yang didasarkan pada antarmuka API dari protokol.restSelain itu, beberapa bursa juga baru-baru ini muncul.restKeadaan yang menyebabkan kebijakan tidak dapat digunakan. Jika kebijakan diubah, peningkatanwebsocketDukungan antarmuka membutuhkan perubahan tertentu pada kode kebijakan, yang biasanya lebih rumit (mengubah kebijakan jauh lebih sulit daripada menulis ulang). Bagaimana Anda bisa menggunakan strategi tanpa mengubahnya?websocketBagaimana dengan antarmuka? Di sinilah kita dapat melihat betapa besar fleksibilitas inventor dalam platform perdagangan kuantitatif, yang dapat kita gunakan untuk:

  • 1. Gunakan kebijakan "Kumpulan Templat".
  • 2, ya.exchange.GetTickerFungsi Hook dioperasikan.

Dengan demikian, tanpa mengubah satu baris kode, Anda dapat membuat kebijakan Anda sendiri.websocketData drive yang didorong oleh antarmuka bisnis berjalan. Penggunaan bahasa codingJavaScriptBahasa.

Strategi analisis

Sebagai contoh, kita ingin mengubah strategi lama klasik "Penghancur Es".

Alamat strategis

Pertama kita lihat kode strategi, dan kita menemukan bahwa strategi ini didorong oleh pasar tik, dan sebagian besar digunakan oleh orang-orang yang tidak memiliki uang.tickerDalam dataBuySellLastIni adalah sifat-sifat yang sangat penting.tickerData dari fungsi API dari platform FMZ:exchange.GetTickerJika Anda ingin mendapatkan sesuatu, maka Anda harus mendapatkannya.exchange.GetTickerFungsiHookOperasi (yang berarti menulis ulang versi lain dan menggantinya) dapat dilakukan. Namun, kita tidak bisa menulis ulang strategi Icebreaker, itu akan mempengaruhi strategi, yang kita inginkan adalah ikatan yang mulus! Jadi, kita perlu pemain utama berikutnya untuk masuk.

Fungsi "Library Template" daninitKoordinasi fungsi

Kami membuat "Library Template" yang diberi nama:Seamless CONWS, kosongkan kode awal.

img

Kemudian berikanSeamless CONWSTemplat dengan 2 parameter

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

digunakan untuk mengontrol apakah akan dihidupkanwebsocketFungsi antarmuka, mengontrol spesifikasi untuk membuka antarmuka industri tertentu.exchange.GetTickerInterface melakukan operasi hook. Jadi parameternya hanya membuka.GetTickerInterface adalah parameter kontrol mode websocket: Hook_GetTicker.

Setelah template dibuat, Anda dapat menuliskan situs yang akan Anda kunjungi di dalamnya.websocketIni adalah kode yang digunakan untuk mengaktifkan antarmuka, berlangganan beberapa industri, dan kemudian menunggu bursa untuk memajukan data.initFungsi dan variabel global_DictConnectCreater_ConnMap

Kode:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Anda dapat melihat bahwa templat ini hanya mengimplementasikan dua bursa.websocketPerangkat lunak ini juga dapat digunakan untuk mengkoneksikan informasi dan informasi yang diperlukan untuk melakukan transaksi.initFungsi ini adalah untuk mendapatkan referensi dari strategi Icebreaker.Seamless CONWSSetelah templat, ketika hardisk berjalan, itu akan dijalankan terlebih dahuluinitFungsi yang dapat mengunci secara otomatisexchange.GetTickerKonten fungsi diganti untuk digunakanwebsocketImplementasi kode antarmuka yang memungkinkan perpaduan yang muluswebsocketPergilah.

Alamat template SeamlessConnWS

Cara Menggunakannya

Sangat mudah!Seamless CONWSSetelah template disalin ke dalam toolbarnya sendiri, hanya bisa digunakan untuk referensi strategi "Icebreaker", seperti berikut:

img

Anda bisa memilih, menyimpan, dan itu saja.

Strategi membuat "Pembobol Es" robot real-time, dan pertukaran memilih BinanceimgSaya tidak tahu. MemulaiSeamless CONWSParameter kontrol pada template.img

Perangkat ini berjalan:img

Untuk mempermudah Anda melihat data yang diposting, saya menambahkan kode untuk mencetak log pada 157 baris khusus yang akan mengekspor data yang diposting oleh bursa.img

Di bawah ini adalah beberapa contoh dari robot robot yang berhasil dihapus.img

Dengan cara ini, tanpa mengubah satu baris kode kebijakan, pairing seamless menggunakan antarmuka pasar websocket dan kebijakan.

Contoh ini hanya untuk penggunaanexchange.GetTickerPenjelasan tentang strategi yang dibuat oleh fungsi antarmuka industri, antarmuka industri lainnya sepertiexchange.GetDepthexchange.GetTradesexchange.GetRecordsIni adalah contoh dari contoh template.Seamless CONWS"Kami tidak bisa mengatakannya", kata dia.

Link khusus untuk templatewebsocketimplementasi, penggunaanDialFungsi (lihat dokumentasi API untuk fungsi Dial) dapat disesuaikan sesuai kebutuhan.read()Fungsi menentukan parameter-2Yang berarti hanya kembaliwebsocketData terbaru di area buffer yang terhubung menerima data.

Terima kasih sudah membaca.


Berkaitan

Lebih banyak

congcong009Monk, bisakah kamu menambahkan versi Python?

Perempuan juga.Saya ingin berbagi hal-hal yang baik lebih awal.

Mimpi kecilBagus, terima kasih atas saran Anda.