|
...
|
...
|
@@ -89,59 +89,69 @@ class CmBroker |
|
|
|
$this->exBroker->accListen(function ($data) use ($onData) {
|
|
|
|
// output("ws 有效数据", $data);
|
|
|
|
if ($this->plat == self::PLAT_BINANCE) {
|
|
|
|
$this->msg("binance 无处理ws数据实现");
|
|
|
|
$this->binanceAccDataHandle($data, $onData);
|
|
|
|
}
|
|
|
|
if ($this->plat == self::PLAT_OKX) {
|
|
|
|
if (isset($data['arg']) && $data['arg']['channel'] == 'orders') {
|
|
|
|
foreach ($data['data'] as $key => $value) {
|
|
|
|
$wsDataTrade = WsDataTrade::TransferOkxOrder($value, $this->symbolInfos, function ($symbol) {
|
|
|
|
return $this->getSymbolSt($symbol);
|
|
|
|
});
|
|
|
|
if ($wsDataTrade != null) {
|
|
|
|
$wsData = new WsData($this->plat, 'trade', $trade = $wsDataTrade);
|
|
|
|
$onData($wsData);
|
|
|
|
}
|
|
|
|
$wsDataOrd = WsDataOrder::TransferOkxOrder($value, $this->symbolInfos, function ($symbol) {
|
|
|
|
return $this->getSymbolSt($symbol);
|
|
|
|
});
|
|
|
|
if ($wsDataOrd != null) {
|
|
|
|
$wsData = new WsData($this->plat, 'order', $trade = null, $pos = null, $order = $wsDataOrd);
|
|
|
|
$onData($wsData);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
$this->okxAccDataHandle($data, $onData);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
//处理币安相关账户数据监听
|
|
|
|
private function binanceAccDataHandle($data, $onData)
|
|
|
|
{
|
|
|
|
$this->msg("binance 推送", $data);
|
|
|
|
}
|
|
|
|
//处理欧意账户相关数据监听
|
|
|
|
private function okxAccDataHandle($data, $onData)
|
|
|
|
{
|
|
|
|
if (isset($data['arg']) && $data['arg']['channel'] == 'orders') {
|
|
|
|
foreach ($data['data'] as $key => $value) {
|
|
|
|
$wsDataTrade = WsDataTrade::TransferOkxOrder($value, $this->symbolInfos, function ($symbol) {
|
|
|
|
return $this->getSymbolSt($symbol);
|
|
|
|
});
|
|
|
|
if ($wsDataTrade != null) {
|
|
|
|
$wsData = new WsData($this->plat, 'trade', $trade = $wsDataTrade);
|
|
|
|
$onData($wsData);
|
|
|
|
}
|
|
|
|
if (isset($data['arg']) && $data['arg']['channel'] == 'positions') {
|
|
|
|
$positions = [];
|
|
|
|
$eventType = $data['eventType'];
|
|
|
|
foreach ($data['data'] as $key => $value) {
|
|
|
|
$wsDataPos = WsDataPos::TransferOkxPos($value, $this->symbolInfos, function ($symbol) {
|
|
|
|
return $this->getSymbolSt($symbol);
|
|
|
|
});
|
|
|
|
if ($wsDataPos) {
|
|
|
|
$pos = Pos::transferWsDataPos($wsDataPos);
|
|
|
|
$positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $pos;
|
|
|
|
$wsData = new WsData($this->plat, 'pos', $trade = null, $pos = $wsDataPos);
|
|
|
|
$onData($wsData);
|
|
|
|
if ($eventType == 'event_update') {
|
|
|
|
$this->positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $pos;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ($eventType == 'snapshot') {
|
|
|
|
$this->positions = $positions;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
$wsDataOrd = WsDataOrder::TransferOkxOrder($value, $this->symbolInfos, function ($symbol) {
|
|
|
|
return $this->getSymbolSt($symbol);
|
|
|
|
});
|
|
|
|
if ($wsDataOrd != null) {
|
|
|
|
$wsData = new WsData($this->plat, 'order', $trade = null, $pos = null, $order = $wsDataOrd);
|
|
|
|
$onData($wsData);
|
|
|
|
}
|
|
|
|
if (isset($data['arg']) && $data['arg']['channel'] == 'account') {
|
|
|
|
$wsDataAccount = WsDataAccount::TransferOkxAccount($data['data']);
|
|
|
|
$wsData = new WsData($this->plat, 'account', $trade = null, $pos = null, $order = null, $account = $wsDataAccount);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (isset($data['arg']) && $data['arg']['channel'] == 'positions') {
|
|
|
|
$positions = [];
|
|
|
|
$eventType = $data['eventType'];
|
|
|
|
foreach ($data['data'] as $key => $value) {
|
|
|
|
$wsDataPos = WsDataPos::TransferOkxPos($value, $this->symbolInfos, function ($symbol) {
|
|
|
|
return $this->getSymbolSt($symbol);
|
|
|
|
});
|
|
|
|
if ($wsDataPos) {
|
|
|
|
$pos = Pos::transferWsDataPos($wsDataPos);
|
|
|
|
$positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $pos;
|
|
|
|
$wsData = new WsData($this->plat, 'pos', $trade = null, $pos = $wsDataPos);
|
|
|
|
$onData($wsData);
|
|
|
|
return;
|
|
|
|
if ($eventType == 'event_update') {
|
|
|
|
$this->positions[$wsDataPos->symbol . "_" . $wsDataPos->posSide] = $pos;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->msg("okx 无处理ws数据实现", $data);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if ($eventType == 'snapshot') {
|
|
|
|
$this->positions = $positions;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (isset($data['arg']) && $data['arg']['channel'] == 'account') {
|
|
|
|
$wsDataAccount = WsDataAccount::TransferOkxAccount($data['data']);
|
|
|
|
$wsData = new WsData($this->plat, 'account', $trade = null, $pos = null, $order = null, $account = $wsDataAccount);
|
|
|
|
$onData($wsData);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
$this->msg("okx 无处理ws数据实现", $data);
|
|
|
|
}
|
|
|
|
public function klineListen($symbol, $peroid, $onData)
|
|
|
|
{
|
...
|
...
|
|