正在显示
4 个修改的文件
包含
71 行增加
和
28 行删除
| @@ -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'; |
-
请 注册 或 登录 后发表评论