作者 karlet

feat:完善部分k线,订单监听问题

@@ -370,7 +370,23 @@ class CmBroker @@ -370,7 +370,23 @@ class CmBroker
370 } 370 }
371 return $arr[$period]; 371 return $arr[$period];
372 } 372 }
373 - throw new Exception('平台错误' + $platTarget); 373 + if ($platTarget == self::PLAT_BITGET) {
  374 + $arr = [
  375 + '1m' => 'candle1m',
  376 + '5m' => 'candle5m',
  377 + '15m' => 'candle15m',
  378 + '30m' => 'candle30m',
  379 + '1h' => 'candle1H',
  380 + '4h' => 'candle4H',
  381 + '12h' => 'candle12H',
  382 + '1d' => 'candle1D',
  383 + ];
  384 + if (!isset($arr[$period])) {
  385 + throw new Exception('周期错误,' . $this->plat . '不支持的周期' . $period);
  386 + }
  387 + return $arr[$period];
  388 + }
  389 + throw new Exception('平台错误' . $platTarget);
374 } 390 }
375 391
376 //转换为原始交易对 392 //转换为原始交易对
@@ -73,8 +73,8 @@ class ExBroker @@ -73,8 +73,8 @@ class ExBroker
73 'op' => 'subscribe', 73 'op' => 'subscribe',
74 'args' => [ 74 'args' => [
75 [ 75 [
76 - 'instType' => 'SPOT',  
77 - 'channel' => 'candle' . $interval, 76 + 'instType' => 'USDT-FUTURES',
  77 + 'channel' => $interval,
78 'instId' => $symbol 78 'instId' => $symbol
79 ] 79 ]
80 ] 80 ]
@@ -115,7 +115,7 @@ class ExBroker @@ -115,7 +115,7 @@ class ExBroker
115 115
116 private function wsLogin() 116 private function wsLogin()
117 { 117 {
118 - $timestamp = (string)(getMicrotime() / 1000); 118 + $timestamp = (string)(getMicrotime());
119 $this->wsAcc->push(json_encode([ 119 $this->wsAcc->push(json_encode([
120 'op' => 'login', 120 'op' => 'login',
121 'args' => [ 121 'args' => [
@@ -155,15 +155,25 @@ class ExBroker @@ -155,15 +155,25 @@ class ExBroker
155 'op' => 'subscribe', 155 'op' => 'subscribe',
156 'args' => [ 156 'args' => [
157 [ 157 [
158 - 'instType' => 'SPOT',  
159 - 'channel' => 'account',  
160 - 'instId' => 'default' 158 + "instType" => "USDT-FUTURES",
  159 + "channel" => "positions",
  160 + "instId" => "default",
161 ], 161 ],
162 [ 162 [
163 - 'instType' => 'SPOT',  
164 - 'channel' => 'orders',  
165 - 'instId' => 'default'  
166 - ] 163 + "instType" => "USDT-FUTURES",
  164 + "channel" => "account",
  165 + "coin" => "default"
  166 + ],
  167 + [
  168 + "instType" => "USDT-FUTURES",
  169 + "channel" => "orders",
  170 + "instId" => "default"
  171 + ],
  172 + [
  173 + "instType" => "USDT-FUTURES",
  174 + "channel" => "fill",
  175 + "instId" => "default"
  176 + ],
167 ] 177 ]
168 ])); 178 ]));
169 } 179 }
@@ -88,15 +88,15 @@ class Kline @@ -88,15 +88,15 @@ class Kline
88 public static function transferBitget($data) 88 public static function transferBitget($data)
89 { 89 {
90 $kline = $data['data'][0]; 90 $kline = $data['data'][0];
91 - $time = (int)($kline['ts']);  
92 - $open = (float)$kline['open'];  
93 - $high = (float)$kline['high'];  
94 - $low = (float)$kline['low'];  
95 - $close = (float)$kline['close'];  
96 - $vol = (float)$kline['vol'];  
97 - $volQuote = (float)$kline['volCcy'];  
98 - $uts = $time;  
99 - $isFinal = $kline['confirm'] ?? true; 91 + $time = (int)($kline[0]);
  92 + $open = (float)$kline[1];
  93 + $high = (float)$kline[2];
  94 + $low = (float)$kline[3];
  95 + $close = (float)$kline[4];
  96 + $vol = (float)$kline[5];
  97 + $volQuote = (float)$kline[6];
  98 + $uts = $data['ts'];
  99 + $isFinal = $data['action'] == "snapshot";
100 return new Kline($time, $open, $high, $low, $close, $vol, $volQuote, $uts, $isFinal); 100 return new Kline($time, $open, $high, $low, $close, $vol, $volQuote, $uts, $isFinal);
101 } 101 }
102 } 102 }
@@ -203,26 +203,43 @@ class WsDataOrder @@ -203,26 +203,43 @@ 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 - $symbol = call_user_func($toSymbolSt, $data['symbol']); 206 + var_dump($data);
  207 + $symbol = call_user_func($toSymbolSt, $data['instId']);
