// 从持仓列表中获取特定币种的持仓 function getPositionBySymbol(positions, symbol) { var index = -1; if (positions && positions.length > 0) { for (var i = 0; i < positions.length; i++) { if (positions[i][0].Symbol == symbol) { index = i; break; } } } return index == -1 ? null : positions[index]; } // 获取所有持仓列表 function getAllPositionInBinance() { var ret = exchange.IO("api", "GET", "/fapi/v2/account"); var positions = []; var i = 0; if (!ret || !ret.positions) { return null; } // 获取所有持仓 for (i = 0; i < ret.positions.length; i++) { if (ret.positions[i].positionAmt != 0 && ret.positions[i].symbol.endsWith("USDT")) { positions.push([{ Symbol: ret.positions[i].symbol.substring(0, ret.positions[i].symbol.lastIndexOf("USDT")) + "_USDT", Amount: Number(Math.abs(ret.positions[i].positionAmt)), FrozenAmount: 0, Price: Number(ret.positions[i].entryPrice), Profit: Number(ret.positions[i].unrealizedProfit), Type: ret.positions[i].positionAmt < 0 ? PD_SHORT : PD_LONG, ContractType: "swap", Margin: Number(ret.positions[i].positionInitialMargin), LevelRate: Number(ret.positions[i].leverage) }]); } } // 合并相同币种的持仓(同一币种,多空双向持仓) if (positions.length >= 2) { for (i = 0; i < positions.length; i++) { for (var j = i + 1; j < positions.length; j++) { if (positions[i][0].Symbol == positions[j][0].Symbol) { positions[i].push(JSON.parse(JSON.stringify(positions[j][0]))); positions.splice(j, 1); // 删除相同币种 break; } } } } return positions; }
Эт8888Дебютный запрос ReferenceError:'main' is not defined
"Экзод" [перевод стратегии]Очень полезно, спасибо!
LJG658658Почему вы не видите мои комментарии?
LJG658658Я не понимаю, это сколько свободных позиций в этой валюте на платформе?
Легкие облака.Очень нужно! Спасибо!
Ого.За один, можно оптимизировать, многопространственное двустороннее хранение.
Лето не бьет тебя.Все позиции в Биньоне
Лето не бьет тебя.Уже много свободных двусторонних сбережений.