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
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)])
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!
Los inventores cuantifican - sueños pequeños¿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?
Los inventores cuantifican - sueños pequeñosPuede, 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?
Los inventores cuantifican - sueños pequeñosBuyOrder?buyOrder.Price : "--" Esto es lo que se puede hacer.
Los inventores cuantifican - sueños pequeñosSe 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.
Los inventores cuantifican - sueños pequeñosPuede ser que buyOrder o sellOrder sea null, puede imprimirlo para comprobar.