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

Auteur:Le 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?

Le petit rêveLa stratégie ne peut pas être utilisée si la fonction Dial n'est pas prise en charge.