future-private: add place order request
This commit is contained in:
1 parent
d561f69ece
commit
9d70e9ae44
6 files changed
+584
-1
No files matched your search
@@ -7,9 +7,10 @@ use Msr\LaravelBitunixApi\Requests\ChangeLeverageRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\ChangeMarginModeRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\FutureKLineRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\Header;
|
||||
use Msr\LaravelBitunixApi\Requests\PlaceOrderRequestContract;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
class LaravelBitunixApi implements ChangeLeverageRequestContract, ChangeMarginModeRequestContract, FutureKLineRequestContract
|
||||
class LaravelBitunixApi implements ChangeLeverageRequestContract, ChangeMarginModeRequestContract, FutureKLineRequestContract, PlaceOrderRequestContract
|
||||
{
|
||||
private Client $publicFutureClient;
|
||||
|
||||
@@ -76,4 +77,80 @@ class LaravelBitunixApi implements ChangeLeverageRequestContract, ChangeMarginMo
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function placeOrder(
|
||||
string $symbol,
|
||||
string $qty,
|
||||
string $side,
|
||||
string $tradeSide,
|
||||
string $orderType,
|
||||
?string $price = null,
|
||||
?string $positionId = null,
|
||||
?string $effect = null,
|
||||
?string $clientId = null,
|
||||
?bool $reduceOnly = null,
|
||||
?string $tpPrice = null,
|
||||
?string $tpStopType = null,
|
||||
?string $tpOrderType = null,
|
||||
?string $tpOrderPrice = null,
|
||||
?string $slPrice = null,
|
||||
?string $slStopType = null,
|
||||
?string $slOrderType = null,
|
||||
?string $slOrderPrice = null
|
||||
): ResponseInterface {
|
||||
$body = [
|
||||
'symbol' => $symbol,
|
||||
'qty' => $qty,
|
||||
'side' => $side,
|
||||
'tradeSide' => $tradeSide,
|
||||
'orderType' => $orderType,
|
||||
];
|
||||
|
||||
// Add optional parameters if provided
|
||||
if ($price !== null) {
|
||||
$body['price'] = $price;
|
||||
}
|
||||
if ($positionId !== null) {
|
||||
$body['positionId'] = $positionId;
|
||||
}
|
||||
if ($effect !== null) {
|
||||
$body['effect'] = $effect;
|
||||
}
|
||||
if ($clientId !== null) {
|
||||
$body['clientId'] = $clientId;
|
||||
}
|
||||
if ($reduceOnly !== null) {
|
||||
$body['reduceOnly'] = $reduceOnly;
|
||||
}
|
||||
if ($tpPrice !== null) {
|
||||
$body['tpPrice'] = $tpPrice;
|
||||
}
|
||||
if ($tpStopType !== null) {
|
||||
$body['tpStopType'] = $tpStopType;
|
||||
}
|
||||
if ($tpOrderType !== null) {
|
||||
$body['tpOrderType'] = $tpOrderType;
|
||||
}
|
||||
if ($tpOrderPrice !== null) {
|
||||
$body['tpOrderPrice'] = $tpOrderPrice;
|
||||
}
|
||||
if ($slPrice !== null) {
|
||||
$body['slPrice'] = $slPrice;
|
||||
}
|
||||
if ($slStopType !== null) {
|
||||
$body['slStopType'] = $slStopType;
|
||||
}
|
||||
if ($slOrderType !== null) {
|
||||
$body['slOrderType'] = $slOrderType;
|
||||
}
|
||||
if ($slOrderPrice !== null) {
|
||||
$body['slOrderPrice'] = $slOrderPrice;
|
||||
}
|
||||
|
||||
$response = $this->getPrivateFutureClient([], $body)->post('trade/place_order', [
|
||||
'json' => $body,
|
||||
]);
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ use Msr\LaravelBitunixApi\Commands\LaravelBitunixApiCommand;
|
||||
use Msr\LaravelBitunixApi\Requests\ChangeLeverageRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\ChangeMarginModeRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\FutureKLineRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\PlaceOrderRequestContract;
|
||||
use Spatie\LaravelPackageTools\Package;
|
||||
use Spatie\LaravelPackageTools\PackageServiceProvider;
|
||||
|
||||
@@ -33,5 +34,6 @@ class LaravelBitunixApiServiceProvider extends PackageServiceProvider
|
||||
$this->app->bind(FutureKLineRequestContract::class, LaravelBitunixApi::class);
|
||||
$this->app->bind(ChangeLeverageRequestContract::class, LaravelBitunixApi::class);
|
||||
$this->app->bind(ChangeMarginModeRequestContract::class, LaravelBitunixApi::class);
|
||||
$this->app->bind(PlaceOrderRequestContract::class, LaravelBitunixApi::class);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace Msr\LaravelBitunixApi\Requests;
|
||||
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
interface PlaceOrderRequestContract
|
||||
{
|
||||
/**
|
||||
* Place a new order
|
||||
*
|
||||
* @param string $symbol Trading pair (e.g., 'BTCUSDT')
|
||||
* @param string $qty Amount (base coin)
|
||||
* @param string $side Order direction ('BUY' or 'SELL')
|
||||
* @param string $tradeSide Direction ('OPEN' or 'CLOSE')
|
||||
* @param string $orderType Order type ('LIMIT' or 'MARKET')
|
||||
* @param string|null $price Price of the order (required for LIMIT orders)
|
||||
* @param string|null $positionId Position ID (required when tradeSide is 'CLOSE')
|
||||
* @param string|null $effect Order expiration date
|
||||
* @param string|null $clientId Customize order ID
|
||||
* @param bool|null $reduceOnly Whether to just reduce the position
|
||||
* @param string|null $tpPrice Take profit trigger price
|
||||
* @param string|null $tpStopType Take profit trigger type
|
||||
* @param string|null $tpOrderType Take profit trigger place order type
|
||||
* @param string|null $tpOrderPrice Take profit trigger place order price
|
||||
* @param string|null $slPrice Stop loss trigger price
|
||||
* @param string|null $slStopType Stop loss trigger type
|
||||
* @param string|null $slOrderType Stop loss trigger place order type
|
||||
* @param string|null $slOrderPrice Stop loss trigger place order price
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function placeOrder(
|
||||
string $symbol,
|
||||
string $qty,
|
||||
string $side,
|
||||
string $tradeSide,
|
||||
string $orderType,
|
||||
?string $price = null,
|
||||
?string $positionId = null,
|
||||
?string $effect = null,
|
||||
?string $clientId = null,
|
||||
?bool $reduceOnly = null,
|
||||
?string $tpPrice = null,
|
||||
?string $tpStopType = null,
|
||||
?string $tpOrderType = null,
|
||||
?string $tpOrderPrice = null,
|
||||
?string $slPrice = null,
|
||||
?string $slStopType = null,
|
||||
?string $slOrderType = null,
|
||||
?string $slOrderPrice = null
|
||||
): ResponseInterface;
|
||||
}
|
||||
Reference in new issue
Block a user