作者 karlet

feat:完成持仓频道

... ... @@ -19,12 +19,12 @@ $restHost = "http://bgapi.keetu.com";
$broker = new CmBroker(CmBroker::PLAT_BITGET, $apiInfo, $wsHost, $restHost);
output("开始监听");
// $broker->accListen(function (WsData $data) {
// if ($data->dataType == "order") {
// var_dump($data);
// }
// });
$broker->setLever("BTCUSDT", 20);
$broker->accListen(function (WsData $data) {
if ($data->dataType == "pos") {
var_dump($data->pos->toArray());
}
});
// $broker->setLever("BTCUSDT", 20);
// $broker->klineListen("BTCUSDT", "1m", function ($data) {
// output($data->toArray());
// });
... ...
... ... @@ -285,20 +285,16 @@ class CmBroker
}
}
// 处理账户和持仓数据
if (isset($data['arg']) && $data['arg']['channel'] == 'account') {
foreach ($data['data'] as $value) {
if (isset($value['positions'])) {
foreach ($value['positions'] as $pos) {
$wsDataPos = WsDataPos::TransferBitgetPos($pos, $this->symbolInfos, function ($symbol) {
return $this->getSymbolSt($symbol);
});
if ($wsDataPos) {
$this->positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $wsDataPos;
$wsData = new WsData($this->plat, 'pos', null, $wsDataPos);
$onData($wsData);
}
}
// 处理持仓数据
if (isset($data['arg']) && $data['arg']['channel'] == 'positions') {
foreach ($data['data'] as $pos) {
$wsDataPos = WsDataPos::TransferBitgetPos($pos, $this->symbolInfos, function ($symbol) {
return $this->getSymbolSt($symbol);
});
if ($wsDataPos) {
$this->positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $wsDataPos;
$wsData = new WsData($this->plat, 'pos', null, $wsDataPos);
$onData($wsData);
}
}
return;
... ...
... ... @@ -203,7 +203,6 @@ class WsDataOrder
}
public static function TransferBitgetOrder(array $data, array $symbolInfos, callable $toSymbolSt): WsDataOrder|null
{
var_dump($data);
$symbol = call_user_func($toSymbolSt, $data['instId']);
/** @var SymbolInfo $symbolInfo */
$symbolInfo = $symbolInfos[$symbol] ?? null;
... ...
... ... @@ -73,6 +73,7 @@ class WsDataPos
}
public static function TransferBybitPos($data, $symbolInfos, callable $toSymbolSt): WsDataPos|null
{
var_dump($data);
$symbol = call_user_func($toSymbolSt, $data['symbol']);
/** @var SymbolInfo $symbolInfo */
$symbolInfo = $symbolInfos[$symbol] ?? null;
... ... @@ -94,21 +95,17 @@ class WsDataPos
}
public static function TransferBitgetPos(array $data, array $symbolInfos, callable $toSymbolSt): WsDataPos|null
{
$symbol = call_user_func($toSymbolSt, $data['symbol']);
$symbol = call_user_func($toSymbolSt, $data['instId']);
/** @var SymbolInfo $symbolInfo */
$symbolInfo = $symbolInfos[$symbol] ?? null;
if ($symbolInfo === null) {
return null;
}
return new WsDataPos(
$symbol,
'BOTH',
(float)$data['total'],
(float)$data['total'],
(float)$data['averageOpenPrice'],
false,
(float)$data['unrealizedPL']
);
$posSide = strtoupper($data['holdSide']);
$qty = (float)$data['available'];
$lot = $qty;
$avgPrice = (float)$data['openPriceAvg'];
$pnl = (float)$data['unrealizedPL'];
return new WsDataPos($symbol, $posSide, $qty, $lot, $avgPrice, false, $pnl);
}
}
... ...