正在显示
2 个修改的文件
包含
32 行增加
和
1 行删除
| @@ -124,7 +124,22 @@ class CmBroker | @@ -124,7 +124,22 @@ class CmBroker | ||
| 124 | } | 124 | } |
| 125 | } | 125 | } |
| 126 | if (isset($data['e']) && $data['e'] == 'ACCOUNT_UPDATE') { | 126 | if (isset($data['e']) && $data['e'] == 'ACCOUNT_UPDATE') { |
| 127 | - | 127 | + if (isset($data['a']) && isset($data['a']['P'])) { |
| 128 | + $positions = $data['a']['P']; | ||
| 129 | + foreach ($positions as $key => $value) { | ||
| 130 | + $wsDataPos = WsDataPos::TransferBinancePos($value, $this->symbolInfos, function ($symbol) { | ||
| 131 | + return $this->getSymbolSt($symbol); | ||
| 132 | + }); | ||
| 133 | + $this->positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $pos; | ||
| 134 | + $wsData = new WsData($this->plat, 'pos', $trade = null, $pos = $wsDataPos); | ||
| 135 | + $onData($wsData); | ||
| 136 | + } | ||
| 137 | + foreach ($this->positions as $key => $value) { | ||
| 138 | + if ($value['qty'] == 0) { | ||
| 139 | + unset($this->positions[$key]); | ||
| 140 | + } | ||
| 141 | + } | ||
| 142 | + } | ||
| 128 | } | 143 | } |
| 129 | } | 144 | } |
| 130 | //处理欧意账户相关数据监听 | 145 | //处理欧意账户相关数据监听 |
| @@ -55,4 +55,20 @@ class WsDataPos | @@ -55,4 +55,20 @@ class WsDataPos | ||
| 55 | $pnl = (float)$data['upl']; | 55 | $pnl = (float)$data['upl']; |
| 56 | return new WsDataPos($symbol, $posSide, $qty, $lot, $avgPrice, false, $pnl); | 56 | return new WsDataPos($symbol, $posSide, $qty, $lot, $avgPrice, false, $pnl); |
| 57 | } | 57 | } |
| 58 | + | ||
| 59 | + public static function TransferBinancePos($data, $symbolInfos, callable $toSymbolSt): WsDataPos|null | ||
| 60 | + { | ||
| 61 | + $symbol = call_user_func($toSymbolSt, $data['s']); | ||
| 62 | + /** @var SymbolInfo $symbolInfo */ | ||
| 63 | + $symbolInfo = $symbolInfos[$symbol] ?? null; | ||
| 64 | + if ($symbolInfo === null) { | ||
| 65 | + return null; | ||
| 66 | + } | ||
| 67 | + $posSide = strtoupper($data['ps']); | ||
| 68 | + $qty = (float)$data['pa']; | ||
| 69 | + $lot = $qty; | ||
| 70 | + $avgPrice = (float)$data['ep']; | ||
| 71 | + $pnl = (float)$data['up']; | ||
| 72 | + return new WsDataPos($symbol, $posSide, $qty, $lot, $avgPrice, false, $pnl); | ||
| 73 | + } | ||
| 58 | } | 74 | } |
-
请 注册 或 登录 后发表评论