Sumber dimuat naik... memuat...

websocket versi OKEX strategi lindung nilai jangka panjang (pelajaran)

Penulis:Pencipta Kuantiti - Impian Kecil, Tarikh: 2019-04-17 10:10:55
Tag:Leverage perhadanganWebsocket

Strategi lindung nilai jangka panjang OKEX yang sangat ringkas

  • Gambar rakam:websocket 版OKEX跨期对冲策略(教学)

  • 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, berhati-hati dalam penggunaan sebenar. ### Strategi pengajaran, berhati-hati dalam penggunaan sebenar. ### Strategi pengajaran, berhati-hati dalam penggunaan sebenar.


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) + "`")
    }
}

Kandungan 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?

Pencipta Kuantiti - Impian KecilKaedah ini tidak boleh digunakan jika pemindaian tidak menyokong fungsi dial.