作者 karlet

feat:完成持仓频道

@@ -19,12 +19,12 @@ $restHost = "http://bgapi.keetu.com"; @@ -19,12 +19,12 @@ $restHost = "http://bgapi.keetu.com";
19 $broker = new CmBroker(CmBroker::PLAT_BITGET, $apiInfo, $wsHost, $restHost); 19 $broker = new CmBroker(CmBroker::PLAT_BITGET, $apiInfo, $wsHost, $restHost);
20 20
21 output("开始监听"); 21 output("开始监听");
22 -// $broker->accListen(function (WsData $data) {  
23 -// if ($data->dataType == "order") {  
24 -// var_dump($data);  
25 -// }  
26 -// });  
27 -$broker->setLever("BTCUSDT", 20); 22 +$broker->accListen(function (WsData $data) {
  23 + if ($data->dataType == "pos") {
  24 + var_dump($data->pos->toArray());
  25 + }
  26 +});
  27 +// $broker->setLever("BTCUSDT", 20);
28 // $broker->klineListen("BTCUSDT", "1m", function ($data) { 28 // $broker->klineListen("BTCUSDT", "1m", function ($data) {
29 // output($data->toArray()); 29 // output($data->toArray());
30 // }); 30 // });
@@ -285,11 +285,9 @@ class CmBroker @@ -285,11 +285,9 @@ class CmBroker
285 } 285 }
286 } 286 }
287 287
288 - // 处理账户和持仓数据  
289 - if (isset($data['arg']) && $data['arg']['channel'] == 'account') {  
290 - foreach ($data['data'] as $value) {  
291 - if (isset($value['positions'])) {  
292 - foreach ($value['positions'] as $pos) { 288 + // 处理持仓数据
  289 + if (isset($data['arg']) && $data['arg']['channel'] == 'positions') {
  290 + foreach ($data['data'] as $pos) {
293 $wsDataPos = WsDataPos::TransferBitgetPos($pos, $this->symbolInfos, function ($symbol) { 291 $wsDataPos = WsDataPos::TransferBitgetPos($pos, $this->symbolInfos, function ($symbol) {
294 return $this->getSymbolSt($symbol); 292 return $this->getSymbolSt($symbol);
295 }); 293 });
@@ -299,8 +297,6 @@ class CmBroker @@ -299,8 +297,6 @@ class CmBroker
299 $onData($wsData); 297 $onData($wsData);
300 } 298 }
301 } 299 }
302 - }  
303 - }  
304 return; 300 return;
305 } 301 }
306 } 302 }
@@ -203,7 +203,6 @@ class WsDataOrder @@ -203,7 +203,6 @@ class WsDataOrder
203 } 203 }
204 public static function TransferBitgetOrder(array $data, array $symbolInfos, callable $toSymbolSt): WsDataOrder|null 204 public static function TransferBitgetOrder(array $data, array $symbolInfos, callable $toSymbolSt): WsDataOrder|null
205 { 205 {
206 - var_dump($data);  
207 $symbol = call_user_func($toSymbolSt, $data['instId']); 206 $symbol = call_user_func($toSymbolSt, $data['instId']);
208 /** @var SymbolInfo $symbolInfo */ 207 /** @var SymbolInfo $symbolInfo */
209 $symbolInfo = $symbolInfos[$symbol] ?? null; 208 $symbolInfo = $symbolInfos[$symbol] ?? null;
@@ -73,6 +73,7 @@ class WsDataPos @@ -73,6 +73,7 @@ class WsDataPos
73 } 73 }
74 public static function TransferBybitPos($data, $symbolInfos, callable $toSymbolSt): WsDataPos|null 74 public static function TransferBybitPos($data, $symbolInfos, callable $toSymbolSt): WsDataPos|null
75 { 75 {
  76 + var_dump($data);
76 $symbol = call_user_func($toSymbolSt, $data['symbol']); 77 $symbol = call_user_func($toSymbolSt, $data['symbol']);
77 /** @var SymbolInfo $symbolInfo */ 78 /** @var SymbolInfo $symbolInfo */
78 $symbolInfo = $symbolInfos[$symbol] ?? null; 79 $symbolInfo = $symbolInfos[$symbol] ?? null;
@@ -94,21 +95,17 @@ class WsDataPos @@ -94,21 +95,17 @@ class WsDataPos
94 } 95 }
95 public static function TransferBitgetPos(array $data, array $symbolInfos, callable $toSymbolSt): WsDataPos|null 96 public static function TransferBitgetPos(array $data, array $symbolInfos, callable $toSymbolSt): WsDataPos|null
96 { 97 {
97 - $symbol = call_user_func($toSymbolSt, $data['symbol']); 98 + $symbol = call_user_func($toSymbolSt, $data['instId']);
98 /** @var SymbolInfo $symbolInfo */ 99 /** @var SymbolInfo $symbolInfo */
99 $symbolInfo = $symbolInfos[$symbol] ?? null; 100 $symbolInfo = $symbolInfos[$symbol] ?? null;
100 if ($symbolInfo === null) { 101 if ($symbolInfo === null) {
101 return null; 102 return null;
102 } 103 }
103 -  
104 - return new WsDataPos(  
105 - $symbol,  
106 - 'BOTH',  
107 - (float)$data['total'],  
108 - (float)$data['total'],  
109 - (float)$data['averageOpenPrice'],  
110 - false,  
111 - (float)$data['unrealizedPL']  
112 - ); 104 + $posSide = strtoupper($data['holdSide']);
  105 + $qty = (float)$data['available'];
  106 + $lot = $qty;
  107 + $avgPrice = (float)$data['openPriceAvg'];
  108 + $pnl = (float)$data['unrealizedPL'];
  109 + return new WsDataPos($symbol, $posSide, $qty, $lot, $avgPrice, false, $pnl);
113 } 110 }
114 } 111 }