正在显示
3 个修改的文件
包含
39 行增加
和
0 行删除
| @@ -155,9 +155,18 @@ class CmBroker | @@ -155,9 +155,18 @@ class CmBroker | ||
| 155 | } | 155 | } |
| 156 | public function klineListen($symbol, $peroid, $onData) | 156 | public function klineListen($symbol, $peroid, $onData) |
| 157 | { | 157 | { |
| 158 | + if ($this->plat == self::PLAT_BINANCE && $peroid == '1s') { | ||
| 159 | + $this->msg("币安不支持1sk线", $symbol, $peroid); | ||
| 160 | + return; | ||
| 161 | + } | ||
| 158 | $symbol = $this->getSymbolOri($symbol, $this->plat); | 162 | $symbol = $this->getSymbolOri($symbol, $this->plat); |
| 159 | $this->exBroker->klineListen($symbol, $peroid, function ($data) use ($onData) { | 163 | $this->exBroker->klineListen($symbol, $peroid, function ($data) use ($onData) { |
| 164 | + if ($this->plat == self::PLAT_BINANCE) { | ||
| 165 | + $kline = Kline::transferBinance($data); | ||
| 166 | + } | ||
| 167 | + if ($this->plat == self::PLAT_OKX) { | ||
| 160 | $kline = Kline::transferOkx($data); | 168 | $kline = Kline::transferOkx($data); |
| 169 | + } | ||
| 161 | $onData($kline); | 170 | $onData($kline); |
| 162 | }); | 171 | }); |
| 163 | } | 172 | } |
| @@ -57,6 +57,24 @@ class ExBroker | @@ -57,6 +57,24 @@ class ExBroker | ||
| 57 | ); | 57 | ); |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | + public function klineListen($symbol, $interval, callable $onData) { | ||
| 61 | + $this->wsKline = new Websocket($this->host. $this->path); | ||
| 62 | + $this->wsKline->connect( | ||
| 63 | + $onOpen = function () use ($symbol, $interval) { | ||
| 64 | + $subData = json_encode(['method' => 'SUBSCRIBE', 'params' => [$symbol. '@kline_'. $interval], 'id' => 1]); | ||
| 65 | + $this->wsKline->push($subData); | ||
| 66 | + }, | ||
| 67 | + $onMessage = function ($data) use ($onData) { | ||
| 68 | + $data = json_decode($data, true); | ||
| 69 | + if (!$data) { | ||
| 70 | + return; | ||
| 71 | + } | ||
| 72 | + $onData($data); | ||
| 73 | + }, | ||
| 74 | + $onClose = null, | ||
| 75 | + ); | ||
| 76 | + } | ||
| 77 | + | ||
| 60 | private function getListenKey() | 78 | private function getListenKey() |
| 61 | { | 79 | { |
| 62 | $res = $this->api->getListenKey([]); | 80 | $res = $this->api->getListenKey([]); |
| @@ -50,4 +50,16 @@ class Kline | @@ -50,4 +50,16 @@ class Kline | ||
| 50 | } | 50 | } |
| 51 | return new Kline($time, $open, $high, $low, $close, $vol, $volQuote); | 51 | return new Kline($time, $open, $high, $low, $close, $vol, $volQuote); |
| 52 | } | 52 | } |
| 53 | + public static function transferBinance($data) | ||
| 54 | + { | ||
| 55 | + $kline = $data['k']; | ||
| 56 | + $time = $kline['t']; | ||
| 57 | + $open = $kline['o']; | ||
| 58 | + $high = $kline['h']; | ||
| 59 | + $low = $kline['l']; | ||
| 60 | + $close = $kline['c']; | ||
| 61 | + $vol = $kline['v']; | ||
| 62 | + $volQuote = $kline['q']; | ||
| 63 | + return new Kline($time, $open, $high, $low, $close, $vol, $volQuote); | ||
| 64 | + } | ||
| 53 | } | 65 | } |
-
请 注册 或 登录 后发表评论