Une capture d'écran:
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.
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) + "`") } }
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.