Ada banyak strategi menarik di halaman persegi (https://www.fmz.com/squarePada saat itu, sebagian besar pertukaran cryptocurrency menggunakan antarmuka APIrest
Banyak strategi didasarkan padarest
Di samping itu, ada beberapa kasus di mana bursarest
antarmuka gagal dalam waktu dekat, mengakibatkan strategi yang tidak dapat melakukan dengan benar.
Selama strategi dimodifikasi, menambahkan dukungan untuk antarmuka websocket membutuhkan beberapa perubahan pada kode strategi, yang biasanya agak merepotkan (kesulitan mengubah strategi jauh lebih tinggi daripada menulis ulang).
Bagaimana kita tidak bisa mengubah kode strategi, tapi menggunakan antarmuka penawaran pasar websocket?
Berikut adalah fleksibilitas penuh dari platform FMZ Quant, kita dapat menggunakan:
Gunakan strategi
Melakukan operasi exchange.GetTicker
.
Dengan demikian, tanpa mengubah kode strategi, biarkan strategi menggunakan data didorong dan didorong olehwebsocket
antarmuka pasar
Bahasa penulisan kode menggunakan bahasa pemrograman JavaScript.
Misalnya, ketika kita perlu memodifikasi strategi klasik
Alamat strategi:https://www.fmz.com/strategy/9929
Mari kita lihat kode strategi dan menemukan bahwa strategi ini didorong olehtick
Hal ini terutama menggunakan sifat-sifat dariBuy
, Sell
, danLast
dalamticker
data.ticker
data diperoleh oleh fungsi API dari platform FMZ Quant:exchange.GetTicker
Tujuan jelas sekarang, kita bisa menggantikanexchange.GetTicker
fungsi denganHook
operasi (yaitu, menggantinya dengan versi lain).
Namun, kita tidak bisa menulis ulang dalam kode strategi
Jadi kita perlu protagonis berikutnya untuk debut.
Kita membuat
Kemudian atur 2 parameter untukSeamlessConnWS
template.
Kedua ini digunakan untuk mengontrol apakah untuk menggunakanwebsocket
fungsi antarmuka, dan kontrol menentukan untuk membuka antarmuka penawaran pasar tertentu.hook
operasi untukexchange.GetTicker
Oleh karena itu kita perlu mengaktifkan parameterHook_GetTicker
) dariGetTicker
antarmuka kewebsocket
mode.
Setelah template dibuat, kita bisa menulis akses khusus ke exchangewebsocket
interface dalam template, berlangganan kutipan tertentu, dan kemudian menunggu kode fungsi dari bursa untuk mendorong data. kode spesifik tidak dijelaskan di sini, Anda dapat merujuk padaSeamlessConnWS
kode (sudah open source) dan FMZ Quant resmi API dokumentasi.init
fungsi dalam template dan variabel global_DictConnectCreater
, _ConnMap
:
Bagian kode:
var _DictConnectCreater = {
"Huobi" : WSConnecter_Huobi,
"Binance" : WSConnecter_Binance,
}
var _ConnMap = {}
function init () {
if (IsUsedWebSocket) {
var connectCreater = null
if (exchanges.length != 1) {
Log("Switching to the ws interface only for the "exchange" exchange object (ie, the first added exchange object)")
}
var isFound = false
for (var name in _DictConnectCreater) {
if (exchange.GetName() == name) {
connectCreater = _DictConnectCreater[name]
isFound = true
}
}
if (!isFound) {
throw "Did not find an implementation"
}
if (Hook_GetTicker) {
var symbol = exchange.GetCurrency()
_ConnMap.GetTicker = connectCreater("GetTicker", symbol)
exchange.GetTicker = function () {
return _C(_ConnMap.GetTicker.Read)
}
}
// ...
}
}
Hal ini dapat dilihat bahwa templat ini hanya menerapkanwebsocket
pasar antara dua bursa, yaitu Binance dan Huobi.init
fungsi adalah untuk memastikan bahwa ketika SeamlessConnWS
templat,init
fungsi akan dilaksanakan pertama selama kemajuan pasar yang sebenarnya berjalan.
kita dapat mengganti isi dariexchange.GetTicker
fungsi dengan kode menggunakanwebsocket
antarmuka, sehingga mencapai docking mulus ke pasar websocket.
SeamlessConnWS
Alamat templat:https://www.fmz.com/strategy/167755
Setelah menyalinSeamlessConnWS
template ke dalam perpustakaan strategi Anda, Anda hanya dapat menggunakan
Pastikan untuk mengklik cek template, dan tombol simpan.
Buat
Buka parameter kontrol padaSeamlessConnWS
template.
Pergi ke atas:
Untuk dengan mudah melihat data yang didorong, pada baris 157, kami secara khusus menambahkan kode log cetak, itu akan output data yang didorong oleh pertukaran.
Tampilan di log robot:
Dengan cara ini, kita tidak perlu memodifikasi baris mana pun dari kode strategi, danwebsocket
antarmuka pasar
Contoh ini hanya untuk strategi menggunakanexchange.GetTicker
fungsi antarmuka pasar, antarmuka pasar lainnya sepertiexchange.GetDepth
, exchange.GetTrades
danexchange.GetRecords
Untuk template standarSeamlessConnWS
, Anda bisa mencoba memperluasnya lebih lanjut.
Untuk pelaksanaan hubungan khususwebsocket
Dalam template, gunakanDial
fungsi (lihat dokumentasi API tentang fungsi Dial), yang dapat disesuaikan sesuai kebutuhan.read()
fungsi, yang mengembalikan hanya data terbaru di buffer yangwebsocket
koneksi menerima.
Terima kasih sudah membaca.