Type/to search
8
Follow
1364
Followers
Ajar anda langkah demi langkah cara menyambungkan strategi lama dengan lancar ke antara muka pasaran websocket
Original
Created 2019-09-26 15:47:53  Updated 2024-12-17 20:38:08
 3
 3806

img

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".
    1. 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.

img

Kemudian berikanSeamlessConnWSTemplat menetapkan 2 parameter

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

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:

img

Semak, simpan dan anda selesai.

Cipta robot masa nyata strategi "Pemecah Ais" dan pilih Binance sebagai pertukaran img .
BukaSeamlessConnWSKawal parameter pada templat.
img

Jalankan ia:
img

Untuk memudahkan untuk melihat data ditolak, saya menambah kod log cetak dalam baris 157, yang akan mengeluarkan data yang ditolak oleh pertukaran.
img

Log robot menunjukkan:
img

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

Related Recommendations
Comment
All comments (3)

    梦哥,能多一点python版本的么?

    7 years ago

    好的 感谢建议。

    7 years ago

    好东西,应该早点分享嘛。。。

    7 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)