作者 karlet

feat:币安下单完成

... ... @@ -196,12 +196,12 @@ class CmBroker
public function placeOrder(Order $order)
{
/** @var SymbolInfo $symbolInfo */
$symbolInfo = $this->symbolInfos[$order->symbol];
if ($this->plat == self::PLAT_OKX) {
$orderOri = $order->toOkxOrder($this->symbolInfos, function ($symbol) {
return $this->getSymbolOri($symbol, $this->plat);
});
/** @var SymbolInfo $symbolInfo */
$symbolInfo = $this->symbolInfos[$order->symbol];
$this->msg("下单", $orderOri);
if ($orderOri['sz'] == 0) {
$msg = "当前下单数量为{$order->qty},最小下单数量为{$symbolInfo->minQty},不下单";
... ... @@ -212,6 +212,20 @@ class CmBroker
$this->msg("下单结果", $res);
return $res;
}
if ($this->plat == self::PLAT_BINANCE) {
$orderOri = $order->toBinanceOrder($this->symbolInfos, function ($symbol) {
return $this->getSymbolOri($symbol, $this->plat);
});
$this->msg("下单", $orderOri);
if ($orderOri['quantity'] == 0) {
$msg = "当前下单数量为{$order->qty},最小下单数量为{$symbolInfo->minQty},不下单";
$this->msg($msg, $orderOri);
return ["code" => 2, "msg" => $msg];
}
$res = $this->exBroker->placeOrder($orderOri);
$this->msg("下单结果", $res);
return $res;
}
}
public function msg()
... ...
... ... @@ -60,6 +60,13 @@ class Api
$method = "GET";
return $this->request($method, $url, $params, $this->apiInfo);
}
//下单
public function placeOrder($params)
{
$url = "/fapi/v1/order";
$method = "POST";
return $this->request($method, $url, $params, $this->apiInfo);
}
//------------------------------------
... ...
... ... @@ -125,4 +125,8 @@ class ExBroker
}
return $res['symbols'];
}
public function placeOrder(array $params)
{
return $this->api->placeOrder($params);
}
}
... ...
... ... @@ -73,4 +73,33 @@ class Order
}
return $order;
}
function toBinanceOrder(array $symbolInfos, callable $toSymbolOri)
{
$symbol = call_user_func($toSymbolOri, $this->symbol);
/** @var SymbolInfo $symbolInfo */
$symbolInfo = $symbolInfos[$this->symbol];
$ordType = $this->ordType;
$timeInForce = "GTC";
if ($this->ordType == "IOC" || $this->ordType == "FOK") {
$ordType = "LIMIT";
$timeInForce = $this->ordType;
}
$order = [
'symbol' => $symbol,
'positionSide' => $this->posSide,
'side' => $this->side,
'type' => $ordType,
'timeInForce' => $timeInForce,
'quantity' => round($this->qty, $symbolInfo->qtyPrec),
'price' => round($this->price, $symbolInfo->pricePrec),
];
if ($ordType == "MARKET") {
unset($order['price']);
unset($order['timeInForce']);
}
if ($this->cliOrdId != "") {
$order['newClientOrderId'] = $this->cliOrdId;
}
return $order;
}
}
... ...