avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Dicipta dalam: 2019-09-26 15:47:53, dikemas kini pada: 2024-12-17 20:38:08
comments   3
hits   3531

Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Pada Platform Dagangan Kuantitatif PenciptaDataran StrategiTerdapat banyak strategi menarik di Internet Pada masa itu, kebanyakan pertukaran mata wang digital digunakanrestAntara muka API protokol, banyak strategi berdasarkanrestAntara muka, kadangkala kemas kini pasaran adalah perlahan. Di samping itu, beberapa pertukaran telah muncul baru-baru inirestKegagalan antara muka menyebabkan dasar tidak boleh digunakan. Jika dasar itu diubah suai, tambahwebsocketSokongan antara muka memerlukan perubahan tertentu pada kod strategi, yang biasanya menyusahkan (menukar strategi adalah lebih sukar daripada menulis semula). Bagaimanakah saya boleh menggunakan strategi yang sama tanpa mengubahnya?websocketBagaimana pula dengan antara muka pasaran? Ini menunjukkan sepenuhnya fleksibiliti hebat Platform Dagangan Kuantitatif Pencipta Kami boleh:

  • 1. Gunakan strategi “Perpustakaan Templat”.
  • 2. Yaexchange.GetTicker Operasi Cangkuk Fungsi untuk mendapatkan maklumat pasaran.

Ini membolehkan strategi dikawal olehwebsocketData yang didorong oleh antara muka pasaran sedang berjalan. Bahasa pengekodan yang digunakanJavaScriptbahasa.

Strategi Analisis

Sebagai contoh, kami ingin mengubah suai strategi lama klasik “Pemecah Ais”

Alamat Polisi

Mari kita lihat dahulu kod strategi dan mendapati bahawa strategi didorong oleh keadaan pasaran semak dan terutamanya menggunakantickerDalam dataBuySellLastSifat-sifat ini,tickerData diperoleh daripada fungsi API platform FMZ:exchange.GetTicker Dapatkan. Dengan cara ini matlamatnya jelas.exchange.GetTickerfungsiHookOperasi (iaitu menulis semula dengan versi lain dan menggantikannya) adalah semua yang diperlukan. Walau bagaimanapun, kami tidak boleh menulis semula strategi Icebreaker kerana ia akan menjejaskan strategi yang kami mahukan ialah sambungan yang lancar! ! Jadi protagonis seterusnya perlu muncul.

Fungsi Perpustakaan Templat daninitPenyelarasan fungsi

Kami mencipta “pustaka templat” dan namakannya:SeamlessConnWS, kosongkan kod awal.

Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Kemudian berikanSeamlessConnWSTemplat menetapkan 2 parameter

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Digunakan untuk mengawal sama ada untuk mendayakan atau melumpuhkanwebsocketFungsi antara muka, mengawal dan menentukan pembukaan antara muka pasaran tertentu. Oleh kerana ruang terhad, sahajaexchange.GetTickerAntara muka menjalankan operasi cangkuk. Jadi parameter hanya didayakanGetTickerAntara muka ialah parameter kawalan mod soket web: Hook_GetTicker.

Setelah templat dibuat, anda boleh menulis pertukaran khusus untuk diakses dalam templatwebsocketAntara muka, langgan petikan tertentu, dan kemudian tunggu pertukaran untuk menolak data. Kod khusus tidak akan diulang di sini Anda boleh merujuk kepada kod SeamlessConnWS (tersedia secara umum) dan dokumentasi API. Apa yang anda perlu lihat ialah templatinitFungsi dan pembolehubah global_DictConnectCreater_ConnMap

Kod:

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 bahawa templat ini hanya melaksanakan 2 pertukaran.websocketAntara muka pasaran ialah Binance Spot dan Huobi Spot.initFungsinya adalah untuk membenarkan strategi “Pemecah Ais” merujukSeamlessConnWSSelepas templat dicipta, apabila cakera sebenar dijalankan, perkara pertama yang perlu dilakukan ialah melaksanakaninitFungsi, yang boleh secara automatikexchange.GetTickerGantikan kandungan fungsi denganwebsocketPelaksanaan kod antara muka untuk mencapai sambungan yang lancarwebsocketPetikan.

Alamat templat SeamlessConnWS

Cara menggunakannya

Ia sangat mudah! himpunanSeamlessConnWSSelepas menyalin templat ke pustaka strategi anda sendiri, anda hanya perlu merujuknya dalam strategi “Pemecah Ais”, seperti yang ditunjukkan dalam rajah:

Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Semak, simpan dan anda selesai.

Cipta robot masa nyata strategi “Pemecah Ais” dan pilih Binance sebagai pertukaran Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket . BukaSeamlessConnWSKawal parameter pada templat. Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Jalankan ia: Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Untuk memudahkan untuk melihat data ditolak, saya menambah kod log cetak dalam baris 157, yang akan mengeluarkan data yang ditolak oleh pertukaran. Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Log robot menunjukkan: Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket

Dengan cara ini, tidak perlu mengubah suai satu baris kod strategi, dan penyepaduan lancar antara muka dan strategi pasaran websocket dicapai.

Contoh ini hanya untuk digunakanexchange.GetTickerStrategi fungsi antara muka pasaran dijelaskan Antara muka pasaran lain sepertiexchange.GetDepthexchange.GetTradesexchange.GetRecordsIa adalah rutin yang sama! Untuk contoh templatSeamlessConnWS, yang boleh diperluaskan lagi.

Untuk pautan khusus dalam templatwebsocketPelaksanaan menggunakanDialFungsi (lihat dokumentasi API Fungsi Dail), yang boleh dilaraskan mengikut keperluan. Sebagai contoh, anda boleh memberiread()Parameter yang ditentukan fungsi-2, iaitu hanya kembaliwebsocketSambungan menerima data terkini dalam penimbalnya.

Terima kasih kerana membaca