websocket versi OKEX strategi lindung nilai jangka panjang (pelajaran)

Penulis:Mimpi kecil, Tarikh: 2019-04-17 10:10:55
Tag:HedgeWebscoket

Strategi lindung nilai jangka panjang OKEX yang sangat ringkas

  • Gambar rakam:img

  • Hanya melakukan set pertama, set kedua boleh diubah, kontrak digantikan, iaitu set kedua.

  • Tambah dua objek pertukaran, suku pertama, minggu kedua.

  • Semua kod yang boleh disederhanakan telah disederhanakan, ruang untuk mengoptimumkan masih banyak, strategi pengajaran berhati-hati, dan jangka masa yang panjang mempunyai risiko.

  • Membeli dengan harga yang sama.

  • Selamat datang untuk maklum balas BUG.

Strategi pengajaran, penggunaan yang berhati-hati.

Strategi pengajaran, penggunaan yang berhati-hati.

Strategi pengajaran, penggunaan yang berhati-hati.


function Hedge (isOpen, retSetA, retSetB) {
    exchanges[0].SetDirection(isOpen ? "sell" : "closesell")
    exchanges[1].SetDirection(isOpen ? "buy" : "closebuy");
    (function (routineA, routineB) {
        Log(routineA.wait(), routineB.wait(), retSetA, retSetB)
    })(exchanges[0].Go(isOpen ? "Sell" : "Buy", -1, _ContractNum), exchanges[1].Go(isOpen ? "Buy" : "Sell", -1, _ContractNum))
}

function main () {
    var param = {"op": "subscribe", "args": ["futures/ticker:" + _Instrument_id_A, "futures/ticker:" + _Instrument_id_B]}
    var client = Dial("wss://real.okex.com:8443/ws/v3|compress=gzip_raw&mode=recv&reconnect=true&payload=" + JSON.stringify(param))
    client.write(JSON.stringify(param))
    var tickerA, tickerB 
    var arr = []
    for (var i = 0 ; i < _Count ; i++) {
        arr.push({open: _Begin + i * _Add, cover: _Begin + i * _Add - _Profit, isHold: false})
    }
    while (1) {
        var tab = {type: "table", title: "状态", cols: ["节点信息"], rows: []}
        Sleep(10) 
        var ret = client.read(-2)
        if (!ret || ret == "") {
            continue
        }

        var obj = null
        try {
            obj = JSON.parse(ret)
        } catch (e) {
            Log(e)
            continue
        }

        if (obj.table == "futures/ticker" && obj.data[0].instrument_id == _Instrument_id_A) {   
            tickerA = obj.data[0]
        } else if (obj.table == "futures/ticker" && obj.data[0].instrument_id == _Instrument_id_B) {
            tickerB = obj.data[0]
        }

        if (tickerA && tickerB) {
            $.PlotLine(tickerA.instrument_id + "-" + tickerB.instrument_id, tickerA.last - tickerB.last)
            for (var j = 0 ; j < arr.length; j++) {
                if (tickerA.best_bid - tickerB.best_ask > arr[j].open && !arr[j].isHold) {   
                    Hedge(true, exchanges[0].SetContractType("quarter"), exchanges[1].SetContractType("this_week"))
                    arr[j].isHold = true
                }
                if (tickerA.best_ask - tickerB.best_bid < arr[j].cover && arr[j].isHold) {
                    Hedge(false, exchanges[0].SetContractType("quarter"), exchanges[1].SetContractType("this_week"))
                    arr[j].isHold = false 
                }
                tab.rows.push([JSON.stringify(arr[j])])
            }
        }
        LogStatus(_D(), "\n `" + JSON.stringify(tab) + "`")
    }
}

Berkaitan

Lebih lanjut

ChaoOK, V5 sekarang saluran peribadi, ada contoh log masuk?

Cinta Jimmy.Jika anda mempunyai masalah yang sama, bagaimana anda boleh menyelesaikan masalah ini? Waktu Platform Jenis Harga Bilangan Maklumat 2021-02-13 00:00:00 Kesilapan main:12:12 - TypeError: Cannot read property 'write' of undefined 2021-02-13 00:00:00 Kesilapan sandbox not support Dial

FmzeroDi mana video pengajaran?

Mimpi kecilKaedah ini tidak boleh digunakan jika pemindaian tidak menyokong fungsi dial.