作者 karlet

feat:增加k线数据获取

@@ -287,4 +287,25 @@ class CmBroker @@ -287,4 +287,25 @@ class CmBroker
287 } 287 }
288 return -1; 288 return -1;
289 } 289 }
  290 + /**
  291 + * 获取k线数据
  292 + * @param string $symbol 交易对
  293 + * @param string $peroid 周期
  294 + * @param int $limit 限制数量
  295 + * @return Kline[] 返回K线数组
  296 + */
  297 + public function getKlines($symbol, $peroid, $limit = 100)
  298 + {
  299 + $symbolOri = $this->getSymbolOri($symbol, $this->plat);
  300 + if ($this->plat == 'okx') {
  301 + $klines = $this->exBroker->getKlines($symbolOri, $peroid, $limit);
  302 + $newKlines = [];
  303 + foreach ($klines as $key => $value) {
  304 + $kline = Kline::transferOkx($value);
  305 + $newKlines[] = $kline;
  306 + }
  307 + return $newKlines;
  308 + }
  309 + return [];
  310 + }
290 } 311 }
@@ -54,6 +54,13 @@ class Api @@ -54,6 +54,13 @@ class Api
54 return $this->request($path, $method, $param); 54 return $this->request($path, $method, $param);
55 } 55 }
56 56
  57 + //获取k线
  58 + public function klines($param)
  59 + {
  60 + $path = "/api/v5/market/index-candles";
  61 + $method = 'GET';
  62 + return $this->request($path, $method, $param);
  63 + }
57 64
58 //-----------private interface ------------ 65 //-----------private interface ------------
59 // 查询杠杆 66 // 查询杠杆
@@ -348,4 +348,22 @@ class ExBroker @@ -348,4 +348,22 @@ class ExBroker
348 } 348 }
349 return -1; 349 return -1;
350 } 350 }
  351 + //获取k线
  352 + public function getKlines($symbol, $period, $limit = "", $startTs = "", $endTs = "")
  353 + {
  354 + $param = [
  355 + 'instId' => $symbol,
  356 + 'bar' => $period,
  357 + ];
  358 + if ($limit) {
  359 + $param['limit'] = $limit;
  360 + }
  361 + if ($startTs) {
  362 + $param['after'] = $startTs;
  363 + }
  364 + if ($endTs) {
  365 + $param['before'] = $endTs;
  366 + }
  367 + return $this->api->klines($param);
  368 + }
351 } 369 }
@@ -41,8 +41,13 @@ class Kline @@ -41,8 +41,13 @@ class Kline
41 $high = $data[2]; 41 $high = $data[2];
42 $low = $data[3]; 42 $low = $data[3];
43 $close = $data[4]; 43 $close = $data[4];
44 - $vol = $data[6];  
45 - $volQuote = $data[7]; 44 + if (count($data) > 6) {
  45 + $vol = $data[6];
  46 + $volQuote = $data[7];
  47 + } else {
  48 + $vol = 0;
  49 + $volQuote = 0;
  50 + }
46 return new Kline($time, $open, $high, $low, $close, $vol, $volQuote); 51 return new Kline($time, $open, $high, $low, $close, $vol, $volQuote);
47 } 52 }
48 } 53 }