Les ressources ont été chargées... Je charge...

websocket version OKEX Stratégie de couverture à long terme (enseignement)

Auteur:L'inventeur de la quantification - un petit rêve, Date: le 17 avril 2019 à 10h55.
Les étiquettes:HaieLe webscoket

Une version simplifiée de la stratégie de couverture à long terme d'OKEX

  • Une capture d'écran:img

  • Il n'y a qu'à faire le coup, le coup peut être modifié, le contrat peut être remplacé, c'est-à-dire le coup.

  • Ajouter deux objets d'échange, le premier trimestre, le second semaine.

  • L'apprentissage de l'alphabet est un processus qui consiste à simplifier tout le code qui peut être simplifié, à optimiser la marge de manœuvre, à élaborer des stratégies d'enseignement prudentes et à prendre des risques à long terme.

  • Pour commander, utilisez le prix à la main.

  • Bienvenue dans les commentaires BUG.

Il y a aussi une petite section consacrée à l'éducation.

Il y a aussi une petite section consacrée à l'éducation.

Il y a aussi une petite section consacrée à l'éducation.


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

Relationnée

Plus de

Chao est là.C'est pas V5, c'est ça? OK, V5 est maintenant une chaîne privée.

Je t'aime, Jimmy.Le problème est le suivant: comment le résoudre? Temps Plateforme Type Prix Nombre d'informations 2021-02-13 00:00:00 erreur main:12:12 - TypeError: Impossible de lire la propriété 'write' de undefined 2021-02-13 00:00:00 erreur Sandbox ne prend pas en charge Dial

Je suis zéro.Où est la vidéo pédagogique?

L'inventeur de la quantification - un petit rêveLa stratégie ne peut pas être utilisée si la fonction Dial n'est pas prise en charge.