作者 karlet

feat:增加bn设置双向持仓模式

@@ -23,6 +23,7 @@ class Api @@ -23,6 +23,7 @@ class Api
23 } 23 }
24 24
25 //-----------public interface ------------ 25 //-----------public interface ------------
  26 + //获取所有品种资金费率
26 public function getPremiumIndex($params) 27 public function getPremiumIndex($params)
27 { 28 {
28 $url = "/fapi/v1/premiumIndex"; 29 $url = "/fapi/v1/premiumIndex";
@@ -31,12 +32,20 @@ class Api @@ -31,12 +32,20 @@ class Api
31 } 32 }
32 33
33 //-------private interface ------------ 34 //-------private interface ------------
  35 + //获取用户监听key
34 public function getListenKey($params) 36 public function getListenKey($params)
35 { 37 {
36 $url = "/fapi/v1/listenKey"; 38 $url = "/fapi/v1/listenKey";
37 $method = "POST"; 39 $method = "POST";
38 return $this->request($method, $url, [], $this->apiInfo); 40 return $this->request($method, $url, [], $this->apiInfo);
39 } 41 }
  42 + //设置持仓模式
  43 + public function setPositionMode($params)
  44 + {
  45 + $url = "/fapi/v1/positionSide/dual";
  46 + $method = "POST";
  47 + return $this->request($method, $url, $params, $this->apiInfo);
  48 + }
40 49
41 //------------------------------------ 50 //------------------------------------
42 51
@@ -57,11 +57,12 @@ class ExBroker @@ -57,11 +57,12 @@ 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); 60 + public function klineListen($symbol, $interval, callable $onData)
  61 + {
  62 + $this->wsKline = new Websocket($this->host . $this->path);
62 $this->wsKline->connect( 63 $this->wsKline->connect(
63 $onOpen = function () use ($symbol, $interval) { 64 $onOpen = function () use ($symbol, $interval) {
64 - $subData = json_encode(['method' => 'SUBSCRIBE', 'params' => [$symbol. '@kline_'. $interval], 'id' => 1]); 65 + $subData = json_encode(['method' => 'SUBSCRIBE', 'params' => [$symbol . '@kline_' . $interval], 'id' => 1]);
65 $this->wsKline->push($subData); 66 $this->wsKline->push($subData);
66 }, 67 },
67 $onMessage = function ($data) use ($onData) { 68 $onMessage = function ($data) use ($onData) {
@@ -85,4 +86,14 @@ class ExBroker @@ -85,4 +86,14 @@ class ExBroker
85 { 86 {
86 $res = $this->api->getPremiumIndex([]); 87 $res = $this->api->getPremiumIndex([]);
87 } 88 }
  89 + //设置双向持仓模式
  90 + public function setLongShortMode($isLongShortMode)
  91 + {
  92 + if ($isLongShortMode) {
  93 + $res = $this->api->setPositionMode(['dualSidePosition' => 'true']);
  94 + } else {
  95 + $res = $this->api->setPositionMode(['dualSidePosition' => 'false']);
  96 + }
  97 + return $res;
  98 + }
88 } 99 }
@@ -256,10 +256,10 @@ class ExBroker @@ -256,10 +256,10 @@ class ExBroker
256 output("设置合约模式", $res); 256 output("设置合约模式", $res);
257 } 257 }
258 // 设置为双向持仓 258 // 设置为双向持仓
259 - public function setLongShortMode($isLongShort) 259 + public function setLongShortMode($isLongShortMode)
260 { 260 {
261 $param = [ 261 $param = [
262 - 'posMode' => $isLongShort ? 'long_short_mode' : 'net_mode', 262 + 'posMode' => $isLongShortMode ? 'long_short_mode' : 'net_mode',
263 ]; 263 ];
264 $res = $this->api->setPositionMode($param); 264 $res = $this->api->setPositionMode($param);
265 output("设置持仓模式", $res); 265 output("设置持仓模式", $res);