Terdapat banyak strategi menarik di halaman persegi (https://www.fmz.com/squarePada masa itu, kebanyakan pertukaran mata wang kripto menggunakan antara muka APIrest
banyak strategi yang berasaskanrest
Oleh itu, kadang-kadang kemas kini sebut harga pasaran adalah perlahan.rest
Antara muka gagal dalam masa terdekat, mengakibatkan strategi yang tidak dapat melakukan dengan betul.
Selagi strategi diubah suai, menambah sokongan untuk antara muka websocket memerlukan beberapa perubahan pada kod strategi, yang biasanya agak menyusahkan (kesukaran mengubah strategi jauh lebih tinggi daripada menulis semula).
Bagaimana kita boleh tidak mengubah kod strategi, tetapi menggunakan antara muka sebut harga pasaran websocket?
Inilah fleksibiliti penuh platform FMZ Quant, kita boleh gunakan:
Gunakan strategi
Melakukan operasi exchange.GetTicker
.
Oleh itu, tanpa mengubah kod strategi, biar strategi menggunakan data didorong dan didorong olehwebsocket
antara muka pasaran.
Bahasa penulisan kod menggunakan bahasa pengaturcaraan JavaScript.
Sebagai contoh, apabila kita perlu mengubah strategi klasik
Alamat strategi:https://www.fmz.com/strategy/9929
Mari kita lihat kod strategi dan mendapati bahawa strategi ini didorong olehtick
Ia terutamanya menggunakan sifat-sifatBuy
, Sell
, danLast
dalamticker
data.ticker
data diperoleh oleh fungsi API platform FMZ Quant:exchange.GetTicker
Matlamatnya jelas sekarang, kita boleh menggantikanexchange.GetTicker
fungsi denganHook
operasi (iaitu, menggantikannya dengan versi lain).
Walau bagaimanapun, kita tidak boleh menulis semula dalam
Jadi kita perlukan protagonis seterusnya untuk debut.
Kita mencipta
Kemudian menetapkan 2 parameter kepadaSeamlessConnWS
template.
Kedua-dua ini digunakan untuk mengawal sama ada untuk menggunakanwebsocket
fungsi antara muka, dan kawalan menentukan untuk membuka antara muka sebut harga pasaran tertentu.hook
operasi untukexchange.GetTicker
Oleh itu, kita perlu membolehkan parameterHook_GetTicker
) daripadaGetTicker
antara muka kewebsocket
mode.
Setelah templat dicipta, kita boleh menulis akses khusus kepada pertukaranwebsocket
Antara muka dalam templat, melanggan petikan tertentu, dan kemudian menunggu kod fungsi pertukaran untuk memindahkan data. kod tertentu tidak diterangkan di sini, anda boleh merujuk kepadaSeamlessConnWS
Satu perkara yang perlu disebutkan adalah bahawainit
fungsi dalam templat dan pembolehubah global_DictConnectCreater
, _ConnMap
:
Bahagian kod:
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)
}
}
// ...
}
}
Ia boleh dilihat bahawa templat ini hanya melaksanakanwebsocket
antara muka pasaran dua bursa, yang merupakan Binance dan Huobi.init
fungsi adalah untuk memastikan bahawa apabila SeamlessConnWS
templat,init
fungsi akan dilaksanakan pertama semasa pasaran sebenar berjalan kemajuan.
kita boleh menggantikan kandunganexchange.GetTicker
fungsi dengan kod menggunakanwebsocket
antara muka, dengan itu mencapai dok lancar ke pasaran websocket.
SeamlessConnWS
Alamat templat:https://www.fmz.com/strategy/167755
Sepotong kek!SeamlessConnWS
templat ke dalam perpustakaan strategi anda, anda hanya boleh menggunakan
pastikan untuk mengklik semak templat, dan butang simpan.
Buat
Buka parameter kawalan padaSeamlessConnWS
template.
Jalankan ke atas:
Untuk mudah melihat data yang ditarik, pada baris 157, kami secara khusus menambah kod log cetak, ia akan mengeluarkan data yang ditarik oleh pertukaran.
Tampilan pada log robot:
Dengan cara ini, kita tidak perlu mengubah suai mana-mana baris kod strategi, dan mencapai penyambungan lancar denganwebsocket
antara muka pasaran.
Contoh ini hanya untuk strategi menggunakanexchange.GetTicker
fungsi antara muka pasaran, antara muka pasaran lain sepertiexchange.GetDepth
, exchange.GetTrades
danexchange.GetRecords
untuk templat standardSeamlessConnWS
, anda boleh cuba untuk memperluaskan lebih lanjut.
Untuk pelaksanaan pautan khususwebsocket
Dalam templat, gunakanDial
fungsi (lihat dokumentasi API mengenai fungsi Dial), yang boleh diselaraskan seperti yang diperlukan.read()
fungsi, yang mengembalikan hanya data terkini dalam penyangga yangwebsocket
Sambungan diterima.
Terima kasih kerana membaca.