Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ascendex cancel order fix #4745

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.knowm.xchange.ascendex.dto.marketdata.AscendexMarketTradesDto;
import org.knowm.xchange.ascendex.dto.marketdata.AscendexOrderbookDto;
import org.knowm.xchange.ascendex.dto.marketdata.AscendexProductDto;
import org.knowm.xchange.ascendex.dto.trade.AscendexCancelOrderRequestPayload;
import org.knowm.xchange.ascendex.dto.trade.AscendexFlags;
import org.knowm.xchange.ascendex.dto.trade.AscendexOpenOrdersResponse;
import org.knowm.xchange.ascendex.dto.trade.AscendexPlaceOrderRequestPayload;
Expand All @@ -33,6 +34,7 @@
import org.knowm.xchange.dto.trade.UserTrade;
import org.knowm.xchange.dto.trade.UserTrades;
import org.knowm.xchange.instrument.Instrument;
import org.knowm.xchange.service.trade.params.DefaultCancelOrderByInstrumentAndIdParams;
import org.knowm.xchange.utils.jackson.CurrencyPairDeserializer;

public class AscendexAdapters {
Expand Down Expand Up @@ -111,6 +113,16 @@ public static AscendexPlaceOrderRequestPayload adaptLimitOrderToAscendexPlaceOrd
null);
}

public static AscendexCancelOrderRequestPayload adaptCancelOrderRequestToAscendexCancelOrderRequestPayload(
DefaultCancelOrderByInstrumentAndIdParams params
) {
return new AscendexCancelOrderRequestPayload(
params.getOrderId(),
params.getInstrument().toString(),
Date.from(Instant.now()).toInstant().toEpochMilli()
);
}

public static UserTrades adaptUserTrades(
List<AscendexOpenOrdersResponse> ascendexOrderHistoryResponse) {
List<UserTrade> userTrades = new ArrayList<>(ascendexOrderHistoryResponse.size());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import javax.ws.rs.core.MediaType;
import org.knowm.xchange.ascendex.dto.AscendexResponse;
import org.knowm.xchange.ascendex.dto.account.AscendexCashAccountBalanceDto;
import org.knowm.xchange.ascendex.dto.trade.AscendexCancelOrderRequestPayload;
import org.knowm.xchange.ascendex.dto.trade.AscendexOpenOrdersResponse;
import org.knowm.xchange.ascendex.dto.trade.AscendexOrderResponse;
import org.knowm.xchange.ascendex.dto.trade.AscendexPlaceOrderRequestPayload;
Expand Down Expand Up @@ -49,9 +50,7 @@ AscendexResponse<AscendexOrderResponse> cancelOrder(
@HeaderParam("x-auth-timestamp") Long nonce,
@HeaderParam("x-auth-signature") ParamsDigest signature,
@PathParam("account-category") String accountCategory,
@QueryParam("orderId") String orderId,
@QueryParam("symbol") String symbol,
@QueryParam("time") Long time)
AscendexCancelOrderRequestPayload payload)
throws IOException;

@DELETE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@

import java.io.IOException;
import java.util.Collection;
import java.util.Objects;

import org.knowm.xchange.Exchange;
import org.knowm.xchange.ascendex.AscendexAdapters;
import org.knowm.xchange.ascendex.dto.trade.AscendexOrderResponse;
import org.knowm.xchange.dto.Order;
import org.knowm.xchange.dto.trade.LimitOrder;
import org.knowm.xchange.dto.trade.OpenOrders;
import org.knowm.xchange.dto.trade.UserTrades;
import org.knowm.xchange.service.trade.TradeService;
import org.knowm.xchange.service.trade.params.CancelOrderByCurrencyPair;
import org.knowm.xchange.service.trade.params.CancelOrderParams;
import org.knowm.xchange.service.trade.params.TradeHistoryParamCurrencyPair;
import org.knowm.xchange.service.trade.params.TradeHistoryParams;
import org.knowm.xchange.service.trade.params.TradeHistoryParamsAll;
import org.knowm.xchange.service.trade.params.*;
import org.knowm.xchange.service.trade.params.orders.*;

public class AscendexTradeService extends AscendexTradeServiceRaw implements TradeService {
Expand All @@ -32,6 +31,20 @@ public String placeLimitOrder(LimitOrder limitOrder) throws IOException {

@Override
public boolean cancelOrder(CancelOrderParams orderParams) throws IOException {
if (orderParams instanceof DefaultCancelOrderByInstrumentAndIdParams) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should type check by interface not their default implementation

please do orderParams instance of CancelOrderByIdParams && orderParams instanceof CancelOrderByInstrument

if both are needed

if only one is needed then use ||

AscendexOrderResponse response = cancelAscendexOrder(
AscendexAdapters.adaptCancelOrderRequestToAscendexCancelOrderRequestPayload(
(DefaultCancelOrderByInstrumentAndIdParams) orderParams
)
);
return Objects.equals(response.getStatus(), "Ack");
} else {
throw new IOException(
"Params must be instanceOf DefaultCancelOrderByInstrumentAndIdParams in order to cancel an order on Ascendex.");
}
}

public boolean cancelAllOrdersByCurrencyPair(CancelOrderParams orderParams) throws IOException {
if (orderParams instanceof CancelOrderByCurrencyPair) {
cancelAllAscendexOrdersBySymbol(
((CancelOrderByCurrencyPair) orderParams).getCurrencyPair().toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,7 @@ public AscendexOrderResponse cancelAscendexOrder(AscendexCancelOrderRequestPaylo
exchange.getNonceFactory().createValue(),
signatureCreator,
ACCOUNT_CASH_CATEGORY,
payload.getOrderId(),
payload.getSymbol(),
payload.getTime()));
payload));
}

public AscendexOrderResponse cancelAllAscendexOrdersBySymbol(String symbol)
Expand Down