Por favor, enseña el sueño.

El autor:Nuevo 1898, Creado: 2022-02-25 08:04:50, Actualizado: 2022-02-25 08:52:20

Se ha citado un fragmento de código de DreamSum y se ha descubierto que en algún momento se producirá un error: TypeError: cannot read property Price of null at main (TypeError: cannot read property Price of null at main)El archivo[553], causando que el programa se salga, pregúntele si es porque el campo de configuración es null, o si no se obtiene la información de precio, voy a cambiar var pos = exchange.GetPosition (() a var pos = _C ((exchange.GetPosition)))), ¿se puede resolver este problema?

var currTotalEq = getTotalEquity()
var pos = _C(exchange.GetPosition())
//var pos = exchange.GetPosition()
if (currTotalEq && pos) {
                    // LogStatus(_D(), "当前总权益:", currTotalEq, "持仓:", pos)
                    var tblPos = {
                        "type" : "table",
                        "title" : "持仓",
                        "cols" : ["持仓数量", "持仓方向", "持仓均价", "持仓盈亏", "合约代码", "自定义字段 / " + SpecifyPosField],
                        "rows" : []
                    }
                    var descType = ["多头仓位", "空头仓位"]
                    for (var posIndex = 0 ; posIndex < pos.length ; posIndex++) {
                        tblPos.rows.push([pos[posIndex].Amount, descType[pos[posIndex].Type], pos[posIndex].Price, pos[posIndex].Profit, pos[posIndex].ContractType, SpecifyPosField == "" ? "--" : pos[posIndex].Info[SpecifyPosField]])
                    }
                    
                    var tbl = {
                        "type" : "table",
                        "title" : "数据",
                        "cols" : ["当前总权益", "实际盈亏", "当前价格", "买单价格/数量", "卖单价格/数量"],
                        "rows" : []
                    }
                    var buyOrder = null 
                    var sellOrder = null 
                    for (var orderIndex = 0 ; orderIndex < orders.length ; orderIndex++) {
                        if (orders[orderIndex].Type == ORDER_TYPE_BUY) {
                            buyOrder = orders[orderIndex]
                        } else {
                            sellOrder = orders[orderIndex]
                        }
                    }
                    var realProfit = currTotalEq - totalEq
                    if (exchange.GetName() == "Futures_Binance") {
                        _.each(pos, function(p) {
                            realProfit += parseFloat(p.Info.unRealizedProfit)
                        })                        
                    }
                    var t = exchange.GetTicker()
                    tbl.rows.push([currTotalEq, realProfit, t ? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount)])

Más.

Nuevo 1898Cambiar var pos = exchange.GetPosition (() a var pos = _C ((exchange.GetPosition (())), si se puede resolver, se obtiene el valor y se va hacia abajo

Nuevo 1898El código cerca de la línea 553 es: Var t = exchange.GetTicker (en inglés) Tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount))) Si no se obtienen los datos del ticker, entonces var t = _C ((exchange.GetTicker)))), si se puede.

Nuevo 1898¡Gracias, muchachos!

Un sueño pequeño.¿Por qué no lo haces? tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--") + "/" + (buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--") + "/" + (sellOrder? sellOrder.Amount : "--"))) ¿Por qué no lo haces? El problema es que cuando el buyOrder es nulo, no hay que ir a buyOrder.Amount o buyOrder.Price para que no se produzca el error.

Nuevo 1898Si hay un pedido, el precio es numérico, pero en Amount siempre no hay datos, no hay errores, eso es extraño, ¿dónde está el problema?

Nuevo 1898No hay una situación de pedido: cambio de precio, cambio de cantidad, pero lo intenté. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder? buyOrder.Amount: "--"), (sellOrder? sellOrder.Price "--" + "/" + sellOrder? sellOrder.Amount: "--") ¿O reportó TypeError: cannot read property 'Amount' of null at main (__FILE__:554), es que el código no se ha actualizado?

Un sueño pequeño.Puede, es acceder a las propiedades de una variable. Cuando se decide si la variable es null o no, no se accede y no se devuelve el error.

Nuevo 1898tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder.Amount), (sellOrder? sellOrder.Price : "--" + "/" + sellOrder.Amount) ]) Eso es lo que está arriba, ¿verdad?

Un sueño pequeño.BuyOrder?buyOrder.Price : "--" Esto es lo que se puede hacer.

Un sueño pequeño.Se puede transmitir una cadena en blanco.

Nuevo 1898Gracias, es correcto, entonces tengo algunos pasos que no se ordenan, por lo que el mensaje de orden es null, se debe permitir el ingreso de null, ¿cómo se debe cambiar?

Nube ligeraVar t = _C (intercambio.GetTicker)

Nube ligeraNo se puede poner en el error, cambiando var pos = _C (exchange.GetPosition)

Nuevo 1898 tbl.rows.push,是这个不允许传入null值是吗?我有些步骤是没有下单的,所以订单信息为null,必须允许传入null,应该要怎么改呢,谢谢梦总!

Nuevo 1898Entonces, si el número de orden es nulo, entonces el número de orden debe ser nulo, y si el número de orden es nulo, entonces el número de orden debe ser nulo.

Un sueño pequeño.Puede ser que buyOrder o sellOrder sea null, puede imprimirlo para comprobar.