diff --git a/src/ExchangeSharp/API/Exchanges/BitMEX/ExchangeBitMEXAPI.cs b/src/ExchangeSharp/API/Exchanges/BitMEX/ExchangeBitMEXAPI.cs index 8fcf2d6e..a47ec232 100644 --- a/src/ExchangeSharp/API/Exchanges/BitMEX/ExchangeBitMEXAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/BitMEX/ExchangeBitMEXAPI.cs @@ -596,7 +596,7 @@ public async Task CancelAllOrdersAsync(string marketSymbol = null) JToken token = await MakeJsonRequestAsync(query, BaseUrl, payload, "DELETE"); } - public async Task Deadman(int timeoutMS) + public async Task DeadmanAsync(int timeoutMS) { Dictionary payload = await GetNoncePayloadAsync(); payload["timeout"] = timeoutMS; @@ -611,7 +611,7 @@ protected override async Task OnPlaceOrderAsync(ExchangeOrd return ParseOrder(token); } - protected override async Task OnPlaceOrdersAsync(params ExchangeOrderRequest[] orders) + private async Task PlaceOrdersAsync(string requestMethod, params ExchangeOrderRequest[] orders) { List results = new List(); Dictionary payload = await GetNoncePayloadAsync(); @@ -623,7 +623,7 @@ protected override async Task OnPlaceOrdersAsync(params E orderRequests.Add(subPayload); } payload["orders"] = orderRequests; - JToken token = await MakeJsonRequestAsync("/order/bulk", BaseUrl, payload, "POST"); + JToken token = await MakeJsonRequestAsync("/order/bulk", BaseUrl, payload, requestMethod); foreach (JToken orderResultToken in token) { results.Add(ParseOrder(orderResultToken)); @@ -631,6 +631,16 @@ protected override async Task OnPlaceOrdersAsync(params E return results.ToArray(); } + protected override async Task OnPlaceOrdersAsync(params ExchangeOrderRequest[] orders) + { + return await PlaceOrdersAsync("POST", orders); + } + + public async Task AmendOrdersAsync(params ExchangeOrderRequest[] orders) + { + return await PlaceOrdersAsync("PUT", orders); + } + private void AddOrderToPayload(ExchangeOrderRequest order, Dictionary payload) { payload["symbol"] = order.MarketSymbol; @@ -638,8 +648,14 @@ private void AddOrderToPayload(ExchangeOrderRequest order, Dictionary(), OrderId = token["orderID"].ToStringInvariant(), + ClientOrderId = token["clOrdID"].ToStringInvariant(), MarketSymbol = token["symbol"].ToStringInvariant() }; diff --git a/src/ExchangeSharp/Model/ExchangeOrderRequest.cs b/src/ExchangeSharp/Model/ExchangeOrderRequest.cs index fcd953f1..d930dbff 100644 --- a/src/ExchangeSharp/Model/ExchangeOrderRequest.cs +++ b/src/ExchangeSharp/Model/ExchangeOrderRequest.cs @@ -54,6 +54,16 @@ public class ExchangeOrderRequest /// public bool IsMargin { get; set; } + /// Order id + public string OrderId { get; set; } + + /// + /// Client Order id + /// Order IDs put here will be returned in the Order Result returned by the exchange + /// Not all exchanges support this + /// + public string ClientOrderId { get; set; } + /// /// Whether the amount should be rounded - set to false if you know the exact amount, otherwise leave /// as true so that the exchange does not reject the order due to too many decimal places. diff --git a/src/ExchangeSharp/Model/ExchangeOrderResult.cs b/src/ExchangeSharp/Model/ExchangeOrderResult.cs index 8a88fd3a..cca52ee7 100644 --- a/src/ExchangeSharp/Model/ExchangeOrderResult.cs +++ b/src/ExchangeSharp/Model/ExchangeOrderResult.cs @@ -20,6 +20,13 @@ public sealed class ExchangeOrderResult /// Order id public string OrderId { get; set; } + /// + /// Client Order id + /// Order IDs put here in the Request will be returned by the exchange + /// Not all exchanges support this + /// + public string ClientOrderId { get; set; } + /// Result of the order public ExchangeAPIOrderResult Result { get; set; }