Websocket-Version OKEX Überlauf-Hedging-Strategie (unterrichtet)

Schriftsteller:Kleine Träume, Datum: 2019-04-17
Tags:HeckeWebscoket

Die OKEX-Schnittzeit-Hedging-Strategie (lehrreich)

  • Bild auf der Bildfläche:img

  • Das bedeutet, dass wir uns in der Lage fühlen müssen, die neuen Konzepte zu ändern, die neuen Konzepte zu ändern, die neuen Konzepte zu ändern.

  • Zudem wurden zwei Börsenobjekte hinzugefügt, das erste im Quartal, das zweite in der Woche.

  • Es gibt viele Möglichkeiten, den Code zu vereinfachen, aber es gibt noch viel Optimierungsraum, eine sorgfältige Lehrstrategie und ein gewisses Risiko.

  • Sie können Ihre Bestellung mit einem Gegenpreis bestellen.

  • Wir freuen uns über die Feedback.BUG.

Die Lehrstrategien, die praktische Anwendung.

Die Lehrstrategien, die praktische Anwendung.

Die Lehrstrategien, die praktische Anwendung.


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

Verwandt

Mehr

ChaoDas ist nicht mehr V5, oder? OK V5 ist jetzt ein privater Kanal.

Ich liebe Jimmy.Ich habe die Frage gestellt, wie man die Probleme lösen kann. Zeit Plattform Typ Preis Menge Informationen 2021-02-13 00:00:00 Fehler main:12:12 - TypeError: Kann die Eigenschaft 'write' von undefined nicht lesen 2021-02-13 00:00:00 Fehler Sandbox nicht unterstützt Dial

fmzeroWo ist das Unterrichtsvideo?

Kleine TräumeDie Dial-Funktion wird nicht unterstützt.