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?
Le petit rêveLa stratégie ne peut pas être utilisée si la fonction Dial n'est pas prise en charge.