diff --git a/xchange-ascendex/api-specification.txt b/xchange-ascendex/api-specification.txt
new file mode 100644
index 00000000000..838c43dcd0a
--- /dev/null
+++ b/xchange-ascendex/api-specification.txt
@@ -0,0 +1,9 @@
+AscendEx api spec
+
+url: https://ascendex.com/
+url(backup): https://asdx.me/zh-cn
+doc: https://ascendex.github.io/ascendex-pro-api/#ascendex-pro-api-documentation
+
+You need an extra parameters:
+exSpec.setExchangeSpecificParametersItem("account-group","account-group");
+
diff --git a/xchange-ascendex/pom.xml b/xchange-ascendex/pom.xml
index 47cfa77e466..04e08baca33 100644
--- a/xchange-ascendex/pom.xml
+++ b/xchange-ascendex/pom.xml
@@ -27,7 +27,10 @@
xchange-core
${project.version}
-
+
+ org.projectlombok
+ lombok
+
org.mockito
mockito-core
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/AscendexAdapters.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/AscendexAdapters.java
index bfbdd3a65b2..66fa318bf3f 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/AscendexAdapters.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/AscendexAdapters.java
@@ -8,12 +8,14 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import org.knowm.xchange.ascendex.dto.account.AscendexCashAccountBalanceDto;
+import org.knowm.xchange.ascendex.dto.balance.AscendexCashAccountBalanceDto;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import org.knowm.xchange.ascendex.dto.enums.AscendexSide;
import org.knowm.xchange.ascendex.dto.marketdata.AscendexAssetDto;
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.AscendexFlags;
+import org.knowm.xchange.ascendex.dto.enums.AscendexFlags;
import org.knowm.xchange.ascendex.dto.trade.AscendexOpenOrdersResponse;
import org.knowm.xchange.ascendex.dto.trade.AscendexPlaceOrderRequestPayload;
import org.knowm.xchange.currency.Currency;
@@ -98,10 +100,10 @@ public static AscendexPlaceOrderRequestPayload adaptLimitOrderToAscendexPlaceOrd
limitOrder.getInstrument().toString(),
Date.from(Instant.now()).toInstant().toEpochMilli(),
limitOrder.getOriginalAmount().toString(),
- AscendexPlaceOrderRequestPayload.AscendexOrderType.limit,
+ AscendexOrderType.limit,
limitOrder.getType().equals(Order.OrderType.ASK)
- ? AscendexPlaceOrderRequestPayload.AscendexSide.sell
- : AscendexPlaceOrderRequestPayload.AscendexSide.buy,
+ ? AscendexSide.sell
+ : AscendexSide.buy,
null,
limitOrder.getLimitPrice().toString(),
null,
@@ -207,8 +209,8 @@ public static ExchangeMetaData adaptExchangeMetaData(
}
public static Order.OrderType adaptAscendexSideToOrderType(
- AscendexPlaceOrderRequestPayload.AscendexSide ascendexSide) {
- if (AscendexPlaceOrderRequestPayload.AscendexSide.buy.equals(ascendexSide)) {
+ AscendexSide ascendexSide) {
+ if (AscendexSide.buy.equals(ascendexSide)) {
return Order.OrderType.BID;
} else {
return Order.OrderType.ASK;
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendex.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendex.java
index 3eab130d1e0..3c6a5db5b5a 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendex.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendex.java
@@ -2,47 +2,56 @@
import java.io.IOException;
import java.util.List;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import org.knowm.xchange.ascendex.dto.AscendexResponse;
-import org.knowm.xchange.ascendex.dto.marketdata.AscendexAssetDto;
-import org.knowm.xchange.ascendex.dto.marketdata.AscendexBarHistDto;
-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.enums.AccountCategory;
+import org.knowm.xchange.ascendex.dto.marketdata.*;
-@Path("api/pro/v1")
+@Path("api/pro")
@Produces(MediaType.APPLICATION_JSON)
public interface IAscendex {
-
+ /**=========================Market Data (Public)======================================**/
@GET
- @Path("/assets")
+ @Path("/v1/assets")
+ @Deprecated
AscendexResponse> getAllAssets() throws IOException;
@GET
- @Path("/products")
+ @Path("/v2/assets")
+ AscendexResponse> getAllAssetsV2() throws IOException;
+
+ @GET
+ @Path("/v1/products")
AscendexResponse> getAllProducts() throws IOException;
@GET
- @Path("/depth")
- AscendexResponse getOrderbookDepth(@QueryParam("symbol") String symbol)
- throws IOException;
+ @Path("/v1/{accountCategory}/products")
+ AscendexResponse> getAllProducts(@PathParam("accountCategory") AccountCategory accountCategory) throws IOException;
@GET
- @Path("/trades")
- AscendexResponse getTrades(@QueryParam("symbol") String symbol)
- throws IOException;
+ @Path("/v1/spot/ticker")
+ AscendexResponse getTicker( @QueryParam("symbol") String symbol) throws IOException;
@GET
- @Path("/barhist")
+ @Path("/v1/barhist")
AscendexResponse> getHistoricalBarData(
- @QueryParam("symbol") String symbol,
- @QueryParam("interval") String internal,
- @QueryParam("to") Long to,
- @QueryParam("from") Long from,
- @QueryParam("n") Integer noOfBars)
+ @QueryParam("symbol") String symbol,
+ @QueryParam("interval") String internal,
+ @QueryParam("to") Long to,
+ @QueryParam("from") Long from,
+ @QueryParam("n") Integer noOfBars)
+ throws IOException;
+
+ @GET
+ @Path("/v1/depth")
+ AscendexResponse getOrderbookDepth(@QueryParam("symbol") String symbol)
throws IOException;
+
+ @GET
+ @Path("/v1/trades")
+ AscendexResponse getTrades(@QueryParam("symbol") String symbol,@QueryParam("n") Integer n)
+ throws IOException;
+
+
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendexAuthenticated.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendexAuthenticated.java
index 50c82851c19..092cdfce2cd 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendexAuthenticated.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/IAscendexAuthenticated.java
@@ -2,97 +2,237 @@
import java.io.IOException;
import java.util.List;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
+import javax.ws.rs.*;
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.AscendexOpenOrdersResponse;
-import org.knowm.xchange.ascendex.dto.trade.AscendexOrderResponse;
-import org.knowm.xchange.ascendex.dto.trade.AscendexPlaceOrderRequestPayload;
+import org.knowm.xchange.ascendex.dto.account.*;
+import org.knowm.xchange.ascendex.dto.balance.*;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
+import org.knowm.xchange.ascendex.dto.enums.AscendexTransactionType;
+import org.knowm.xchange.ascendex.dto.trade.*;
+import org.knowm.xchange.ascendex.dto.wallet.AscendDepositAddressesDto;
+import org.knowm.xchange.ascendex.dto.wallet.AscendexWalletTransactionHistoryDto;
import si.mazi.rescu.ParamsDigest;
-@Path("api/pro/v1")
+@Path("")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface IAscendexAuthenticated extends IAscendex {
+ /**=========================Account======================================**/
+ @GET
+ @Path("api/pro/v1/info")
+ AscendexResponse getAscendexAccountInfo(
+
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)
+ throws IOException;
+
+ @GET
+ @Path("{account-group}/api/pro/v1/spot/fee/info")
+ AscendexResponse getAscendexVIPFeeSchedule(
+ @PathParam("account-group") String accountGroup,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)
+ throws IOException;
+
+ @GET
+ @Path("{account-group}/api/pro/v1/spot/fee")
+ AscendexResponse getAscendexSymbolFeeSchedule(
+ @PathParam("account-group") String accgruop,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)
+ throws IOException;
+
+
+ @GET
+ @Path("/api/pro/v2/risk-limit-info")
+ AscendexResponse getAscendexRiskLimitInfo()
+ throws IOException;
+
+
+ @GET
+ @Path("/api/pro/v1/exchange-info")
+ AscendexResponse getAscendexExchangeLatencyInfo(
+ @QueryParam("requestTime") Long requestTime
+ )
+ throws IOException;
+
+ /**=========================Balance======================================**/
@GET
- @Path("/cash/balance")
- AscendexResponse> getCashAccountBalance(
+ @Path("{account-group}/api/pro/v1/cash/balance")
+ AscendexResponse> getAscendexCashAccountBalance(
+ @QueryParam("asset") String asset,
+ @QueryParam("showAll") Boolean showAll,
+ @PathParam("account-group") String accountGroup,
@HeaderParam("x-auth-key") String apiKey,
@HeaderParam("x-auth-timestamp") Long nonce,
@HeaderParam("x-auth-signature") ParamsDigest signature)
throws IOException;
+ @GET
+ @Path("{account-group}/api/pro/v1/margin/balance")
+ AscendexResponse> getAscendexMarginAccountBalance(
+ @QueryParam("asset") String asset,
+ @QueryParam("showAll") Boolean showAll,
+ @PathParam("account-group") String accountGroup,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)
+ throws IOException;
+
+ @GET
+ @Path("{account-group}/api/pro/v1/margin/risk")
+ AscendexResponse getAscendexMarginRisk(
+ @PathParam("account-group") String accountGroup,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)
+ throws IOException;
+
+ @POST
+ @Path("{account-group}/api/pro/v1/transfer")
+ AscendexResponse getAscendexBalanceTransfer(
+ AscendexBalanceTransferRequestPayload payload,
+ @PathParam("account-group") String accountGroup,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)
+ throws IOException;
+
+// TODO Balance Transfer for Subaccount
+// TODO Balance Transfer history for Subaccount
+
+
+ /**=========================Balance Snapshot And Update Detail======================================**/
+@GET
+@Path("api/pro/data/v1/{type}/balance/snapshot")
+AscendexBalanceSnapshotDto getAscendexBalanceSnapshot(
+ @QueryParam("date")String date,
+ @PathParam("type") AccountCategory AccountCategory,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)throws IOException;
+
+
+ @GET
+ @Path("api/pro/data/v1/{type}/balance/history")
+ AscendexOrderAndBalanceDetailDto getAscendexOrderAndBalanceDetail(
+ @QueryParam("date")String date,
+ @PathParam("type") AccountCategory AccountCategory,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)throws IOException;
+
+ /**=========================Wallet======================================**/
+ @GET
+ @Path("api/pro/v1/wallet/deposit/address")
+ AscendexResponse getAscendexDepositAddresses(
+ @QueryParam("asset")String asset,
+ @QueryParam("blockchain")String blockchain,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)throws IOException;
+
+ @GET
+ @Path("api/pro/v1/wallet/transactions")
+ AscendexResponse getAscendexWalletTransactionHistory(
+ @QueryParam("asset") String asset,
+ @QueryParam("txType") AscendexTransactionType txType,
+ @QueryParam("page") Integer page,
+ @QueryParam("pageSize") Integer pageSize,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature)throws IOException;
+
+
+ /**=========================Order======================================**/
@POST
- @Path("/{account-category}/order")
+ @Path("{account-group}/api/pro/v1/{account-category}/order")
AscendexResponse placeOrder(
+ @PathParam("account-group") String accountGroup,
@HeaderParam("x-auth-key") String apiKey,
@HeaderParam("x-auth-timestamp") Long nonce,
@HeaderParam("x-auth-signature") ParamsDigest signature,
- @PathParam("account-category") String accountCategory,
+ @PathParam("account-category") AccountCategory accountCategory,
AscendexPlaceOrderRequestPayload payload)
throws IOException;
@DELETE
- @Path("/{account-category}/order")
+ @Path("{account-group}/api/pro/v1/{account-category}/order")
AscendexResponse cancelOrder(
+ @PathParam("account-group") String accountGroup,
@HeaderParam("x-auth-key") String apiKey,
@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)
+ @PathParam("account-category") AccountCategory accountCategory,
+ AscendexCancelOrderRequestPayload payload)
throws IOException;
@DELETE
- @Path("/{account-category}/order/all")
+ @Path("{account-group}/api/pro/v1/{account-category}/order/all")
AscendexResponse cancelAllOrders(
+ @PathParam("account-group") String accountGroup,
@HeaderParam("x-auth-key") String apiKey,
@HeaderParam("x-auth-timestamp") Long nonce,
@HeaderParam("x-auth-signature") ParamsDigest signature,
- @PathParam("account-category") String accountCategory,
+ @PathParam("account-category") AccountCategory accountCategory,
@QueryParam("symbol") String symbol)
throws IOException;
+ // TODO Place Batch Orders Cancel Batch Orders
+
+ @GET
+ @Path("{account-group}/api/pro/v1/{account-category}/order/status")
+ AscendexResponse getOrderById(
+ @PathParam("account-group") String accountGroup,
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature,
+ @PathParam("account-category") AccountCategory accountCategory,
+ @QueryParam("orderId") String orderId)
+ throws IOException;
+
@GET
- @Path("/{account-category}/order/open")
+ @Path("{account-group}/api/pro/v1/{account-category}/order/open")
AscendexResponse> getOpenOrders(
+ @PathParam("account-group") String accountGroup,
@HeaderParam("x-auth-key") String apiKey,
@HeaderParam("x-auth-timestamp") Long nonce,
@HeaderParam("x-auth-signature") ParamsDigest signature,
- @PathParam("account-category") String accountCategory,
+ @PathParam("account-category") AccountCategory accountCategory,
@QueryParam("symbol") String symbol)
throws IOException;
- @GET
- @Path("/{account-category}/order/status")
- AscendexResponse getOrderById(
- @HeaderParam("x-auth-key") String apiKey,
- @HeaderParam("x-auth-timestamp") Long nonce,
- @HeaderParam("x-auth-signature") ParamsDigest signature,
- @PathParam("account-category") String accountCategory,
- @QueryParam("orderId") String orderId)
- throws IOException;
+
@GET
- @Path("/{account-category}/order/hist/current")
+ @Path("{account-group}/api/pro/v1/{account-category}/order/hist/current")
AscendexResponse> getOrdersHistory(
+ @PathParam("account-group") String accountGroup,
@HeaderParam("x-auth-key") String apiKey,
@HeaderParam("x-auth-timestamp") Long nonce,
@HeaderParam("x-auth-signature") ParamsDigest signature,
- @PathParam("account-category") String accountCategory,
+ @PathParam("account-category") AccountCategory accountCategory,
@QueryParam("n") int numberOfRecords,
@QueryParam("symbol") String symbol,
@QueryParam("executedOnly") boolean executedOnly)
throws IOException;
+
+ @GET
+ @Path("api/pro/data/v2/order/hist")
+ AscendexResponse> getOrdersHistoryV2(
+ @HeaderParam("x-auth-key") String apiKey,
+ @HeaderParam("x-auth-timestamp") Long nonce,
+ @HeaderParam("x-auth-signature") ParamsDigest signature,
+ @QueryParam("account") AccountCategory accountCategory,
+ @QueryParam("symbol") String symbol,
+ @QueryParam("startTime") Long startTime,
+ @QueryParam("endTime") Long endTime,
+ @QueryParam("seqNum") Long seqNum,
+ @QueryParam("limit") Integer limit)
+ throws IOException;
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexAccountInfoDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexAccountInfoDto.java
new file mode 100644
index 00000000000..3fc0c836e1c
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexAccountInfoDto.java
@@ -0,0 +1,34 @@
+package org.knowm.xchange.ascendex.dto.account;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/14 21:15
+ * @author:wodepig
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexAccountInfoDto {
+ private Integer accountGroup;
+ private String email;
+ /**
+ * If -1, the api key will not expire
+ */
+ private Long expireTime;
+ private List allowedIps;
+ private List cashAccount;
+ private List marginAccount;
+ private String userUID;
+ private Boolean tradePermission;
+ private Boolean transferPermission;
+ private Boolean viewPermission;
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexCashAccountBalanceDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexCashAccountBalanceDto.java
deleted file mode 100644
index a4a708d63ec..00000000000
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexCashAccountBalanceDto.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.knowm.xchange.ascendex.dto.account;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigDecimal;
-
-public class AscendexCashAccountBalanceDto {
-
- private final String asset;
-
- private final BigDecimal totalBalance;
-
- private final BigDecimal availableBalance;
-
- public AscendexCashAccountBalanceDto(
- @JsonProperty("asset") String asset,
- @JsonProperty("totalBalance") BigDecimal totalBalance,
- @JsonProperty("availableBalance") BigDecimal availableBalance) {
- this.asset = asset;
- this.totalBalance = totalBalance;
- this.availableBalance = availableBalance;
- }
-
- public String getAsset() {
- return asset;
- }
-
- public BigDecimal getTotalBalance() {
- return totalBalance;
- }
-
- public BigDecimal getAvailableBalance() {
- return availableBalance;
- }
-
- @Override
- public String toString() {
- return "AscendexCashAccountBalanceDto{"
- + "asset='"
- + asset
- + '\''
- + ", totalBalance="
- + totalBalance
- + ", availableBalance="
- + availableBalance
- + '}';
- }
-}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexExchangeLatencyInfoDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexExchangeLatencyInfoDto.java
new file mode 100644
index 00000000000..18ebe4741a3
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexExchangeLatencyInfoDto.java
@@ -0,0 +1,22 @@
+package org.knowm.xchange.ascendex.dto.account;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.checker.units.qual.A;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 12:54
+ * @author:wodepig
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexExchangeLatencyInfoDto {
+ private Long requestTimeEcho;
+ private Long requestReceiveAt;
+ private Integer latency;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexRiskLimitInfoDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexRiskLimitInfoDto.java
new file mode 100644
index 00000000000..fa3f43d3c57
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexRiskLimitInfoDto.java
@@ -0,0 +1,122 @@
+package org.knowm.xchange.ascendex.dto.account;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 12:45
+ * @author:wodepig
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AscendexRiskLimitInfoDto {
+ private String ip;
+ private WebSocket webSocket;
+
+ @Data
+ public static class Level2ReqThreshold {
+
+ private Integer place_order;
+ private Integer cancel_order;
+ private Integer cancel_all;
+ private Integer batch_place_order;
+ private Integer batch_cancel_order;
+ private Integer depth_snapshot;
+ private Integer depth_snapshot_top100;
+ private Integer market_trades;
+ private Integer balance;
+ private Integer open_order;
+ private Integer margin_risk;
+ private Integer futures_account_snapshot;
+ private Integer futures_open_orders;
+
+ }
+
+ @Data
+ public static class MessageThreshold {
+
+ private Level1OpThreshold level1OpThreshold;
+ private Level2OpThreshold level2OpThreshold;
+ private Level1ReqThreshold level1ReqThreshold;
+ private Level2ReqThreshold level2ReqThreshold;
+
+ }
+
+ @Data
+ public static class WebSocket {
+
+ private Status status;
+ private Limits limits;
+ private MessageThreshold messageThreshold;
+
+ }
+
+
+ @Data
+ public static class Level1ReqThreshold {
+
+ private Integer place_order;
+ private Integer cancel_order;
+ private Integer cancel_all;
+ private Integer batch_place_order;
+ private Integer batch_cancel_order;
+ private Integer depth_snapshot;
+ private Integer depth_snapshot_top100;
+ private Integer market_trades;
+ private Integer balance;
+ private Integer open_order;
+ private Integer margin_risk;
+ private Integer futures_account_snapshot;
+ private Integer futures_open_orders;
+
+ }
+
+
+ @Data
+ public static class Level2OpThreshold {
+
+ private Integer auth;
+ private Integer ping;
+ private Integer pong;
+ private Integer sub;
+ private Integer unsub;
+ private Integer req;
+
+ }
+
+
+ @Data
+ public static class Level1OpThreshold {
+
+ private Integer auth;
+ private Integer ping;
+ private Integer pong;
+ private Integer sub;
+ private Integer unsub;
+ private Integer req;
+
+ }
+
+ @Data
+ public static class Limits {
+
+ private Integer maxWebSocketSessionsPerIpAccountGroup;
+ private Integer maxWebSocketSessionsPerIpTotal;
+
+ }
+
+ @Data
+ public static class Status {
+
+ private Boolean isBanned;
+ private Integer bannedUntil;
+ private Integer violationCode;
+ private String reason;
+
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexSymbolFeeDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexSymbolFeeDto.java
new file mode 100644
index 00000000000..2ed4e74edd9
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexSymbolFeeDto.java
@@ -0,0 +1,41 @@
+package org.knowm.xchange.ascendex.dto.account;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 11:10
+ * @author:wodepig
+ */
+@Data
+public class AscendexSymbolFeeDto {
+ private String domain;
+ private String userUID;
+ private Integer vipLevel;
+ @JsonProperty("fees")
+ private List productFee;
+
+ @Data
+ public static class ProductFee{
+
+ private Fee fee;
+ private String symbol;
+
+ }
+
+ @Data
+ public static class Fee{
+
+ private BigDecimal maker;
+ private BigDecimal taker;
+
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexVIPFeeScheduleDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexVIPFeeScheduleDto.java
new file mode 100644
index 00000000000..b1bc075ab0c
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/account/AscendexVIPFeeScheduleDto.java
@@ -0,0 +1,44 @@
+package org.knowm.xchange.ascendex.dto.account;
+
+
+import lombok.Data;
+
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 11:00
+ * @author:wodepig
+ */
+@Data
+public class AscendexVIPFeeScheduleDto {
+ private String domain;
+ private String userUID;
+ private Integer vipLevel;
+ private GenericFee genericFee;
+
+ @Data
+ public static class GenericFee{
+
+ private LargeCap largeCap;
+ private SmallCap smallCap;
+
+ }
+
+ @Data
+ public static class SmallCap{
+
+ private String maker;
+ private String taker;
+
+ }
+
+ @Data
+ public static class LargeCap{
+
+ private String maker;
+ private String taker;
+
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexBalanceSnapshotDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexBalanceSnapshotDto.java
new file mode 100644
index 00000000000..81b2dc8d441
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexBalanceSnapshotDto.java
@@ -0,0 +1,44 @@
+package org.knowm.xchange.ascendex.dto.balance;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 21:13
+ * @author:wodepig
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexBalanceSnapshotDto {
+
+
+ private Meta meta;
+
+ private List balance;
+
+ @Data
+ public static class Meta {
+
+ private String ac;
+ private String accountId;
+ private Long sn;
+ private Long balanceTime;
+
+ }
+
+ @Data
+ public static class Balance {
+
+ private String asset;
+ private BigDecimal totalBalance;
+
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexBalanceTransferRequestPayload.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexBalanceTransferRequestPayload.java
new file mode 100644
index 00000000000..d6020d19f45
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexBalanceTransferRequestPayload.java
@@ -0,0 +1,26 @@
+package org.knowm.xchange.ascendex.dto.balance;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 20:20
+ * @author:wodepig
+ */
+@Data
+@AllArgsConstructor
+public class AscendexBalanceTransferRequestPayload {
+
+ String amount;
+ String asset;
+ AccountCategory fromAccount;
+ AccountCategory toAccount;
+
+ public void setAsset(String asset) {
+ this.asset =asset==null?null: asset.toUpperCase();
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexCashAccountBalanceDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexCashAccountBalanceDto.java
new file mode 100644
index 00000000000..aea0cc00dbb
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexCashAccountBalanceDto.java
@@ -0,0 +1,18 @@
+package org.knowm.xchange.ascendex.dto.balance;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexCashAccountBalanceDto {
+
+ private String asset;
+
+ private BigDecimal totalBalance;
+
+ private BigDecimal availableBalance;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexMarginAccountBalanceDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexMarginAccountBalanceDto.java
new file mode 100644
index 00000000000..97bb8dab4e9
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexMarginAccountBalanceDto.java
@@ -0,0 +1,22 @@
+package org.knowm.xchange.ascendex.dto.balance;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexMarginAccountBalanceDto {
+
+ private String asset;
+
+ private BigDecimal totalBalance;
+
+ private BigDecimal availableBalance;
+ private BigDecimal borrowed;
+ private BigDecimal interest;
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexMarginRiskDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexMarginRiskDto.java
new file mode 100644
index 00000000000..1609e8fb823
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexMarginRiskDto.java
@@ -0,0 +1,30 @@
+package org.knowm.xchange.ascendex.dto.balance;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.account
+ * Description:
+ *
+ * @date:2022/7/16 19:57
+ * @author:wodepig
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexMarginRiskDto {
+ private Integer accountMaxLeverage;
+ private BigDecimal availableBalanceInUSDT;
+ private BigDecimal totalBalanceInUSDT;
+ private BigDecimal totalBorrowedInUSDT;
+ private BigDecimal totalInterestInUSDT;
+ private BigDecimal netBalanceInUSDT;
+ private BigDecimal pointsBalance;
+ private Integer currentLeverage;
+ private BigDecimal cushion;
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexOrderAndBalanceDetailDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexOrderAndBalanceDetailDto.java
new file mode 100644
index 00000000000..5416376fa17
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/balance/AscendexOrderAndBalanceDetailDto.java
@@ -0,0 +1,64 @@
+package org.knowm.xchange.ascendex.dto.balance;
+
+import lombok.Data;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import org.knowm.xchange.ascendex.dto.trade.AscendexPlaceOrderRequestPayload;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.balance
+ * Description:
+ *
+ * @date:2022/7/18 11:02
+ * @author:wodepig
+ */
+@Data
+public class AscendexOrderAndBalanceDetailDto {
+ private Meta meta;
+ private List order;
+ private List balance;
+
+ @Data
+ public static class Meta {
+
+ private String ac;
+ private String accountId;
+
+ }
+
+
+
+ @Data
+ public static class Order {
+
+ private List data;
+ private String liquidityInd;
+ private String orderId;
+ private AscendexOrderType orderType;
+ private String side;
+ private Long sn;
+ private Long transactTime;
+
+ }
+
+ @Data
+ public static class DataDetail {
+ private String asset;
+ private BigDecimal curBalance;
+ private String dataType;
+ private BigDecimal deltaQty;
+
+ }
+
+ @Data
+ public static class Balance {
+
+ private List data;
+ private String eventType;
+ private Long sn;
+ private Long transactTime;
+
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AccountCategory.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AccountCategory.java
new file mode 100644
index 00000000000..8592bd446c7
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AccountCategory.java
@@ -0,0 +1,17 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+/**
+ * Package:org.knowm.xchange.ascendex
+ * Description:
+ *
+ * @date:2022/7/14 18:00
+ * @author:wodepig
+ */
+public enum AccountCategory {
+ cash,
+ Cash,
+ margin,
+ Margin,
+ futures,
+ Futures;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexAssetStatus.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexAssetStatus.java
new file mode 100644
index 00000000000..9618523883e
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexAssetStatus.java
@@ -0,0 +1,10 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+public enum AscendexAssetStatus {
+ Normal,
+ NoDeposit,
+ NoTrading,
+ NoWithdraw,
+ InternalTrading,
+ NoTransaction
+ }
\ No newline at end of file
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexFlags.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexFlags.java
similarity index 70%
rename from xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexFlags.java
rename to xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexFlags.java
index 61197e9d123..13552e1c239 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexFlags.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexFlags.java
@@ -1,4 +1,4 @@
-package org.knowm.xchange.ascendex.dto.trade;
+package org.knowm.xchange.ascendex.dto.enums;
import org.knowm.xchange.dto.Order;
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexOrderType.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexOrderType.java
new file mode 100644
index 00000000000..806a6a380df
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexOrderType.java
@@ -0,0 +1,10 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+public enum AscendexOrderType {
+ market,
+ Market,
+ limit,
+ Limit,
+ stop_market,
+ stop_limit;
+ }
\ No newline at end of file
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexProductCommissionType.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexProductCommissionType.java
new file mode 100644
index 00000000000..f38e8161460
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexProductCommissionType.java
@@ -0,0 +1,7 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+public enum AscendexProductCommissionType {
+ Base,
+ Quote,
+ Received
+ }
\ No newline at end of file
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexRespInst.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexRespInst.java
new file mode 100644
index 00000000000..be03c7626c9
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexRespInst.java
@@ -0,0 +1,16 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.enums
+ * Description:
+ * https://ascendex.github.io/ascendex-pro-api/#place-order
+ * @date:2022/7/20 9:42
+ * @author:wodepig
+ */
+public enum AscendexRespInst {
+
+ ACK,
+ ACCEPT,
+ DONE
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexSide.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexSide.java
new file mode 100644
index 00000000000..23b78691244
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexSide.java
@@ -0,0 +1,8 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+public enum AscendexSide {
+ buy,
+ Buy,
+ sell,
+ Sell
+ }
\ No newline at end of file
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexTimeInForce.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexTimeInForce.java
new file mode 100644
index 00000000000..ce2565ded9d
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexTimeInForce.java
@@ -0,0 +1,17 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.enums
+ * Description:
+ *
+ * @date:2022/7/20 9:41
+ * @author:wodepig
+ */
+public enum AscendexTimeInForce {
+ // good-till-canceled有效直到取消
+ GTC,
+ // immediate-or-cancel立即成交或取消
+ IOC,
+ // fill-or-kill全部成交或取消
+ FOK;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexTransactionType.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexTransactionType.java
new file mode 100644
index 00000000000..623e0e19841
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/enums/AscendexTransactionType.java
@@ -0,0 +1,13 @@
+package org.knowm.xchange.ascendex.dto.enums;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.enums
+ * Description:
+ *
+ * @date:2022/7/19 9:56
+ * @author:wodepig
+ */
+public enum AscendexTransactionType {
+ deposit,
+ withdrawal
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexAssetDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexAssetDto.java
index 0168fe86f7c..17b5d916d04 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexAssetDto.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexAssetDto.java
@@ -1,97 +1,70 @@
package org.knowm.xchange.ascendex.dto.marketdata;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigDecimal;
-
-public class AscendexAssetDto {
-
- private final String assetCode;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.knowm.xchange.ascendex.dto.enums.AscendexAssetStatus;
- private final String assetName;
- private final int precisionScale;
-
- private final int nativeScale;
-
- private final BigDecimal withdrawalFee;
+import java.math.BigDecimal;
+import java.util.List;
- private final BigDecimal minWithdrawalAmt;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexAssetDto {
- private final AscendexAssetStatus status;
+ private String assetCode;
- public AscendexAssetDto(
- @JsonProperty("assetCode") String assetCode,
- @JsonProperty("assetName") String assetName,
- @JsonProperty("precisionScale") int precisionScale,
- @JsonProperty("nativeScale") int nativeScale,
- @JsonProperty("withdrawalFee") BigDecimal withdrawalFee,
- @JsonProperty("nimWithdrawalAmt") BigDecimal minWithdrawalAmt,
- @JsonProperty("status") AscendexAssetStatus status) {
- this.assetCode = assetCode;
- this.assetName = assetName;
- this.precisionScale = precisionScale;
- this.nativeScale = nativeScale;
- this.withdrawalFee = withdrawalFee;
- this.minWithdrawalAmt = minWithdrawalAmt;
- this.status = status;
- }
+ private String assetName;
- public String getAssetCode() {
- return assetCode;
- }
+ private int precisionScale;
- public String getAssetName() {
- return assetName;
- }
+ private int nativeScale;
+ /**
+ * v2 remove
+ */
+ private BigDecimal withdrawalFee;
+ private BigDecimal minWithdrawalAmt;
+ private AscendexAssetStatus status;
+ /**
+ * v2 add
+ */
+ private List blockChain;
- public int getPrecisionScale() {
- return precisionScale;
- }
- public int getNativeScale() {
- return nativeScale;
- }
public BigDecimal getWithdrawFee() {
+ if (blockChain!=null&&blockChain.size()!=0){
+ return blockChain.get(0).getWithdrawFee();
+ }
return withdrawalFee;
}
public BigDecimal getMinWithdrawalAmt() {
+ if (blockChain!=null&&blockChain.size()!=0){
+ return blockChain.get(0).getMinWithdrawal();
+ }
return minWithdrawalAmt;
}
public AscendexAssetStatus getStatus() {
- return status;
+ return status==null?AscendexAssetStatus.Normal:status;
}
- @Override
- public String toString() {
- return "AscendexAssetDto{"
- + "assetCode='"
- + assetCode
- + '\''
- + ", assetName='"
- + assetName
- + '\''
- + ", precisionScale="
- + precisionScale
- + ", nativeScale="
- + nativeScale
- + ", withdrawFee="
- + withdrawalFee
- + ", minWithdrawalAmt="
- + minWithdrawalAmt
- + ", status="
- + status
- + '}';
- }
- public enum AscendexAssetStatus {
- Normal,
- NoDeposit,
- NoTrading,
- NoWithdraw,
- InternalTrading,
- NoTransaction
+
+ @Data
+ @NoArgsConstructor
+ @AllArgsConstructor
+ public static class AscendexAssetBlockChain {
+ private String chainName;
+ private BigDecimal withdrawFee;
+ private Boolean allowDeposit;
+ private Boolean allowWithdraw;
+ private BigDecimal minDepositAmt;
+ private BigDecimal minWithdrawal;
+ private Integer numConfirmations;
+
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarDto.java
index bf81f23a775..2a4ba75f781 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarDto.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarDto.java
@@ -1,83 +1,26 @@
package org.knowm.xchange.ascendex.dto.marketdata;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
public class AscendexBarDto {
- private final Long timestamp;
- private final String interval;
- private final String openPrice;
- private final String closePrice;
- private final String highPrice;
- private final String lowPrice;
- private final String volume;
-
- public AscendexBarDto(
- @JsonProperty("ts") Long timestamp,
- @JsonProperty("i") String interval,
- @JsonProperty("o") String openPrice,
- @JsonProperty("c") String closePrice,
- @JsonProperty("h") String highPrice,
- @JsonProperty("l") String lowPrice,
- @JsonProperty("v") String volume) {
- this.timestamp = timestamp;
- this.interval = interval;
- this.openPrice = openPrice;
- this.closePrice = closePrice;
- this.highPrice = highPrice;
- this.lowPrice = lowPrice;
- this.volume = volume;
- }
-
- public Long getTimestamp() {
- return timestamp;
- }
-
- public String getInterval() {
- return interval;
- }
-
- public String getOpenPrice() {
- return openPrice;
- }
-
- public String getClosePrice() {
- return closePrice;
- }
-
- public String getHighPrice() {
- return highPrice;
- }
-
- public String getLowPrice() {
- return lowPrice;
- }
-
- public String getVolume() {
- return volume;
- }
-
- @Override
- public String toString() {
- return "AscendexBarDto{"
- + "timestamp="
- + timestamp
- + ", interval='"
- + interval
- + '\''
- + ", openPrice='"
- + openPrice
- + '\''
- + ", closePrice="
- + closePrice
- + ", highPrice='"
- + highPrice
- + '\''
- + ", lowPrice='"
- + lowPrice
- + '\''
- + ", volume='"
- + volume
- + '\''
- + '}';
- }
+ @JsonProperty("ts")
+ private Long timestamp;
+ @JsonProperty("i")
+ private String interval;
+ @JsonProperty("o")
+ private String openPrice;
+ @JsonProperty("c")
+ private String closePrice;
+ @JsonProperty("h")
+ private String highPrice;
+ @JsonProperty("l")
+ private String lowPrice;
+ @JsonProperty("v")
+ private String volume;
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarHistDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarHistDto.java
index 563aa0d4c9c..df07c87528b 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarHistDto.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexBarHistDto.java
@@ -1,46 +1,20 @@
package org.knowm.xchange.ascendex.dto.marketdata;
import com.fasterxml.jackson.annotation.JsonProperty;
-import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexBarHistDto {
+ @JsonProperty("m")
+ private String m;
+ @JsonProperty("s")
+ private String symbol;
+ @JsonProperty("data")
+ private AscendexBarDto bar;
-public class AscendexBarHistDto implements Serializable {
-
- private final String m;
- private final String symbol;
- private final AscendexBarDto bar;
-
- public AscendexBarHistDto(
- @JsonProperty("m") String m,
- @JsonProperty("s") String symbol,
- @JsonProperty("data") AscendexBarDto bar) {
- this.m = m;
- this.symbol = symbol;
- this.bar = bar;
- }
-
- public String getM() {
- return m;
- }
-
- public String getSymbol() {
- return symbol;
- }
-
- public AscendexBarDto getBar() {
- return bar;
- }
-
- @Override
- public String toString() {
- return "AscendexBarHistDto{"
- + "m='"
- + m
- + '\''
- + ", symbol='"
- + symbol
- + '\''
- + ", bar="
- + bar
- + '}';
- }
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexMarketTradesDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexMarketTradesDto.java
index 4c4333880b5..3b853922658 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexMarketTradesDto.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexMarketTradesDto.java
@@ -1,116 +1,47 @@
package org.knowm.xchange.ascendex.dto.marketdata;
-import com.fasterxml.jackson.annotation.JsonCreator;
+
import com.fasterxml.jackson.annotation.JsonProperty;
-import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
-public class AscendexMarketTradesDto implements Serializable {
-
- private final String m;
-
- private final String symbol;
-
- private final List data;
- @JsonCreator
- public AscendexMarketTradesDto(
- @JsonProperty("m") String m,
- @JsonProperty("symbol") String symbol,
- @JsonProperty("data") List data) {
- this.m = m;
- this.symbol = symbol;
- this.data = data;
- }
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexMarketTradesDto{
- public String getM() {
- return m;
- }
+ @JsonProperty("m")
+ private String m;
- public String getSymbol() {
- return symbol;
- }
+ @JsonProperty("symbol")
+ private String symbol;
- public List getData() {
- return data;
- }
+ @JsonProperty("data")
+ private List data;
- @Override
- public String toString() {
- return "AscendexMarketTradesDto{"
- + "m='"
- + m
- + '\''
- + ", symbol='"
- + symbol
- + '\''
- + ", data="
- + data
- + '}';
- }
+ @Data
+ @NoArgsConstructor
+ @AllArgsConstructor
public static class AscendexMarketTradesData {
- private final String seqnum;
-
- private final BigDecimal price;
-
- private final BigDecimal quantity;
-
- private final Date timestamp;
-
- private final boolean isBuyerMaker;
-
- @JsonCreator
- public AscendexMarketTradesData(
- @JsonProperty("seqnum") String seqnum,
- @JsonProperty("p") BigDecimal price,
- @JsonProperty("q") BigDecimal quantity,
- @JsonProperty("ts") Date timestamp,
- @JsonProperty("bm") boolean isBuyerMaker) {
- this.seqnum = seqnum;
- this.price = price;
- this.quantity = quantity;
- this.timestamp = timestamp;
- this.isBuyerMaker = isBuyerMaker;
- }
-
- public String getSeqnum() {
- return seqnum;
- }
-
- public BigDecimal getPrice() {
- return price;
- }
+ @JsonProperty("seqnum")
+ private String seqnum;
- public BigDecimal getQuantity() {
- return quantity;
- }
+ @JsonProperty("p")
+ private BigDecimal price;
- public Date getTimestamp() {
- return timestamp;
- }
+ @JsonProperty("q")
+ private BigDecimal quantity;
- public boolean isBuyerMaker() {
- return isBuyerMaker;
- }
+ @JsonProperty("ts")
+ private Date timestamp;
- @Override
- public String toString() {
- return "AscendexMarketTradesData{"
- + "seqnum='"
- + seqnum
- + '\''
- + ", price="
- + price
- + ", quantity="
- + quantity
- + ", timestamp="
- + timestamp
- + ", isBuyerMaker="
- + isBuyerMaker
- + '}';
- }
+ @JsonProperty("bm")
+ private boolean isBuyerMaker;
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexOrderbookDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexOrderbookDto.java
index eec9320c44d..ff6e03d98c2 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexOrderbookDto.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexOrderbookDto.java
@@ -1,101 +1,38 @@
package org.knowm.xchange.ascendex.dto.marketdata;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.time.Instant;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
public class AscendexOrderbookDto {
- private final String m;
-
- private final String symbol;
-
- private final AscendexOrderbookData data;
-
- public AscendexOrderbookDto(
- @JsonProperty("m") String m,
- @JsonProperty("symbol") String symbol,
- @JsonProperty("data") AscendexOrderbookData data) {
- this.m = m;
- this.symbol = symbol;
- this.data = data;
- }
-
- public String getM() {
- return m;
- }
+ private String m;
- public String getSymbol() {
- return symbol;
- }
+ private String symbol;
- public AscendexOrderbookData getData() {
- return data;
- }
+ private AscendexOrderbookData data;
- @Override
- public String toString() {
- return "AscendexOrderbookDto{"
- + "m='"
- + m
- + '\''
- + ", symbol='"
- + symbol
- + '\''
- + ", data="
- + data
- + '}';
- }
+ @Data
+ @NoArgsConstructor
+ @AllArgsConstructor
public static class AscendexOrderbookData {
- private final Long seqnum;
+ private Long seqnum;
- private final Date ts;
+ private Date ts;
- private final List asks;
+ private List asks;
- private final List bids;
-
- public AscendexOrderbookData(
- @JsonProperty("seqnum") Long seqnum,
- @JsonProperty("ts") Long ts,
- @JsonProperty("asks") List asks,
- @JsonProperty("bids") List bids) {
- this.seqnum = seqnum;
- this.ts = Date.from(Instant.ofEpochMilli(ts));
- this.asks = asks;
- this.bids = bids;
- }
-
- public Long getSeqnum() {
- return seqnum;
- }
+ private List bids;
public Date getTimestamp() {
return ts;
}
-
- public List getAsks() {
- return asks;
- }
-
- public List getBids() {
- return bids;
- }
-
- @Override
- public String toString() {
- return "AscendexOrderbookData{"
- + "seqnum="
- + seqnum
- + ", timestamp="
- + ts
- + ", asks="
- + asks
- + ", bids="
- + bids
- + '}';
- }
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductBaseDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductBaseDto.java
new file mode 100644
index 00000000000..abaa61ba092
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductBaseDto.java
@@ -0,0 +1,29 @@
+package org.knowm.xchange.ascendex.dto.marketdata;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.knowm.xchange.ascendex.dto.enums.AscendexProductCommissionType;
+
+import java.math.BigDecimal;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.marketdata
+ * Description:
+ *
+ * @date:2022/7/14 18:07
+ * @author:wodepig
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexProductBaseDto {
+ private String symbol;
+ private BigDecimal minNotional;
+ private BigDecimal maxNotional;
+ private BigDecimal tickSize;
+ private BigDecimal lotSize;
+ private AscendexProductCommissionType commissionType;
+ private BigDecimal commissionReserveRate;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductDto.java
index 0ccc31e5887..a1946152691 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductDto.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductDto.java
@@ -1,135 +1,26 @@
package org.knowm.xchange.ascendex.dto.marketdata;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigDecimal;
-public class AscendexProductDto {
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.knowm.xchange.ascendex.dto.enums.AscendexAssetStatus;
- private final String symbol;
- private final String baseAsset;
+@EqualsAndHashCode(callSuper = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexProductDto extends AscendexProductBaseDto {
- private final String quoteAsset;
+ private String baseAsset;
- private final AscendexAssetDto.AscendexAssetStatus status;
+ private String quoteAsset;
- private final BigDecimal minNotional;
+ private AscendexAssetStatus status;
- private final BigDecimal maxNotional;
+ private boolean marginTradable;
- private final boolean marginTradable;
- private final AscendexProductCommissionType commissionType;
-
- private final BigDecimal commissionReserveRate;
-
- private final BigDecimal tickSize;
-
- private final BigDecimal lotSize;
-
- public AscendexProductDto(
- @JsonProperty("symbol") String symbol,
- @JsonProperty("baseAsset") String baseAsset,
- @JsonProperty("quoteAsset") String quoteAsset,
- @JsonProperty("status") AscendexAssetDto.AscendexAssetStatus status,
- @JsonProperty("minNotional") BigDecimal minNotional,
- @JsonProperty("maxNotional") BigDecimal maxNotional,
- @JsonProperty("marginTradable") boolean marginTradable,
- @JsonProperty("commissionType") AscendexProductCommissionType commissionType,
- @JsonProperty("commissionReserveRate") BigDecimal commissionReserveRate,
- @JsonProperty("tickSize") BigDecimal tickSize,
- @JsonProperty("lotSize") BigDecimal lotSize) {
- this.symbol = symbol;
- this.baseAsset = baseAsset;
- this.quoteAsset = quoteAsset;
- this.status = status;
- this.minNotional = minNotional;
- this.maxNotional = maxNotional;
- this.marginTradable = marginTradable;
- this.commissionType = commissionType;
- this.commissionReserveRate = commissionReserveRate;
- this.tickSize = tickSize;
- this.lotSize = lotSize;
- }
-
- public String getSymbol() {
- return symbol;
- }
-
- public String getBaseAsset() {
- return baseAsset;
- }
-
- public String getQuoteAsset() {
- return quoteAsset;
- }
-
- public AscendexAssetDto.AscendexAssetStatus getStatus() {
- return status;
- }
-
- public BigDecimal getMinNotional() {
- return minNotional;
- }
-
- public BigDecimal getMaxNotional() {
- return maxNotional;
- }
-
- public boolean isMarginTradeable() {
- return marginTradable;
- }
-
- public AscendexProductCommissionType getCommissionType() {
- return commissionType;
- }
-
- public BigDecimal getCommissionReserveRate() {
- return commissionReserveRate;
- }
-
- public BigDecimal getTickSize() {
- return tickSize;
- }
-
- public BigDecimal getLotSize() {
- return lotSize;
- }
-
- @Override
- public String toString() {
- return "AscendexProductDto{"
- + "symbol='"
- + symbol
- + '\''
- + ", baseAsset='"
- + baseAsset
- + '\''
- + ", quoteAsset='"
- + quoteAsset
- + '\''
- + ", status="
- + status
- + ", minNotional="
- + minNotional
- + ", maxNotional="
- + maxNotional
- + ", marginTradeable="
- + marginTradable
- + ", commissionType="
- + commissionType
- + ", commissionReserveRate="
- + commissionReserveRate
- + ", tickSize="
- + tickSize
- + ", lotSize="
- + lotSize
- + '}';
- }
-
- public enum AscendexProductCommissionType {
- Base,
- Quote,
- Received
- }
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductKindDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductKindDto.java
new file mode 100644
index 00000000000..a8ecaad79e7
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexProductKindDto.java
@@ -0,0 +1,32 @@
+package org.knowm.xchange.ascendex.dto.marketdata;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.knowm.xchange.ascendex.dto.enums.AscendexAssetStatus;
+
+import java.math.BigDecimal;
+@EqualsAndHashCode(callSuper = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexProductKindDto extends AscendexProductBaseDto {
+
+
+ private String displayName;
+ private String domain;
+ private Long tradingStartTime;
+ private String collapseDecimals;
+ private BigDecimal minQty;
+ private BigDecimal maxQty;
+ private AscendexAssetStatus statusCode;
+ private String statusMessage;
+ private boolean useTick;
+ private boolean useLot;
+ private BigDecimal qtyScale;
+ private BigDecimal priceScale;
+ private BigDecimal notionalScale;
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexTickerDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexTickerDto.java
new file mode 100644
index 00000000000..894d005e71b
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/marketdata/AscendexTickerDto.java
@@ -0,0 +1,31 @@
+package org.knowm.xchange.ascendex.dto.marketdata;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.marketdata
+ * Description:
+ *
+ * @date:2022/7/14 18:07
+ * @author:wodepig
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AscendexTickerDto {
+ private String symbol;
+ private BigDecimal open;
+ private BigDecimal close;
+ private BigDecimal high;
+ private BigDecimal low;
+ private BigDecimal volume;
+ private List ask;
+ private List bid;
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexCancelOrderRequestPayload.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexCancelOrderRequestPayload.java
index d58a863a0a8..7f65cc7bd14 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexCancelOrderRequestPayload.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexCancelOrderRequestPayload.java
@@ -1,50 +1,25 @@
package org.knowm.xchange.ascendex.dto.trade;
-import com.fasterxml.jackson.annotation.JsonProperty;
-public class AscendexCancelOrderRequestPayload {
-
- @JsonProperty("orderId")
- private final String orderId;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
- @JsonProperty("symbol")
- private final String symbol;
-
- @JsonProperty("time")
- private final Long time;
+@Data
+@AllArgsConstructor
+public class AscendexCancelOrderRequestPayload {
+ private String orderId;
- public AscendexCancelOrderRequestPayload(
- @JsonProperty("orderId") String orderId,
- @JsonProperty("symbol") String symbol,
- @JsonProperty("time") Long time) {
- this.orderId = orderId;
- this.symbol = symbol;
- this.time = time;
- }
- public String getOrderId() {
- return orderId;
- }
+ private String symbol;
- public String getSymbol() {
- return symbol;
- }
- public Long getTime() {
- return time;
- }
+ private Long time;
+ @JsonIgnore
+ private AccountCategory accountCategory;
- @Override
- public String toString() {
- return "AscendexCancelOrderRequestPayload{"
- + ", orderId='"
- + orderId
- + '\''
- + ", symbol='"
- + symbol
- + '\''
- + ", time="
- + time
- + '}';
+ public void setSymbol(String symbol) {
+ this.symbol = symbol==null?null:symbol.toUpperCase();
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexHistoryOrderResponse.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexHistoryOrderResponse.java
new file mode 100644
index 00000000000..ba48c909419
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexHistoryOrderResponse.java
@@ -0,0 +1,34 @@
+package org.knowm.xchange.ascendex.dto.trade;
+
+import lombok.Data;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import org.knowm.xchange.ascendex.dto.enums.AscendexSide;
+
+import java.math.BigDecimal;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.trade
+ * Description:
+ *
+ * @date:2022/7/20 18:47
+ * @author:wodepig
+ */
+@Data
+public class AscendexHistoryOrderResponse {
+ private String orderId;
+ private Long seqNum;
+ private String accountId;
+ private String symbol;
+ private AscendexOrderType orderType;
+ private AscendexSide side;
+ private BigDecimal price;
+ private BigDecimal stopPrice;
+ private BigDecimal orderQty;
+ private String status;
+ private Long createTime;
+ private Long lastExecTime;
+ private BigDecimal avgFillPrice;
+ private BigDecimal fillQty;
+ private BigDecimal fee;
+ private String feeAsset;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOpenOrdersResponse.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOpenOrdersResponse.java
index 27fc48ba052..845c424ef61 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOpenOrdersResponse.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOpenOrdersResponse.java
@@ -1,187 +1,49 @@
package org.knowm.xchange.ascendex.dto.trade;
-import com.fasterxml.jackson.annotation.JsonProperty;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import org.knowm.xchange.ascendex.dto.enums.AscendexSide;
import java.math.BigDecimal;
-import java.time.Instant;
import java.util.Date;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
public class AscendexOpenOrdersResponse {
- private final BigDecimal avgPx;
+ private BigDecimal avgPx;
- private final BigDecimal cumFee;
+ private BigDecimal cumFee;
- private final BigDecimal cumFilledQty;
+ private BigDecimal cumFilledQty;
- private final String errorCode;
+ private String errorCode;
- private final String feeAsset;
+ private String feeAsset;
- private final Date lastExecTime;
+ private Date lastExecTime;
- private final String orderId;
+ private String orderId;
- private final BigDecimal orderQty;
+ private BigDecimal orderQty;
- private final AscendexPlaceOrderRequestPayload.AscendexOrderType orderType;
+ private AscendexOrderType orderType;
- private final BigDecimal price;
+ private BigDecimal price;
- private final Long seqNum;
+ private Long seqNum;
- private final AscendexPlaceOrderRequestPayload.AscendexSide side;
+ private AscendexSide side;
- private final String status;
+ private String status;
- private final BigDecimal stopPrice;
+ private BigDecimal stopPrice;
- private final String symbol;
+ private String symbol;
- private final String execInst;
+ private String execInst;
- public AscendexOpenOrdersResponse(
- @JsonProperty("avgPx") BigDecimal avgPx,
- @JsonProperty("cumFee") BigDecimal cumFee,
- @JsonProperty("cumFilledQty") BigDecimal cumFilledQty,
- @JsonProperty("errorCode") String errorCode,
- @JsonProperty("feeAsset") String feeAsset,
- @JsonProperty("lastExecTime") Long lastExecTime,
- @JsonProperty("orderId") String orderId,
- @JsonProperty("orderQty") BigDecimal orderQty,
- @JsonProperty("orderType") String orderType,
- @JsonProperty("price") BigDecimal price,
- @JsonProperty("seqNum") Long seqNum,
- @JsonProperty("side") String side,
- @JsonProperty("status") String status,
- @JsonProperty("stopPrice") BigDecimal stopPrice,
- @JsonProperty("symbol") String symbol,
- @JsonProperty("execInst") String execInst) {
- this.avgPx = avgPx;
- this.cumFee = cumFee;
- this.cumFilledQty = cumFilledQty;
- this.errorCode = errorCode;
- this.feeAsset = feeAsset;
- this.lastExecTime = Date.from(Instant.ofEpochMilli(lastExecTime));
- this.orderId = orderId;
- this.orderQty = orderQty;
- this.orderType =
- AscendexPlaceOrderRequestPayload.AscendexOrderType.valueOf(orderType.toLowerCase());
- this.price = price;
- this.seqNum = seqNum;
- this.side = AscendexPlaceOrderRequestPayload.AscendexSide.valueOf(side.toLowerCase());
- this.status = status;
- this.stopPrice = stopPrice;
- this.symbol = symbol;
- this.execInst = execInst;
- }
-
- public BigDecimal getAvgPx() {
- return avgPx;
- }
-
- public BigDecimal getCumFee() {
- return cumFee;
- }
-
- public BigDecimal getCumFilledQty() {
- return cumFilledQty;
- }
-
- public String getErrorCode() {
- return errorCode;
- }
-
- public String getFeeAsset() {
- return feeAsset;
- }
-
- public Date getLastExecTime() {
- return lastExecTime;
- }
-
- public String getOrderId() {
- return orderId;
- }
-
- public BigDecimal getOrderQty() {
- return orderQty;
- }
-
- public AscendexPlaceOrderRequestPayload.AscendexOrderType getOrderType() {
- return orderType;
- }
-
- public BigDecimal getPrice() {
- return price;
- }
-
- public Long getSeqNum() {
- return seqNum;
- }
-
- public AscendexPlaceOrderRequestPayload.AscendexSide getSide() {
- return side;
- }
-
- public String getStatus() {
- return status;
- }
-
- public BigDecimal getStopPrice() {
- return stopPrice;
- }
-
- public String getSymbol() {
- return symbol;
- }
-
- public String getExecInst() {
- return execInst;
- }
-
- @Override
- public String toString() {
- return "AscendexOpenOrdersResponse{"
- + "avgPx="
- + avgPx
- + ", cumFee="
- + cumFee
- + ", cumFilledQty="
- + cumFilledQty
- + ", errorCode='"
- + errorCode
- + '\''
- + ", feeAsset='"
- + feeAsset
- + '\''
- + ", lastExecTime="
- + lastExecTime
- + ", orderId='"
- + orderId
- + '\''
- + ", orderQty="
- + orderQty
- + ", orderType='"
- + orderType
- + '\''
- + ", price="
- + price
- + ", seqNum="
- + seqNum
- + ", side='"
- + side
- + '\''
- + ", status='"
- + status
- + '\''
- + ", stopPrice="
- + stopPrice
- + ", symbol='"
- + symbol
- + '\''
- + ", execInst='"
- + execInst
- + '\''
- + '}';
- }
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse.java
index 10e456bf916..2f401549715 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse.java
@@ -2,168 +2,44 @@
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.Date;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import java.util.Date;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
public class AscendexOrderResponse {
- private final String ac;
-
- private final String accountId;
-
- private final String action;
+ private String ac;
- private final AscendexPlaceOrderInfo info;
+ private String accountId;
- private final String status;
+ private String action;
- private final String message;
+ private AscendexPlaceOrderInfo info;
- private final String reason;
+ private String status;
- private final String code;
+ private String message;
- public AscendexOrderResponse(
- @JsonProperty("ac") String ac,
- @JsonProperty("accountId") String accountId,
- @JsonProperty("action") String action,
- @JsonProperty("info") AscendexPlaceOrderInfo info,
- @JsonProperty("status") String status,
- @JsonProperty("message") String message,
- @JsonProperty("reason") String reason,
- @JsonProperty("code") String code) {
- this.ac = ac;
- this.accountId = accountId;
- this.action = action;
- this.info = info;
- this.status = status;
- this.message = message;
- this.reason = reason;
- this.code = code;
- }
-
- public String getAc() {
- return ac;
- }
+ private String reason;
- public String getAccountId() {
- return accountId;
- }
+ private String code;
- public String getAction() {
- return action;
- }
-
- public AscendexPlaceOrderInfo getInfo() {
- return info;
- }
-
- public String getStatus() {
- return status;
- }
-
- public String getMessage() {
- return message;
- }
-
- public String getReason() {
- return reason;
- }
-
- public String getCode() {
- return code;
- }
-
- @Override
- public String toString() {
- return "AscendexPlaceOrderResponse{"
- + "ac='"
- + ac
- + '\''
- + ", accountId='"
- + accountId
- + '\''
- + ", action='"
- + action
- + '\''
- + ", info="
- + info
- + ", status='"
- + status
- + '\''
- + ", message='"
- + message
- + '\''
- + ", reason='"
- + reason
- + '\''
- + ", code='"
- + code
- + '\''
- + '}';
- }
+ @Data
public static class AscendexPlaceOrderInfo {
- private final String id;
-
- private final String orderId;
-
- private final String orderType;
-
- private final String symbol;
-
- private final Date timestamp;
-
- public AscendexPlaceOrderInfo(
- @JsonProperty("id") String id,
- @JsonProperty("orderId") String orderId,
- @JsonProperty("orderType") String orderType,
- @JsonProperty("symbol") String symbol,
- @JsonProperty("timestamp") @JsonAlias({"lastExecTime"}) Long timestamp) {
- this.id = id;
- this.orderId = orderId;
- this.orderType = orderType;
- this.symbol = symbol;
- this.timestamp = timestamp == null ? null : new Date(timestamp);
- }
-
- public String getId() {
- return id;
- }
-
- public String getOrderId() {
- return orderId;
- }
-
- public String getOrderType() {
- return orderType;
- }
+ private String id;
- public String getSymbol() {
- return symbol;
- }
+ private String orderId;
- public Date getTimestamp() {
- return timestamp;
- }
+ private String orderType;
- @Override
- public String toString() {
- return "{"
- + "id='"
- + id
- + '\''
- + ", orderId='"
- + orderId
- + '\''
- + ", orderType='"
- + orderType
- + '\''
- + ", symbol='"
- + symbol
- + '\''
- + ", timestamp="
- + timestamp
- + '}';
- }
+ private String symbol;
+ @JsonProperty("timestamp") @JsonAlias({"lastExecTime"})
+ private Date timestamp;
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse4AcceptDONE.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse4AcceptDONE.java
new file mode 100644
index 00000000000..fa9291f1612
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexOrderResponse4AcceptDONE.java
@@ -0,0 +1,27 @@
+package org.knowm.xchange.ascendex.dto.trade;
+
+import lombok.Data;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import org.knowm.xchange.ascendex.dto.enums.AscendexRespInst;
+import org.knowm.xchange.ascendex.dto.enums.AscendexSide;
+
+import java.math.BigDecimal;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.trade
+ * Description:
+ *
+ * @date:2022/7/20 14:27
+ * @author:wodepig
+ */
+@Data
+public class AscendexOrderResponse4AcceptDONE {
+ private String id;
+ private Long time;
+ private String symbol;
+ private BigDecimal orderPrice;
+ private BigDecimal orderQty;
+ private AscendexOrderType orderType;
+ private AscendexSide side;
+ private AscendexRespInst respInst;
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexPlaceOrderRequestPayload.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexPlaceOrderRequestPayload.java
index 724a561c06b..8bda34664fa 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexPlaceOrderRequestPayload.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/trade/AscendexPlaceOrderRequestPayload.java
@@ -1,142 +1,50 @@
package org.knowm.xchange.ascendex.dto.trade;
import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.knowm.xchange.ascendex.dto.enums.AscendexOrderType;
+import org.knowm.xchange.ascendex.dto.enums.AscendexRespInst;
+import org.knowm.xchange.ascendex.dto.enums.AscendexSide;
+import org.knowm.xchange.ascendex.dto.enums.AscendexTimeInForce;
-public class AscendexPlaceOrderRequestPayload {
+import java.util.Date;
- private final String symbol;
+@Data
+@AllArgsConstructor
+public class AscendexPlaceOrderRequestPayload {
- private final Long time;
+ private String symbol;
- private final String orderQty;
+ private Long time;
- private final AscendexOrderType orderType;
+ private String orderQty;
- private final AscendexSide side;
+ private AscendexOrderType orderType;
- @JsonIgnore private final String id;
+ private AscendexSide side;
- private final String orderPrice;
+ @JsonIgnore private String id;
- @JsonIgnore private final String stopPrice;
+ private String orderPrice;
- private final boolean postOnly;
+ @JsonIgnore private String stopPrice;
+ /**
+ * 只挂单
+ */
+ private boolean postOnly;
// GTC or OIC, default GTC
- @JsonIgnore private final String timeInForce;
+ @JsonIgnore private AscendexTimeInForce timeInForce;
- private final String respInst;
+ private AscendexRespInst respInst;
- public AscendexPlaceOrderRequestPayload(
- String symbol,
- Long time,
- String orderQty,
- AscendexOrderType orderType,
- AscendexSide side,
- String id,
- String orderPrice,
- String stopPrice,
- boolean postOnly,
- String timeInForce,
- String respInst) {
+ public AscendexPlaceOrderRequestPayload(String symbol, String orderQty,String orderPrice ,AscendexOrderType orderType, AscendexSide side) {
this.symbol = symbol;
- this.time = time;
+ this.time = new Date().getTime();
+ this.orderPrice = orderPrice;
this.orderQty = orderQty;
this.orderType = orderType;
this.side = side;
- this.id = id;
- this.orderPrice = orderPrice;
- this.stopPrice = stopPrice;
- this.postOnly = postOnly;
- this.timeInForce = timeInForce;
- this.respInst = respInst;
- }
-
- public String getSymbol() {
- return symbol;
- }
-
- public Long getTime() {
- return time;
- }
-
- public String getOrderQty() {
- return orderQty;
- }
-
- public AscendexOrderType getOrderType() {
- return orderType;
- }
-
- public AscendexSide getSide() {
- return side;
- }
-
- public String getId() {
- return id;
- }
-
- public String getOrderPrice() {
- return orderPrice;
- }
-
- public String getStopPrice() {
- return stopPrice;
- }
-
- public boolean isPostOnly() {
- return postOnly;
- }
-
- public String getTimeInForce() {
- return timeInForce;
- }
-
- public String getRespInst() {
- return respInst;
- }
-
- @Override
- public String toString() {
- return "AscendexPlaceOrderRequestPayload{"
- + "symbol='"
- + symbol
- + '\''
- + ", time="
- + time
- + ", orderQty="
- + orderQty
- + ", orderType="
- + orderType
- + ", side="
- + side
- + ", id='"
- + id
- + '\''
- + ", orderPrice="
- + orderPrice
- + ", stopPrice="
- + stopPrice
- + ", postOnly="
- + postOnly
- + ", timeInForce='"
- + timeInForce
- + '\''
- + ", respInst='"
- + respInst
- + '\''
- + '}';
- }
-
- public enum AscendexOrderType {
- market,
- limit,
- stop_market,
- stop_limit
- }
-
- public enum AscendexSide {
- buy,
- sell
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/wallet/AscendDepositAddressesDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/wallet/AscendDepositAddressesDto.java
new file mode 100644
index 00000000000..1c9a9460943
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/wallet/AscendDepositAddressesDto.java
@@ -0,0 +1,28 @@
+package org.knowm.xchange.ascendex.dto.wallet;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.wallet
+ * Description:
+ *
+ * @date:2022/7/18 11:54
+ * @author:wodepig
+ */
+@Data
+public class AscendDepositAddressesDto {
+ private String asset;
+ private String assetName;
+ private List address;
+ @Data
+ public static class Address{
+
+ private String address;
+ private String blockchain;
+ private String destTag;
+
+ }
+
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/wallet/AscendexWalletTransactionHistoryDto.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/wallet/AscendexWalletTransactionHistoryDto.java
new file mode 100644
index 00000000000..8225290d573
--- /dev/null
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/dto/wallet/AscendexWalletTransactionHistoryDto.java
@@ -0,0 +1,54 @@
+package org.knowm.xchange.ascendex.dto.wallet;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.dto.wallet
+ * Description:
+ *
+ * @date:2022/7/19 9:20
+ * @author:wodepig
+ */
+@Data
+public class AscendexWalletTransactionHistoryDto {
+ private List data;
+ private boolean hasNext;
+ private Integer page;
+ private Integer pageSize;
+
+ @Data
+ public static class DestAddress{
+
+ private String address;
+
+ }
+ @Data
+ public static class Detail{
+
+ private String asset;
+ private BigDecimal amount;
+ /**
+ * the commission charged by the exchange
+ */
+ private BigDecimal commission;
+ private DestAddress destAddress;
+ private String networkTransactionId;
+ /**
+ * the minimun number of confirmations for the transaction to be viewed as confirmed.
+
+ */
+ private Integer numConfirmations;
+ /**
+ * current number of confirmations
+ */
+ private Integer numConfirmed;
+ private String requestId;
+ private String status;
+ private Long time;
+ private String transactionType;
+
+ }
+}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexAccountServiceRaw.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexAccountServiceRaw.java
index d09542b9034..a23d85d60c5 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexAccountServiceRaw.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexAccountServiceRaw.java
@@ -2,9 +2,16 @@
import java.io.IOException;
import java.util.List;
+
import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
import org.knowm.xchange.ascendex.AscendexException;
-import org.knowm.xchange.ascendex.dto.account.AscendexCashAccountBalanceDto;
+import org.knowm.xchange.ascendex.dto.AscendexResponse;
+import org.knowm.xchange.ascendex.dto.account.*;
+import org.knowm.xchange.ascendex.dto.balance.*;
+import org.knowm.xchange.ascendex.dto.enums.AscendexTransactionType;
+import org.knowm.xchange.ascendex.dto.wallet.AscendDepositAddressesDto;
+import org.knowm.xchange.ascendex.dto.wallet.AscendexWalletTransactionHistoryDto;
public class AscendexAccountServiceRaw extends AscendexBaseService {
@@ -12,12 +19,182 @@ public AscendexAccountServiceRaw(Exchange exchange) {
super(exchange);
}
- public List getAscendexCashAccountBalance()
+ public AscendexAccountInfoDto getAscendexAccountInfo() throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getAscendexAccountInfo(
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ )
+ );
+
+ }
+
+ public AscendexVIPFeeScheduleDto getAscendexVIPFeeSchedule() throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getAscendexVIPFeeSchedule(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ )
+ );
+
+ }
+
+ public AscendexSymbolFeeDto getAscendexSymbolFee() throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getAscendexSymbolFeeSchedule(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ )
+ );
+
+ }
+
+ public AscendexRiskLimitInfoDto getAscendexRiskLimitInfo()throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getAscendexRiskLimitInfo()
+ );
+ }
+
+ public AscendexExchangeLatencyInfoDto getAscendexExchangeLatencyInfo(Long requestTime)throws AscendexException,IOException{
+ return checkResult(
+ ascendexAuthenticated.getAscendexExchangeLatencyInfo(requestTime)
+ );
+ }
+
+ public List getAscendexCashAccountBalance()throws AscendexException, IOException {
+ return getAscendexCashAccountBalance(null,false);
+ }
+ public List getAscendexCashAccountBalance(
+ String asset,
+ Boolean showAll
+ )
throws AscendexException, IOException {
return checkResult(
- ascendexAuthenticated.getCashAccountBalance(
+ ascendexAuthenticated.getAscendexCashAccountBalance(
+ asset==null?null:asset.toUpperCase(),
+ showAll,
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
exchange.getExchangeSpecification().getApiKey(),
exchange.getNonceFactory().createValue(),
signatureCreator));
}
+ public List getAscendexMarginAccountBalance() throws AscendexException, IOException{
+ return getAscendexMarginAccountBalance(null,false);
+ }
+
+ public List getAscendexMarginAccountBalance(
+ String asset,
+ Boolean showAll
+ )
+ throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getAscendexMarginAccountBalance(
+ asset==null?null:asset.toUpperCase(),
+ showAll,
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator));
+ }
+ public AscendexMarginRiskDto getAscendexMarginRisk() throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getAscendexMarginRisk(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ )
+ );
+ }
+
+
+ public Boolean getAscendexBalanceTransfer( AscendexBalanceTransferRequestPayload payload) throws AscendexException, IOException {
+ AscendexResponse ascendexBalanceTransfer = ascendexAuthenticated.getAscendexBalanceTransfer(
+ payload,
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ );
+ if (ascendexBalanceTransfer.getCode().equals(0)){
+ return true;
+ }
+
+ return false;
+ }
+
+
+ public AscendexBalanceSnapshotDto getAscendexBalanceSnapshot(String date,AccountCategory accountCategory)throws AscendexException, IOException{
+ /* int days = (int) ((new Date().getTime() - new Date(date).getTime()) / (1000*3600*24));
+ if (days>7){
+ throw new AscendexException(0,"Data query for most recent 7 days is supported");
+ }*/
+ AscendexBalanceSnapshotDto BalanceSnapshot = ascendexAuthenticated.getAscendexBalanceSnapshot(
+ date,
+ accountCategory,
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ );
+ return BalanceSnapshot;
+ }
+
+ public AscendexOrderAndBalanceDetailDto getAscendexOrderAndBalanceDetail(String date, AccountCategory accountCategory)throws AscendexException, IOException{
+
+ AscendexOrderAndBalanceDetailDto Detail = ascendexAuthenticated.getAscendexOrderAndBalanceDetail(
+ date,
+ accountCategory,
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ );
+ return Detail;
+ }
+
+ public AscendDepositAddressesDto getAscendDepositAddresses( String asset)throws AscendexException, IOException{
+ return getAscendDepositAddresses(asset,null);
+
+ }
+ public AscendDepositAddressesDto getAscendDepositAddresses( String asset, String blockchain)throws AscendexException, IOException{
+ return checkResult(
+ ascendexAuthenticated.getAscendexDepositAddresses(
+ asset.toUpperCase(),blockchain==null?null:blockchain.toUpperCase(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ )
+ );
+
+ }
+
+ /**
+ * We do support API withdrawals. Please contact your dedicated sales manager or support@ascendex.com for further information.
+ */
+ public void getAscendWithdrawal(){
+
+ }
+ public AscendexWalletTransactionHistoryDto getAscendexWalletTransactionHistory()throws AscendexException, IOException{
+ return getAscendexWalletTransactionHistory(null,null,null,null);
+ }
+ public AscendexWalletTransactionHistoryDto getAscendexWalletTransactionHistory(String asset,
+ AscendexTransactionType txType,
+ Integer page,Integer pageSize)throws AscendexException, IOException{
+ return checkResult(
+ ascendexAuthenticated.getAscendexWalletTransactionHistory(
+ asset==null?null:asset.toUpperCase(),
+ txType,
+ page,
+ pageSize,
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator
+ )
+ );
+
+ }
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexBaseService.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexBaseService.java
index f0ef9b36af6..29c7a137080 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexBaseService.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexBaseService.java
@@ -11,15 +11,18 @@
import org.knowm.xchange.service.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import si.mazi.rescu.ClientConfig;
+import si.mazi.rescu.ClientConfigUtil;
import si.mazi.rescu.ParamsDigest;
+import java.net.Proxy;
+
/**
* In order for Ascendex exchange authenticated endpoints to work you must add a
* specificParameterItem named 'account-group' on the
* getExchangeSpecification.getExchangeSpecificParameters Map
*/
public class AscendexBaseService extends BaseExchangeService implements BaseService {
-
protected IAscendex ascendex;
protected IAscendexAuthenticated ascendexAuthenticated;
protected ParamsDigest signatureCreator;
@@ -36,14 +39,24 @@ public AscendexBaseService(Exchange exchange) {
.getExchangeSpecificParameters()
.containsKey("account-group")) {
ExchangeSpecification specWithAccountGroup = exchange.getDefaultExchangeSpecification();
- specWithAccountGroup.setSslUri(
+ specWithAccountGroup.setSslUri(exchange.getExchangeSpecification().getSslUri());
+ String proxyUsername = getExchangeSpecificParametersItem("proxyUsername");
+ String proxyPassword = getExchangeSpecificParametersItem("proxyPassword");
+ Proxy.Type proxyType = getExchangeSpecificParametersItem("proxyType");
+ /* not all api that auth need
+ like :/api/pro/v1/info api/pro/data/v2/order/hist
+ specWithAccountGroup.setSslUri(
exchange.getExchangeSpecification().getSslUri()
+ exchange
.getExchangeSpecification()
.getExchangeSpecificParametersItem("account-group")
- + "/");
+ + "/");*/
+ ClientConfig clientConfig = ExchangeRestProxyBuilder.createClientConfig(exchange.getExchangeSpecification());
+ clientConfig.setProxyType(proxyType);
+ ClientConfig addPassword = ClientConfigUtil.addBasicAuthCredentials(clientConfig, proxyUsername, proxyPassword);
ascendexAuthenticated =
ExchangeRestProxyBuilder.forInterface(IAscendexAuthenticated.class, specWithAccountGroup)
+ .clientConfig(addPassword)
.build();
} else {
LOG.warn(
@@ -53,6 +66,13 @@ public AscendexBaseService(Exchange exchange) {
AscendexDigest.createInstance(exchange.getExchangeSpecification().getSecretKey());
}
+ public T getExchangeSpecificParametersItem(String key){
+ try {
+ return (T)exchange.getExchangeSpecification().getExchangeSpecificParametersItem(key);
+ } catch (Exception e) {
+ return null;
+ }
+ }
public R checkResult(AscendexResponse response) throws AscendexException {
if (response.getCode() == 0) {
return response.getData();
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexDigest.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexDigest.java
index 1e4bbff7971..f36193d4a2f 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexDigest.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexDigest.java
@@ -21,29 +21,96 @@ public static AscendexDigest createInstance(String secretKeyBase64) {
@Override
public String digestParams(RestInvocation restInvocation) {
- String message;
+ String signUrl = getSignUrl(restInvocation.getPath());
- if (restInvocation.getPath().contains("cash")) {
+ // signature have no regulate
+
+ String message=restInvocation.getHttpHeadersFromParams().get("x-auth-timestamp")+signUrl;
+ /* String path =restInvocation.getPath();
+ int index=0;
+ if (path.contains("api/pro/v1/cash")){
+ index=path.lastIndexOf("api/pro/v1/cash")+16;
+ }else if (path.contains("api/pro/v1/margin")){
+ index=path.lastIndexOf("api/pro/v1/margin")+18;
+ }else if (path.contains("api/pro/v1")){
+ index=path.lastIndexOf("api/pro/v1")+11;
+ }else if (path.contains("/api/pro/v1/spot/fee")){
+ message=messageBefore+"fee";
+
+ }
+
+ if (index!=0){
+ message= messageBefore+path.substring(index);
+ }*/
+
+/*
+ if (restInvocation.getPath().contains("cash")) {
message =
- restInvocation.getHttpHeadersFromParams().get("x-auth-timestamp")
+ messageBefore
+ restInvocation
.getPath()
.substring(restInvocation.getPath().lastIndexOf("cash") + 5);
} else if (restInvocation.getPath().contains("margin")) {
message =
- restInvocation.getHttpHeadersFromParams().get("x-auth-timestamp")
+ messageBefore
+ restInvocation
.getPath()
.substring(restInvocation.getPath().lastIndexOf("margin") + 7);
} else {
message =
- restInvocation.getHttpHeadersFromParams().get("x-auth-timestamp")
+ messageBefore
+ restInvocation.getPath().substring(restInvocation.getPath().lastIndexOf("/") + 1);
}
+ // special message
+ String path = restInvocation.getPath().substring(1);*/
+ /* switch (path){
+ case "pi/pro/data/v1/cash/balance/snapshot":
+ // because no
+ message=messageBefore+"data/v1/cash/balance/snapshot";
+ break;
+ case "pi/pro/data/v1/margin/balance/snapshot":
+ // because no
+ message=messageBefore+"data/v1/margin/balance/snapshot";
+ break;
+ case "pi/pro/data/v1/cash/balance/history":
+ // because no
+ message=messageBefore+"data/v1/cash/balance/history";
+ break;
+ case "pi/pro/data/v1/margin/balance/history":
+ // because no
+ message=messageBefore+"data/v1/margin/balance/history";
+ break;
+ case "pi/pro/v1/wallet/deposit/address":
+ // because no
+ message=messageBefore+"wallet/deposit/address";
+ break;
+ }*/
Mac mac256 = getMac();
mac256.update(message.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(mac256.doFinal()).trim();
}
+
+ private String getSignUrl(String path) {
+ if (path.contains("api/pro/v1/spot/fee")){
+ return "fee";
+ }
+ if (path.contains("api/pro/v1/margin/risk")){
+ return "margin/risk";
+ }
+ if (path.startsWith("api/pro/data/")){
+ return path.substring(8);
+ }
+ if (path.startsWith("api/pro/v1/wallet")){
+ return path.substring(11);
+ }
+ if (path.contains("cash")) {
+ return path.substring(path.lastIndexOf("cash") + 5);
+ } else if (path.contains("margin")) {
+ return path.substring(path.lastIndexOf("margin") + 7);
+ } else {
+ return path.substring(path.lastIndexOf("/") + 1);
+ }
+ }
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexMarketDataServiceRaw.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexMarketDataServiceRaw.java
index 65d09a0a414..1fdec6b26d5 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexMarketDataServiceRaw.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexMarketDataServiceRaw.java
@@ -3,12 +3,9 @@
import java.io.IOException;
import java.util.List;
import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
import org.knowm.xchange.ascendex.AscendexException;
-import org.knowm.xchange.ascendex.dto.marketdata.AscendexAssetDto;
-import org.knowm.xchange.ascendex.dto.marketdata.AscendexBarHistDto;
-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.marketdata.*;
public class AscendexMarketDataServiceRaw extends AscendexBaseService {
@@ -16,27 +13,55 @@ public AscendexMarketDataServiceRaw(Exchange exchange) {
super(exchange);
}
+ @Deprecated
public List getAllAssets() throws AscendexException, IOException {
return checkResult(ascendex.getAllAssets());
}
+ public List getAllAssetsV2() throws AscendexException, IOException {
+ return checkResult(ascendex.getAllAssetsV2());
+ }
public List getAllProducts() throws AscendexException, IOException {
return checkResult(ascendex.getAllProducts());
}
+ public List getAllProducts(AccountCategory accountCategory) throws AscendexException, IOException {
+ return checkResult(ascendex.getAllProducts(accountCategory));
+ }
+
+
+ public AscendexTickerDto getTicker(String symbol) throws AscendexException, IOException {
+ return checkResult(ascendex.getTicker(symbol.toUpperCase()));
+ }
+
+
+
public AscendexOrderbookDto getAscendexOrderbook(String symbol)
throws AscendexException, IOException {
- return checkResult(ascendex.getOrderbookDepth(symbol));
+ return checkResult(ascendex.getOrderbookDepth(symbol.toUpperCase()));
}
public AscendexMarketTradesDto getAscendexTrades(String symbol)
throws AscendexException, IOException {
- return checkResult(ascendex.getTrades(symbol));
+ return getAscendexTrades(symbol.toUpperCase(),10);
+ }
+
+ /**
+ *
+ * @param symbol symbol
+ * @param n any positive integer, capped at 100
+ * @return
+ * @throws AscendexException
+ * @throws IOException
+ */
+ public AscendexMarketTradesDto getAscendexTrades(String symbol,Integer n)
+ throws AscendexException, IOException {
+ return checkResult(ascendex.getTrades(symbol.toUpperCase(),Math.min(n,100)));
}
public List getBarHistoryData(
String symbol, String interval, Long to, Long from, Integer noOfBars)
throws AscendexException, IOException {
- return checkResult(ascendex.getHistoricalBarData(symbol, interval, to, from, noOfBars));
+ return checkResult(ascendex.getHistoricalBarData(symbol.toUpperCase(), interval, to, from, noOfBars));
}
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeService.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeService.java
index 60ccf9af6f3..085cb025b9b 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeService.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeService.java
@@ -4,6 +4,7 @@
import java.util.Collection;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.ascendex.AscendexAdapters;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
import org.knowm.xchange.dto.Order;
import org.knowm.xchange.dto.trade.LimitOrder;
import org.knowm.xchange.dto.trade.OpenOrders;
@@ -24,6 +25,7 @@ public AscendexTradeService(Exchange exchange) {
@Override
public String placeLimitOrder(LimitOrder limitOrder) throws IOException {
+
return placeAscendexOrder(
AscendexAdapters.adaptLimitOrderToAscendexPlaceOrderRequestPayload(limitOrder))
.getInfo()
@@ -33,7 +35,7 @@ public String placeLimitOrder(LimitOrder limitOrder) throws IOException {
@Override
public boolean cancelOrder(CancelOrderParams orderParams) throws IOException {
if (orderParams instanceof CancelOrderByCurrencyPair) {
- cancelAllAscendexOrdersBySymbol(
+ cancelAllAscendexOrdersBySymbol(AccountCategory.cash,
((CancelOrderByCurrencyPair) orderParams).getCurrencyPair().toString());
return true;
} else {
@@ -56,11 +58,11 @@ public OpenOrdersParams createOpenOrdersParams() {
public OpenOrders getOpenOrders(OpenOrdersParams params) throws IOException {
if (params instanceof OpenOrdersParamCurrencyPair) {
return AscendexAdapters.adaptOpenOrders(
- getAscendexOpenOrders(
+ getAscendexOpenOrders(AccountCategory.cash,
((OpenOrdersParamCurrencyPair) params).getCurrencyPair().toString()));
} else if (params instanceof OpenOrdersParamInstrument) {
return AscendexAdapters.adaptOpenOrders(
- getAscendexOpenOrders(((OpenOrdersParamInstrument) params).getInstrument().toString()));
+ getAscendexOpenOrders(AccountCategory.cash,((OpenOrdersParamInstrument) params).getInstrument().toString()));
} else {
throw new IOException(
"Params must be instanceOf OpenOrdersParamCurrencyPair or OpenOrdersParamInstrument in order to get openOrders from Ascendex.");
@@ -76,7 +78,7 @@ public TradeHistoryParams createTradeHistoryParams() {
public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException {
if (params instanceof TradeHistoryParamCurrencyPair) {
return AscendexAdapters.adaptUserTrades(
- getAscendexUserTrades(
+ getAscendexUserTrades(AccountCategory.cash,
((TradeHistoryParamCurrencyPair) params).getCurrencyPair().toString()));
} else {
throw new IOException(
@@ -86,14 +88,14 @@ public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException
@Override
public OpenOrders getOpenOrders() throws IOException {
- return AscendexAdapters.adaptOpenOrders(getAscendexOpenOrders(null));
+ return AscendexAdapters.adaptOpenOrders(getAscendexOpenOrders(AccountCategory.cash,null));
}
@Override
public Collection getOrder(OrderQueryParams... orderQueryParams) throws IOException {
if (orderQueryParams.length == 1) {
return AscendexAdapters.adaptOpenOrderById(
- getAscendexOrderById(orderQueryParams[0].getOrderId()));
+ getAscendexOrderById(AccountCategory.cash,orderQueryParams[0].getOrderId()));
} else {
throw new IOException("Ascendex only supports query with single id");
}
diff --git a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeServiceRaw.java b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeServiceRaw.java
index 332cbe2afa7..d124757b472 100644
--- a/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeServiceRaw.java
+++ b/xchange-ascendex/src/main/java/org/knowm/xchange/ascendex/service/AscendexTradeServiceRaw.java
@@ -2,89 +2,145 @@
import java.io.IOException;
import java.util.List;
+
import org.knowm.xchange.Exchange;
import org.knowm.xchange.ascendex.AscendexException;
-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;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
+import org.knowm.xchange.ascendex.dto.trade.*;
+
+import javax.ws.rs.QueryParam;
public class AscendexTradeServiceRaw extends AscendexBaseService {
- private static final String ACCOUNT_CASH_CATEGORY = "cash";
-
- public AscendexTradeServiceRaw(Exchange exchange) {
- super(exchange);
- }
-
- public AscendexOrderResponse placeAscendexOrder(AscendexPlaceOrderRequestPayload payload)
- throws AscendexException, IOException {
- return checkResult(
- ascendexAuthenticated.placeOrder(
- exchange.getExchangeSpecification().getApiKey(),
- exchange.getNonceFactory().createValue(),
- signatureCreator,
- ACCOUNT_CASH_CATEGORY,
- payload));
- }
-
- public AscendexOrderResponse cancelAscendexOrder(AscendexCancelOrderRequestPayload payload)
- throws AscendexException, IOException {
- return checkResult(
- ascendexAuthenticated.cancelOrder(
- exchange.getExchangeSpecification().getApiKey(),
- exchange.getNonceFactory().createValue(),
- signatureCreator,
- ACCOUNT_CASH_CATEGORY,
- payload.getOrderId(),
- payload.getSymbol(),
- payload.getTime()));
- }
-
- public AscendexOrderResponse cancelAllAscendexOrdersBySymbol(String symbol)
- throws AscendexException, IOException {
- return checkResult(
- ascendexAuthenticated.cancelAllOrders(
- exchange.getExchangeSpecification().getApiKey(),
- exchange.getNonceFactory().createValue(),
- signatureCreator,
- ACCOUNT_CASH_CATEGORY,
- symbol));
- }
-
- public List getAscendexOpenOrders(String symbol)
- throws AscendexException, IOException {
-
- return checkResult(
- ascendexAuthenticated.getOpenOrders(
- exchange.getExchangeSpecification().getApiKey(),
- exchange.getNonceFactory().createValue(),
- signatureCreator,
- ACCOUNT_CASH_CATEGORY,
- symbol));
- }
-
- public AscendexOpenOrdersResponse getAscendexOrderById(String orderId)
- throws AscendexException, IOException {
- return checkResult(
- ascendexAuthenticated.getOrderById(
- exchange.getExchangeSpecification().getApiKey(),
- exchange.getNonceFactory().createValue(),
- signatureCreator,
- ACCOUNT_CASH_CATEGORY,
- orderId));
- }
-
- public List getAscendexUserTrades(String symbol)
- throws AscendexException, IOException {
- return checkResult(
- ascendexAuthenticated.getOrdersHistory(
- exchange.getExchangeSpecification().getApiKey(),
- exchange.getNonceFactory().createValue(),
- signatureCreator,
- ACCOUNT_CASH_CATEGORY,
- 50,
- symbol,
- true));
- }
+ private static final String ACCOUNT_CASH_CATEGORY = "cash";
+
+ public AscendexTradeServiceRaw(Exchange exchange) {
+ super(exchange);
+ }
+
+ /**
+ * default cash
+ *
+ * @param payload
+ * @return
+ * @throws AscendexException
+ * @throws IOException
+ */
+ public AscendexOrderResponse placeAscendexOrder(AscendexPlaceOrderRequestPayload payload)
+ throws AscendexException, IOException {
+
+ return placeAscendexOrder(payload, AccountCategory.cash);
+ }
+
+
+ public AscendexOrderResponse placeAscendexOrder(AscendexPlaceOrderRequestPayload payload, AccountCategory accountCategory)
+ throws AscendexException, IOException {
+
+ return checkResult(
+ ascendexAuthenticated.placeOrder(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ accountCategory,
+ payload));
+ }
+
+ public AscendexOrderResponse cancelAscendexOrder(AscendexCancelOrderRequestPayload payload)
+ throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.cancelOrder(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ payload.getAccountCategory(),
+ payload));
+ }
+
+ public AscendexOrderResponse cancelAllAscendexOrdersBySymbol(AccountCategory accountCategory, String symbol)
+ throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.cancelAllOrders(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ accountCategory,
+ symbol == null ? null : symbol.toUpperCase()));
+ }
+
+ public List getAscendexOpenOrders(AccountCategory accountCategory, String symbol)
+ throws AscendexException, IOException {
+
+ return checkResult(
+ ascendexAuthenticated.getOpenOrders(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ accountCategory,
+ symbol == null ? symbol : symbol.toUpperCase()));
+ }
+
+ public AscendexOpenOrdersResponse getAscendexOrderById(AccountCategory accountCategory, String orderId)
+ throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getOrderById(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ accountCategory,
+ orderId));
+ }
+
+ public List getAscendexUserTrades(AccountCategory accountCategory, String symbol)
+ throws AscendexException, IOException {
+ return getAscendexUserTrades(accountCategory,
+ symbol,
+ 50,
+ true);
+ }
+
+ public List getAscendexUserTrades(AccountCategory accountCategory, String symbol, Integer size, Boolean executedOnly)
+ throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getOrdersHistory(
+ exchange.getExchangeSpecification().getExchangeSpecificParametersItem("account-group").toString(),
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ accountCategory,
+ size,
+ symbol == null ? symbol : symbol.toUpperCase(),
+ executedOnly));
+ }
+
+ public List getAscendexOrdersHistoryV2(AccountCategory accountCategory)throws AscendexException, IOException {
+ return getAscendexOrdersHistoryV2(accountCategory,null,null,null,null,null);
+ }
+
+ public List getAscendexOrdersHistoryV2(AccountCategory accountCategory,
+ String symbol,
+ Long startTime,
+ Long endTime,
+ Long seqNum,
+ Integer limit)
+ throws AscendexException, IOException {
+ return checkResult(
+ ascendexAuthenticated.getOrdersHistoryV2(
+ exchange.getExchangeSpecification().getApiKey(),
+ exchange.getNonceFactory().createValue(),
+ signatureCreator,
+ accountCategory,
+ symbol == null ? symbol : symbol.toUpperCase(),
+ startTime,
+ endTime,
+ seqNum,
+ limit
+
+ )
+ );
+ }
}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Account/AscendexAccountTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Account/AscendexAccountTest.java
new file mode 100644
index 00000000000..b730712acb1
--- /dev/null
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Account/AscendexAccountTest.java
@@ -0,0 +1,75 @@
+package org.knowm.xchange.ascendex.Account;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ExchangeFactory;
+import org.knowm.xchange.ExchangeSpecification;
+import org.knowm.xchange.ascendex.AscendexExchange;
+import org.knowm.xchange.ascendex.dto.account.*;
+import org.knowm.xchange.ascendex.service.AscendexAccountServiceRaw;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Package:org.knowm.xchange.ascendex.Account
+ * Description:
+ *
+ * @date:2022/7/14 21:11
+ * @author:wodepig
+ */
+public class AscendexAccountTest {
+
+ private AscendexAccountServiceRaw serviceRaw;
+ // @Before
+ public void getAccountServiceRaw() throws IOException {
+ InputStream is =
+ org.knowm.xchange.ascendex.AscendexMarketDataJSONTest.class.getResourceAsStream(
+ "/org/knowm/xchange/ascendex/ascendexApiInfo.json");
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode tree = mapper.readTree(is);
+ ExchangeSpecification exSpec = new AscendexExchange().getDefaultExchangeSpecification();
+ exSpec.setSslUri("https://asdx.me/");
+ exSpec.setApiKey(tree.get("apiKey").asText());
+ exSpec.setSecretKey(tree.get("secretKey").asText());
+ exSpec.setExchangeSpecificParametersItem("account-group",tree.get("accountGroup").asInt());
+ exSpec.setShouldLoadRemoteMetaData(false);
+ Exchange exchange = ExchangeFactory.INSTANCE.createExchange(exSpec);
+ serviceRaw = (AscendexAccountServiceRaw)exchange.getAccountService();
+
+ }
+ // @Test
+ public void testAscendexAccount()throws IOException {
+ AscendexAccountInfoDto info = serviceRaw.getAscendexAccountInfo();
+ Assert.assertTrue(info!=null&&info.getEmail()!=null);
+ }
+
+ // @Test
+ public void testVIPFeeSchedule()throws IOException {
+ AscendexVIPFeeScheduleDto vipFeeSchedule = serviceRaw.getAscendexVIPFeeSchedule();
+ Assert.assertTrue(vipFeeSchedule!=null&&vipFeeSchedule.getUserUID()!=null);
+
+ }
+
+ // @Test
+ public void testSymbolFee()throws IOException {
+ AscendexSymbolFeeDto symbolFee = serviceRaw.getAscendexSymbolFee();
+ Assert.assertTrue(symbolFee!=null&&symbolFee.getProductFee().size()>10);
+ }
+ // @Test
+ public void testRiskLimitInfo()throws IOException {
+ AscendexRiskLimitInfoDto riskLimitInfo = serviceRaw.getAscendexRiskLimitInfo();
+ Assert.assertTrue(riskLimitInfo!=null&&riskLimitInfo.getWebSocket()!=null);
+ }
+ // @Test
+ public void testExchangeLatencyInfoDto()throws IOException {
+ long sendTime = System.currentTimeMillis();
+ AscendexExchangeLatencyInfoDto exchangeLatencyInfoDto = serviceRaw.getAscendexExchangeLatencyInfo(sendTime);
+ Assert.assertNotNull(exchangeLatencyInfoDto);
+ }
+
+}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataIntegrationTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataIntegrationTest.java
deleted file mode 100644
index d7cc7b7cfbe..00000000000
--- a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataIntegrationTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.knowm.xchange.ascendex;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Objects;
-import org.junit.Assert;
-import org.junit.Test;
-import org.knowm.xchange.Exchange;
-import org.knowm.xchange.ExchangeFactory;
-import org.knowm.xchange.ascendex.dto.marketdata.AscendexBarHistDto;
-import org.knowm.xchange.ascendex.service.AscendexMarketDataService;
-
-public class AscendexMarketDataIntegrationTest {
-
- @Test
- public void testBarHist() throws IOException {
- Exchange exchange =
- ExchangeFactory.INSTANCE.createExchange(AscendexExchange.class.getCanonicalName());
- exchange.remoteInit();
-
- List barHistDtos =
- ((AscendexMarketDataService) exchange.getMarketDataService())
- .getBarHistoryData("BTC/USDT", "15", null, null, 100);
- Assert.assertTrue(Objects.nonNull(barHistDtos) && !barHistDtos.isEmpty());
- }
-}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataJSONTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataJSONTest.java
index 54bda5d5391..7734b59af6b 100644
--- a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataJSONTest.java
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/AscendexMarketDataJSONTest.java
@@ -10,30 +10,13 @@
import java.util.List;
import org.junit.Test;
import org.knowm.xchange.ascendex.dto.AscendexResponse;
+import org.knowm.xchange.ascendex.dto.enums.AscendexAssetStatus;
import org.knowm.xchange.ascendex.dto.marketdata.AscendexAssetDto;
import org.knowm.xchange.ascendex.dto.marketdata.AscendexOrderbookDto;
import org.knowm.xchange.ascendex.dto.marketdata.AscendexProductDto;
public class AscendexMarketDataJSONTest {
- @Test
- public void ascendexAssetDtoTest() throws IOException {
-
- // Read in the JSON from the example resources
- InputStream is =
- AscendexMarketDataJSONTest.class.getResourceAsStream(
- "/org/knowm/xchange/ascendex/ascendexAssetsResponseExample.json");
-
- // Use Jackson to parse it
- ObjectMapper mapper = new ObjectMapper();
- AscendexResponse> ascendexAssets =
- mapper.readValue(is, new TypeReference>>() {});
-
- // Verify that the example data was unmarshalled correctly
- assertThat(ascendexAssets.getData().size()).isEqualTo(1);
- assertThat(ascendexAssets.getData().get(0).getStatus())
- .isEqualTo(AscendexAssetDto.AscendexAssetStatus.Normal);
- }
@Test
public void ascendexProductDtoTest() throws IOException {
@@ -51,7 +34,7 @@ public void ascendexProductDtoTest() throws IOException {
// Verify that the example data was unmarshalled correctly
assertThat(ascendexAssets.getData().size()).isEqualTo(1);
assertThat(ascendexAssets.getData().get(0).getStatus())
- .isEqualTo(AscendexAssetDto.AscendexAssetStatus.Normal);
+ .isEqualTo(AscendexAssetStatus.Normal);
}
@Test
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Balance/AscendexBalanceTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Balance/AscendexBalanceTest.java
new file mode 100644
index 00000000000..01ef116cf43
--- /dev/null
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Balance/AscendexBalanceTest.java
@@ -0,0 +1,95 @@
+package org.knowm.xchange.ascendex.Balance;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ExchangeFactory;
+import org.knowm.xchange.ExchangeSpecification;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
+import org.knowm.xchange.ascendex.AscendexExchange;
+import org.knowm.xchange.ascendex.dto.balance.*;
+import org.knowm.xchange.ascendex.service.AscendexAccountServiceRaw;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.balance
+ * Description:
+ *
+ * @date:2022/7/16 21:37
+ * @author:wodepig
+ */
+public class AscendexBalanceTest {
+ private AscendexAccountServiceRaw serviceRaw;
+ // @Before
+ public void getAccountServiceRaw() throws IOException {
+ InputStream is =
+ org.knowm.xchange.ascendex.AscendexMarketDataJSONTest.class.getResourceAsStream(
+ "/org/knowm/xchange/ascendex/ascendexApiInfo.json");
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode tree = mapper.readTree(is);
+ ExchangeSpecification exSpec = new AscendexExchange().getDefaultExchangeSpecification();
+ exSpec.setSslUri("https://asdx.me/");
+ exSpec.setApiKey(tree.get("apiKey").asText());
+ exSpec.setSecretKey(tree.get("secretKey").asText());
+ exSpec.setExchangeSpecificParametersItem("account-group",tree.get("accountGroup").asInt());
+ exSpec.setShouldLoadRemoteMetaData(false);
+ Exchange exchange = ExchangeFactory.INSTANCE.createExchange(exSpec);
+ serviceRaw = (AscendexAccountServiceRaw)exchange.getAccountService();
+
+ }
+
+ // @Test
+ public void testCashAccountBalance()throws IOException{
+ List cash = serviceRaw.getAscendexCashAccountBalance();
+ List cash1 = serviceRaw.getAscendexCashAccountBalance("TRX",true);
+ Assert.assertNotNull(cash);
+ Assert.assertNotNull(cash1);
+
+ }
+
+ // @Test
+ public void testMarginAccountBalance()throws IOException{
+ List cash = serviceRaw.getAscendexMarginAccountBalance();
+ List cash1 = serviceRaw.getAscendexMarginAccountBalance("TRX",false);
+ Assert.assertNotNull(cash);
+
+ }
+
+ // @Test
+ public void testAscendexMarginRiskDto()throws IOException{
+ AscendexMarginRiskDto ascendexMarginRiskDto = serviceRaw.getAscendexMarginRisk();
+ Assert.assertNotNull(ascendexMarginRiskDto);
+ }
+
+ // @Test
+ public void testAscendexBalanceTransfer()throws IOException{
+ AscendexBalanceTransferRequestPayload payload= new AscendexBalanceTransferRequestPayload( "100",
+ "ABCD",
+ AccountCategory.cash,
+ AccountCategory.margin);
+ Boolean transfer = serviceRaw.getAscendexBalanceTransfer(payload);
+ Assert.assertFalse(transfer);
+ }
+
+ // @Test
+ public void testAscendexBalanceSnapshot()throws IOException{
+ AscendexBalanceSnapshotDto cashSnapshot = serviceRaw.getAscendexBalanceSnapshot("2022-07-16",AccountCategory.margin);
+ Assert.assertNotNull(cashSnapshot);
+ }
+
+ // @Test
+ public void testAscendexOrderAndBalanceDetail()throws IOException{
+ /**
+ * TODO https://github.com/ascendex/ascendex-pro-api-demo/blob/4aac308813f0dabd5765f1ad1641537c595ba1d4/python/query_balance_and_order_fills.py
+ */
+ AscendexOrderAndBalanceDetailDto detailDto = serviceRaw.getAscendexOrderAndBalanceDetail("2022-07-18",AccountCategory.cash);
+ Assert.assertNotNull(detailDto);
+ }
+
+}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/MarketData/AscendexMarketDataJSONTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/MarketData/AscendexMarketDataJSONTest.java
new file mode 100644
index 00000000000..61503ebd91b
--- /dev/null
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/MarketData/AscendexMarketDataJSONTest.java
@@ -0,0 +1,46 @@
+package org.knowm.xchange.ascendex.MarketData;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Test;
+import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ExchangeFactory;
+import org.knowm.xchange.ascendex.AscendexExchange;
+import org.knowm.xchange.ascendex.dto.AscendexResponse;
+import org.knowm.xchange.ascendex.dto.enums.AscendexAssetStatus;
+import org.knowm.xchange.ascendex.dto.marketdata.AscendexAssetDto;
+import org.knowm.xchange.ascendex.dto.marketdata.AscendexBarHistDto;
+import org.knowm.xchange.ascendex.service.AscendexMarketDataService;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Objects;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class AscendexMarketDataJSONTest {
+
+ @Test
+ public void ascendexAssetDtoTest() throws IOException {
+
+ // Read in the JSON from the example resources
+ InputStream is =
+ org.knowm.xchange.ascendex.AscendexMarketDataJSONTest.class.getResourceAsStream(
+ "/org/knowm/xchange/ascendex/MarketData/ascendexAssetsResponseExample.json");
+
+ // Use Jackson to parse it
+ ObjectMapper mapper = new ObjectMapper();
+ AscendexResponse> ascendexAssets =
+ mapper.readValue(is, new TypeReference>>() {});
+
+ // Verify that the example data was unmarshalled correctly
+ assertThat(ascendexAssets.getData().size()).isEqualTo(2);
+ assertThat(ascendexAssets.getData().get(0).getStatus())
+ .isEqualTo(AscendexAssetStatus.Normal);
+ assertThat(ascendexAssets.getData().get(0).getWithdrawFee())
+ .isEqualTo(new BigDecimal("30.0"));
+ }
+}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/MarketData/AscendexMarketDataTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/MarketData/AscendexMarketDataTest.java
new file mode 100644
index 00000000000..b1dcaad5dda
--- /dev/null
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/MarketData/AscendexMarketDataTest.java
@@ -0,0 +1,111 @@
+package org.knowm.xchange.ascendex.MarketData;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ExchangeFactory;
+import org.knowm.xchange.ExchangeSpecification;
+import org.knowm.xchange.ascendex.dto.enums.AccountCategory;
+import org.knowm.xchange.ascendex.AscendexExchange;
+import org.knowm.xchange.ascendex.dto.marketdata.*;
+import org.knowm.xchange.ascendex.service.AscendexMarketDataServiceRaw;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class AscendexMarketDataTest {
+
+ public Exchange getExchange() throws IOException{
+ ExchangeSpecification exSpec = new AscendexExchange().getDefaultExchangeSpecification();
+ exSpec.setSslUri("https://asdx.me/");
+ exSpec.setShouldLoadRemoteMetaData(false);
+ return ExchangeFactory.INSTANCE.createExchange(exSpec);
+ }
+
+ // @Test
+ public void testAllAsset() throws IOException{
+ Exchange asdx = getExchange();
+ AscendexMarketDataServiceRaw marketData = (AscendexMarketDataServiceRaw) asdx.getMarketDataService();
+ //List allAssets = marketData.getAllAssets();
+ List allAssetsV2 = marketData.getAllAssetsV2();
+ Assert.assertTrue(Objects.nonNull(allAssetsV2));
+ List collect = allAssetsV2.stream().filter(asset -> {
+ return "BTC".equals(asset.getAssetCode());
+ }).collect(Collectors.toList());
+ assertThat(collect.size()).isEqualTo(1);
+ assertThat(collect.get(0).getBlockChain().size()).isEqualTo(1);
+ System.out.println();
+ }
+
+ // @Test
+ public void testAllProducts() throws IOException{
+ Exchange asdx = getExchange();
+ // allProducts
+ AscendexMarketDataServiceRaw marketData = (AscendexMarketDataServiceRaw) asdx.getMarketDataService();
+ List allProducts = marketData.getAllProducts();
+ List collect = allProducts.stream().filter(asset -> {
+ return "BTC/USDT".equals(asset.getSymbol());
+ }).collect(Collectors.toList());
+ assertThat(collect.size()).isEqualTo(1);
+ assertThat(collect.get(0).getBaseAsset()).isEqualTo("BTC");
+ assertThat(collect.get(0).getSymbol()).isEqualTo("BTC/USDT");
+
+ // according to margin
+ List marginProducts = marketData.getAllProducts(AccountCategory.margin);
+ List margins = marginProducts.stream().filter(asset -> {
+ return "BTC/USDT".equals(asset.getSymbol());
+ }).collect(Collectors.toList());
+ assertThat(margins.size()).isEqualTo(1);
+ assertThat(margins.get(0).isUseLot()).isEqualTo(false);
+ assertThat(margins.get(0).getSymbol()).isEqualTo("BTC/USDT");
+
+ }
+ // @Test
+ public void testTicker()throws IOException{
+ Exchange asdx = getExchange();
+ AscendexMarketDataServiceRaw marketData = (AscendexMarketDataServiceRaw) asdx.getMarketDataService();
+ AscendexTickerDto ticker = marketData.getTicker("ASD/USDT");
+ Assert.assertTrue(Objects.nonNull(ticker));
+ assertThat(ticker.getSymbol()).isEqualTo("ASD/USDT");
+ assertThat(ticker.getAsk().size()).isEqualTo(2);
+ }
+ public static void main(String[] args) {
+ }
+
+
+ // @Test
+ public void testBarHist() throws IOException {
+ Exchange asdx = getExchange();
+ AscendexMarketDataServiceRaw marketData = (AscendexMarketDataServiceRaw) asdx.getMarketDataService();
+ List barHistDtos = marketData.getBarHistoryData("BTC/USDT", "15", null, null, 100);
+ /*
+ Exchange exchange =
+ ExchangeFactory.INSTANCE.createExchange(AscendexExchange.class.getCanonicalName());
+ exchange.remoteInit();
+
+ List barHistDtos =
+ ((AscendexMarketDataService) exchange.getMarketDataService())
+ .getBarHistoryData("BTC/USDT", "15", null, null, 100);*/
+ Assert.assertTrue(Objects.nonNull(barHistDtos) && !barHistDtos.isEmpty());
+ }
+ // @Test
+ public void getOrderbookDepth() throws IOException {
+ Exchange asdx = getExchange();
+ AscendexMarketDataServiceRaw marketData = (AscendexMarketDataServiceRaw) asdx.getMarketDataService();
+ AscendexOrderbookDto orderbook = marketData.getAscendexOrderbook("ASD/USDT");
+
+ Assert.assertTrue(Objects.nonNull(orderbook) && !orderbook.getData().getAsks().isEmpty());
+ }
+
+ // @Test
+ public void getMarketTrades() throws IOException {
+ Exchange asdx = getExchange();
+ AscendexMarketDataServiceRaw marketData = (AscendexMarketDataServiceRaw) asdx.getMarketDataService();
+ AscendexMarketTradesDto ascendexTrades = marketData.getAscendexTrades("ASD/USDT",20);
+ Assert.assertTrue(Objects.nonNull(ascendexTrades) && ascendexTrades.getData().size()==20);
+ }
+}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Order/AscendexOrderTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Order/AscendexOrderTest.java
new file mode 100644
index 00000000000..a97eb028f86
--- /dev/null
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Order/AscendexOrderTest.java
@@ -0,0 +1,110 @@
+package org.knowm.xchange.ascendex.Order;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ExchangeFactory;
+import org.knowm.xchange.ExchangeSpecification;
+import org.knowm.xchange.ascendex.AscendexExchange;
+import org.knowm.xchange.ascendex.dto.enums.*;
+import org.knowm.xchange.ascendex.dto.trade.*;
+import org.knowm.xchange.ascendex.service.AscendexAccountServiceRaw;
+import org.knowm.xchange.ascendex.service.AscendexTradeService;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Package:org.knowm.xchange.ascendex.Order
+ * Description:
+ *
+ * @date:2022/7/20 12:27
+ * @author:wodepig
+ */
+public class AscendexOrderTest {
+ private AscendexTradeService serviceRaw;
+ @Before
+ public void getAccountServiceRaw() throws IOException {
+ InputStream is =
+ org.knowm.xchange.ascendex.AscendexMarketDataJSONTest.class.getResourceAsStream(
+ "/org/knowm/xchange/ascendex/ascendexApiInfo.json");
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode tree = mapper.readTree(is);
+ ExchangeSpecification exSpec = new AscendexExchange().getDefaultExchangeSpecification();
+ exSpec.setSslUri("https://asdx.me/");
+ exSpec.setApiKey(tree.get("apiKey").asText());
+ exSpec.setSecretKey(tree.get("secretKey").asText());
+ exSpec.setExchangeSpecificParametersItem("account-group",tree.get("accountGroup").asInt());
+ exSpec.setShouldLoadRemoteMetaData(false);
+ Exchange exchange = ExchangeFactory.INSTANCE.createExchange(exSpec);
+ serviceRaw = (AscendexTradeService)exchange.getTradeService();
+
+ }
+ // @Test
+ public void testPlaceOrder()throws IOException{
+ /* AscendexPlaceOrderRequestPayload paylod = new AscendexPlaceOrderRequestPayload(
+ "TRX/USDT",new Date().getTime(),"100", AscendexOrderType.limit, AscendexSide.buy,
+ null,"0.07",null,false, AscendexTimeInForce.GTC, AscendexRespInst.ACK
+ );*/
+ AscendexPlaceOrderRequestPayload paylod = new AscendexPlaceOrderRequestPayload("TRX/USDT",
+ "100","0.06",AscendexOrderType.limit, AscendexSide.sell);
+ AscendexOrderResponse ascendexOrderResponse = serviceRaw.placeAscendexOrder(paylod);
+ Assert.assertNotNull(ascendexOrderResponse);
+ }
+ // @Test
+ public void testCancelOrder()throws IOException{
+ AscendexCancelOrderRequestPayload payload = new AscendexCancelOrderRequestPayload(
+ "a1821a8c3afbU2171064316LjoPeBWda",
+ "TRX/USDT",
+ new Date().getTime(),
+ AccountCategory.cash
+ );
+ AscendexOrderResponse ascendexOrderResponse = serviceRaw.cancelAscendexOrder(payload);
+ Assert.assertNotNull(ascendexOrderResponse);
+
+ }
+
+ // @Test
+ public void testCancelOrderAll()throws IOException{
+ AscendexOrderResponse ascendexOrderResponse = serviceRaw.cancelAllAscendexOrdersBySymbol(AccountCategory.cash,null);
+ Assert.assertNotNull(ascendexOrderResponse);
+
+ }
+
+ // @Test
+ public void testGetOrderById()throws IOException {
+ AscendexOpenOrdersResponse ascendexOrderById = serviceRaw.getAscendexOrderById(AccountCategory.cash,"r1821b163db0U2171064316WI9qpS5zs");
+ Assert.assertNotNull(ascendexOrderById);
+ }
+ // @Test
+ public void testOpenOrders()throws IOException {
+ List ascendexOpenOrders = serviceRaw.getAscendexOpenOrders(AccountCategory.cash,"TRX/USDT");
+ Assert.assertNotNull(ascendexOpenOrders);
+ }
+
+ // @Test
+ public void testOrdersHistory()throws IOException {
+ List ascendexUserTrades = serviceRaw.getAscendexUserTrades(AccountCategory.cash,"TRX/USDT",1,true);
+ Assert.assertNotNull(ascendexUserTrades);
+ }
+
+ // @Test
+ public void testOrdersHistoryV2()throws IOException {
+ List cash = serviceRaw.getAscendexOrdersHistoryV2(AccountCategory.cash);
+ Assert.assertNotNull(cash);
+ List cashTrx = serviceRaw.getAscendexOrdersHistoryV2(AccountCategory.cash,
+ "TRx/usdt",
+ 1655722674000L,
+ 1658314674000L,
+ 1L,
+ 10
+ );
+ Assert.assertNotNull(cashTrx);
+ };
+
+}
diff --git a/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Wallet/AscendexWalletTest.java b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Wallet/AscendexWalletTest.java
new file mode 100644
index 00000000000..ca63c53fb52
--- /dev/null
+++ b/xchange-ascendex/src/test/java/org/knowm/xchange/ascendex/Wallet/AscendexWalletTest.java
@@ -0,0 +1,66 @@
+package org.knowm.xchange.ascendex.Wallet;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.knowm.xchange.Exchange;
+import org.knowm.xchange.ExchangeFactory;
+import org.knowm.xchange.ExchangeSpecification;
+import org.knowm.xchange.ascendex.AscendexExchange;
+import org.knowm.xchange.ascendex.dto.enums.AscendexTransactionType;
+import org.knowm.xchange.ascendex.dto.wallet.AscendDepositAddressesDto;
+import org.knowm.xchange.ascendex.dto.wallet.AscendexWalletTransactionHistoryDto;
+
+import org.knowm.xchange.ascendex.service.AscendexAccountServiceRaw;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Package:org.knowm.xchange.ascendex.wallet
+ * Description:
+ *
+ * @date:2022/7/18 11:57
+ * @author:wodepig
+ */
+public class AscendexWalletTest {
+ private AscendexAccountServiceRaw serviceRaw;
+ // @Before
+ public void getAccountServiceRaw() throws IOException {
+ InputStream is =
+ org.knowm.xchange.ascendex.AscendexMarketDataJSONTest.class.getResourceAsStream(
+ "/org/knowm/xchange/ascendex/ascendexApiInfo.json");
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode tree = mapper.readTree(is);
+ ExchangeSpecification exSpec = new AscendexExchange().getDefaultExchangeSpecification();
+ exSpec.setSslUri("https://asdx.me/");
+ exSpec.setApiKey(tree.get("apiKey").asText());
+ exSpec.setSecretKey(tree.get("secretKey").asText());
+ exSpec.setExchangeSpecificParametersItem("account-group",tree.get("accountGroup").asInt());
+ exSpec.setShouldLoadRemoteMetaData(false);
+ Exchange exchange = ExchangeFactory.INSTANCE.createExchange(exSpec);
+ serviceRaw = (AscendexAccountServiceRaw)exchange.getAccountService();
+
+ }
+
+ // @Test
+ public void testAscendDepositAddresses()throws IOException{
+ AscendDepositAddressesDto sdt = serviceRaw.getAscendDepositAddresses("USDT");
+ Assert.assertTrue(sdt.getAddress().size()>2);
+ AscendDepositAddressesDto usdtErc20 = serviceRaw.getAscendDepositAddresses("USDT", "erc20");
+ Assert.assertEquals(1, usdtErc20.getAddress().size());
+ }
+
+ // @Test
+ public void testAscendexWalletTransactionHistory()throws IOException{
+
+ AscendexWalletTransactionHistoryDto allHistory = serviceRaw.getAscendexWalletTransactionHistory();
+ Assert.assertTrue(allHistory.getData().size()>0);
+ AscendexWalletTransactionHistoryDto transactionHistory = serviceRaw.getAscendexWalletTransactionHistory(
+ "btc", AscendexTransactionType.withdrawal,1,5
+ );
+ Assert.assertNotNull(transactionHistory);
+ }
+}
diff --git a/xchange-ascendex/src/test/resources/org/knowm/xchange/ascendex/MarketData/ascendexAssetsResponseExample.json b/xchange-ascendex/src/test/resources/org/knowm/xchange/ascendex/MarketData/ascendexAssetsResponseExample.json
new file mode 100644
index 00000000000..9e2fd09666e
--- /dev/null
+++ b/xchange-ascendex/src/test/resources/org/knowm/xchange/ascendex/MarketData/ascendexAssetsResponseExample.json
@@ -0,0 +1,39 @@
+{
+ "code": 0,
+ "data": [
+ {
+ "assetCode": "USDT",
+ "assetName": "Tether",
+ "precisionScale": 9,
+ "nativeScale": 4,
+ "blockChain": [
+ {
+ "chainName": "Omni",
+ "withdrawFee": "30.0",
+ "allowDeposit": true,
+ "allowWithdraw": true,
+ "minDepositAmt": "0.0",
+ "minWithdrawal": "50.0",
+ "numConfirmations": 3
+ },
+ {
+ "chainName": "ERC20",
+ "withdrawFee": "10.0",
+ "allowDeposit": true,
+ "allowWithdraw": true,
+ "minDepositAmt": "0.0",
+ "minWithdrawal": "20.0",
+ "numConfirmations": 12
+ }
+ ]
+ },
+ {
+ "assetCode" : "CSPR-S",
+ "assetName" : "CasperLabs Staking",
+ "precisionScale" : 8,
+ "nativeScale" : 3,
+ "blockChain" : [
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/xchange-ascendex/src/test/resources/org/knowm/xchange/ascendex/ascendexApiInfo.json b/xchange-ascendex/src/test/resources/org/knowm/xchange/ascendex/ascendexApiInfo.json
new file mode 100644
index 00000000000..cca68fc5b64
--- /dev/null
+++ b/xchange-ascendex/src/test/resources/org/knowm/xchange/ascendex/ascendexApiInfo.json
@@ -0,0 +1,5 @@
+{
+ "apiKey": "your apiKey",
+ "secretKey": "your secretKey",
+ "accountGroup": "your accountGroup"
+}
\ No newline at end of file