作者 karlet

feat:订单成交监听

@@ -117,20 +117,25 @@ class WsDataTrade @@ -117,20 +117,25 @@ class WsDataTrade
117 public static function TransferBybitTrade($data, $symbolInfos, callable $toSymbolSt): WsDataTrade|null 117 public static function TransferBybitTrade($data, $symbolInfos, callable $toSymbolSt): WsDataTrade|null
118 { 118 {
119 $platform = 'bybit'; 119 $platform = 'bybit';
120 - $order = $data['data'];  
121 - $symbol = call_user_func($toSymbolSt, $order['symbol']);  
122 - $posSide = strtoupper($order['side']);  
123 - $side = strtoupper($order['side']);  
124 - $price = (float)$order['price'];  
125 - $qty = (float)$order['qty']; 120 + $symbol = call_user_func($toSymbolSt, $data['symbol']);
  121 + $posSide = "";
  122 + $side = strtoupper($data['side']);
  123 + $price = (float)$data['execPrice'];
  124 + $qty = (float)$data['execQty'];
126 $lot = $qty; 125 $lot = $qty;
127 - $pnl = (float)$order['realised_pnl'];  
128 - $fee = (float)$order['fee']; 126 + $pnl = (float)$data['execPnl'];
  127 + if (($pnl == 0 && $side == "BUY") || ($pnl != 0 && $side == "SELL")) {
  128 + $posSide = "LONG";
  129 + }
  130 + if (($pnl == 0 && $side == "SELL") || ($pnl != 0 && $side == "BUY")) {
  131 + $posSide = "SHORT";
  132 + }
  133 + $fee = (float)$data['execFee'];
129 $quoteVol = $price * $qty; 134 $quoteVol = $price * $qty;
130 - $ts = $order['transact_time'];  
131 - $tradeId = $order['order_id'];  
132 - $ordId = $order['order_id'];  
133 - $cliOrdId = $order['order_link_id']; 135 + $ts = $data['execTime'];
  136 + $tradeId = $data['execId'];
  137 + $ordId = $data['orderId'];
  138 + $cliOrdId = $data['orderLinkId'];
134 $lever = 0; 139 $lever = 0;
135 return new WsDataTrade($platform, $posSide, $symbol, $side, $price, $qty, $lot, $pnl, $fee, $quoteVol, $ts, $tradeId, $ordId, $cliOrdId, $lever); 140 return new WsDataTrade($platform, $posSide, $symbol, $side, $price, $qty, $lot, $pnl, $fee, $quoteVol, $ts, $tradeId, $ordId, $cliOrdId, $lever);
136 } 141 }