La imagen en vivo:
Sólo hacer el primer juego, el contrajuego puede ser modificado, el contrato cambiado, es decir, el contrajuego.
Añade dos objetos de intercambio, el primer trimestre, el segundo en la misma semana.
Se ha simplificado todo el código que se puede simplificar, hay mucho espacio para optimizar, la estrategia de enseñanza es cautelosa y realista, y hay cierto riesgo a lo largo del tiempo.
En el caso de los precios de venta, el precio de venta es el mismo.
Bienvenido a los comentarios 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) + "`") } }
- ¿ Qué?En realidad, esto no es V5, ¿verdad? OK V5 ahora es un canal privado.
Quiero a Jimmy.¿Cómo se resuelve el problema? Tiempo Plataforma Tipo Precio cantidad Información 2021-02-13 00:00:00 error main:12:12 - TypeError: No puede leer la propiedad 'write' de undefined 2021-02-13 00:00:00 Error en la caja de arena no es compatible Dial
No hay nada.¿Dónde está el video de enseñanza?
Los inventores cuantifican - sueños pequeñosLa política no puede ser repetida porque la función Dial no es compatible.