207 /** @var SymbolInfo $symbolInfo */ 208 /** @var SymbolInfo $symbolInfo */
208 $symbolInfo = $symbolInfos[$symbol] ?? null; 209 $symbolInfo = $symbolInfos[$symbol] ?? null;
209 if ($symbolInfo === null) { 210 if ($symbolInfo === null) {
210 return null; 211 return null;
211 } 212 }
212 - 213 + $posSide = strtoupper($data['posSide']);
  214 + if ($posSide == 'NET') {
  215 + $posSide = 'BOTH';
  216 + }
  217 + $avgPx = 0;
  218 + if (isset($data['priceAvg'])) {
  219 + $avgPx = (float)$data['priceAvg'];
  220 + }
  221 + $ordType = strtoupper($data['orderType']);
  222 + $timeInForce = strtoupper($data['force']);
  223 + if ($ordType == 'LIMIT' && $timeInForce == 'IOC') {
  224 + $ordType = 'IOC';
  225 + }
  226 + $pnl = 0;
  227 + if (isset($data['pnl'])) {
  228 + $pnl = (float)$data['pnl'];
  229 + }
213 return new WsDataOrder( 230 return new WsDataOrder(
214 'bitget', 231 'bitget',
215 - 'BOTH', 232 + $posSide,
216 $symbol, 233 $symbol,
217 strtoupper($data['side']), 234 strtoupper($data['side']),
218 (float)$data['price'], 235 (float)$data['price'],
219 - (float)$data['fillPrice'], 236 + $avgPx,
220 (float)$data['size'], 237 (float)$data['size'],
221 (float)$data['size'], 238 (float)$data['size'],
222 - 0, 239 + $pnl,
223 (int)($data['cTime']), 240 (int)($data['cTime']),
224 (int)($data['uTime']), 241 (int)($data['uTime']),
225 - strtoupper($data['orderType']), 242 + $ordType,
226 $data['clientOid'], 243 $data['clientOid'],
227 $data['orderId'], 244 $data['orderId'],
228 self::getBitgetStatus($data['status']) 245 self::getBitgetStatus($data['status'])
@@ -232,9 +249,9 @@ class WsDataOrder @@ -232,9 +249,9 @@ class WsDataOrder
232 private static function getBitgetStatus($status) 249 private static function getBitgetStatus($status)
233 { 250 {
234 switch ($status) { 251 switch ($status) {
235 - case 'new': 252 + case 'live':
236 return 'LIVE'; 253 return 'LIVE';
237 - case 'partial-filled': 254 + case 'partially_filled':
238 return 'PARTIALLY_FILLED'; 255 return 'PARTIALLY_FILLED';
239 case 'filled': 256 case 'filled':
240 return 'FILLED'; 257 return 'FILLED';