Hitbtc3 createReduceOnlyOrder
diff --git a/js/hitbtc3.js b/js/hitbtc3.js
index 714f3b842e3a..06fd3d0d7354 100644
--- a/js/hitbtc3.js
+++ b/js/hitbtc3.js
@@ -25,6 +25,7 @@ module.exports = class hitbtc3 extends Exchange {
                 'cancelAllOrders': true,
                 'cancelOrder': true,
                 'createOrder': true,
+                'createReduceOnlyOrder': true,
                 'editOrder': true,
                 'fetchBalance': true,
                 'fetchClosedOrders': true,
@@ -1321,6 +1322,12 @@ module.exports = class hitbtc3 extends Exchange {
     async createOrder (symbol, type, side, amount, price = undefined, params = {}) {
         await this.loadMarkets ();
         const market = this.market (symbol);
+        const reduceOnly = this.safeValue2 (params, 'reduce_only', 'reduceOnly');
+        if (reduceOnly !== undefined) {
+            if ((market['type'] !== 'swap') && (market['type'] !== 'margin')) {
+                throw new InvalidOrder (this.id + ' createOrder() does not support reduce_only for ' + market['type'] + ' orders, reduce_only orders are supported for swap and margin markets only');
+            }
+        }
         const request = {
             'type': type,
             'side': side,
@@ -1367,6 +1374,13 @@ module.exports = class hitbtc3 extends Exchange {
         return this.parseOrder (response, market);
     }
 
+    async createReduceOnlyOrder (symbol, type, side, amount, price = undefined, params = {}) {
+        const request = {
+            'reduce_only': true,
+        };
+        return await this.createOrder (symbol, type, side, amount, price, this.extend (request, params));
+    }
+
     parseOrderStatus (status) {
         const statuses = {
             'new': 'open',

Added createReduceOnlyOrder to Hitbtc3:
```
hitbtc3.createReduceOnlyOrder (BTC/USDT:USDT, market, sell, 0.0001, 31000)
2022-03-18T06:56:52.301Z iteration 0 passed in 218 ms

{
  info: {
    id: '59038431641',
    client_order_id: 'Yt_6r9I071aBzJykD6fHGmrB-9BS03sa',
    symbol: 'BTCUSDT_PERP',
    side: 'sell',
    status: 'filled',
    type: 'market',
    time_in_force: 'GTC',
    quantity: '0.0001',
    quantity_cumulative: '0.0001',
    post_only: false,
    reduce_only: true,
    created_at: '2022-03-18T06:56:53.267Z',
    updated_at: '2022-03-18T06:56:53.267Z',
    trades: [
      {
        id: '4773720',
        position_id: '2386187',
        quantity: '0.0001',
        price: '40745.29',
        fee: '0.002037264500',
        timestamp: '2022-03-18T06:56:53.267Z',
        taker: true
      }
    ]
  },
  id: 'Yt_6r9I071aBzJykD6fHGmrB-9BS03sa',
  clientOrderId: 'Yt_6r9I071aBzJykD6fHGmrB-9BS03sa',
  timestamp: 1647586613267,
  datetime: '2022-03-18T06:56:53.267Z',
  lastTradeTimestamp: 1647586613267,
  symbol: 'BTC/USDT:USDT',
  price: 40745.29,
  amount: 0.0001,
  type: 'market',
  side: 'sell',
  timeInForce: 'IOC',
  postOnly: false,
  filled: 0.0001,
  remaining: 0,
  cost: 4.074529,
  status: 'closed',
  average: 40745.29,
  trades: [
    {
      info: {
        id: '4773720',
        position_id: '2386187',
        quantity: '0.0001',
        price: '40745.29',
        fee: '0.002037264500',
        timestamp: '2022-03-18T06:56:53.267Z',
        taker: true
      },
      id: '4773720',
      order: 'Yt_6r9I071aBzJykD6fHGmrB-9BS03sa',
      timestamp: 1647586613267,
      datetime: '2022-03-18T06:56:53.267Z',
      symbol: 'BTC/USDT:USDT',
      type: 'market',
      side: 'sell',
      takerOrMaker: 'taker',
      price: 40745.29,
      amount: 0.0001,
      cost: 4.074529,
      fee: { cost: 0.0020372645, currency: 'USDT' },
      fees: [ { currency: 'USDT', cost: '0.002037264500' } ]
    }
  ],
  fee: { currency: 'USDT', cost: 0.0020372645 },
  fees: [ { currency: 'USDT', cost: 0.0020372645 } ]
}
```