Citando um trecho de código DreamSum, descobriu que em algum momento retornaria um erro: TypeError: cannot read property
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)])
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!
Inventor quantificado - sonho pequenoNã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?
Inventor quantificado - sonho pequenoPode 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?
Inventor quantificado - sonho pequenoBuyOrder?buyOrder.Price : "--" Isso é suficiente.
Inventor quantificado - sonho pequenoPode 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.
Inventor quantificado - sonho pequenoPode ser causado por buyOrder ou sellOrder ser null, pode ser impresso e verificado.