Por favor, ensinem-me a sonhar.

Autora:Neo1898, Criado: 2022-02-25 08:04:50, Atualizado: 2022-02-25 08:52:20

Citando um trecho de código DreamSum, descobriu que em algum momento retornaria um erro: TypeError: cannot read property Price of null at main (TypeError: cannot read property Price of null at main)ArquivoNo entanto, o problema não foi resolvido por causa da falta de informações sobre o preço, mas sim por causa da falta de informações sobre o preço. Eu vou mudar o valor para var pos = exchange.GetPosition ((() para var pos = _C ((exchange.GetPosition)))), se é possível resolver o problema; porque o reexame analógico não pode testar esse bug, deve ser real, por isso, por favor, resolva o problema, obrigado!

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)])

Mais.

Neo1898Se o valor de um valor for alterado para o valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor de um valor.

Neo1898O código para o local próximo da linha 553 é: Var t = exchange.GetTicker (em inglês) tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount))) Se você não tem dados do ticker, você pode alterá-lo para var t = _C (exchange.GetTicker)

Neo1898Obrigado, sonho!

Sonhos pequenosNão sei. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--") + "/" + (buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--") + "/" + (sellOrder? sellOrder.Amount : "--"))) Não sei. O problema é que, quando o buyOrder é nulo, não acesse o buyOrder.Amount ou o buyOrder.Price para não retornar erros.

Neo1898E se houver um pedido, o preço é numérico, mas o Amount não tem dados nem erros, isso é estranho, onde está o problema?

Neo1898Não houve pedido: mudou o preço, mudou a quantia, mas tentou. tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder? buyOrder.Amount :"--"), (sellOrder? sellOrder.Price "--" + "/" + sellOrder? sellOrder.Amount : "--") Ou o relatório TypeError: cannot read property 'Amount' of null at main (__FILE__:554), o código não foi atualizado?

Sonhos pequenosPode ser, é acessar uma propriedade de uma variável, quando se julga se a variável é null, ou não acessar, não há erro.

Neo1898tbl.rows.push (([currTotalEq, realProfit, t? t.Last : "--", (buyOrder? buyOrder.Price : "--" + "/" + buyOrder.Amount), (sellOrder? sellOrder.Price : "--" + "/" + sellOrder.Amount) ] Isso é o que está aqui em cima, certo?

Sonhos pequenosBuyOrder?buyOrder.Price : "--" Isso é suficiente.

Sonhos pequenosPode ser transmitido através de uma cadeia de caracteres em branco.

Neo1898Obrigado, isso é verdade, então eu tenho alguns passos que não são encomendados, então a mensagem de encomenda é null, você tem que permitir a entrada de null, o que devo fazer?

Nuvens levesVar t = _C (exchange.GetTicker)

Nuvens levesNão pode ser inserido com o erro de tolerância, mas sim com var pos = _C (exchange.GetPosition).

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

Neo1898Então, se eu não fizer a ordem, se eu permitir que o número de ordem seja nulo, onde posso mudar para permitir que o número de ordem seja nulo, então eu não vou fazer a ordem.

Sonhos pequenosPode ser causado por buyOrder ou sellOrder ser null, pode ser impresso e verificado.