Skip to content

Commit

Permalink
Merge pull request #5000 from herman-korolevsky/develop
Browse files Browse the repository at this point in the history
[Kraken] - Pass and receive client order id correctly. User reference…
  • Loading branch information
timmolter authored Feb 17, 2025
2 parents 3336c54 + fcdee8c commit 5f717b9
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -225,12 +225,16 @@ public KrakenOrderResponse placeKrakenLimitOrder(LimitOrder limitOrder) throws I
type,
limitOrder.getLimitPrice().toPlainString(),
limitOrder.getOriginalAmount())
.withUserRefId(limitOrder.getUserReference())
.withOrderFlags(limitOrder.getOrderFlags())
.withLeverage(limitOrder.getLeverage())
.withTimeInForce(timeInForceFromOrder(limitOrder).orElse(null));

getClientOrderId(limitOrder).ifPresent(krakenOrderBuilder::withClientOrderId);
Optional<String> clientOrderId = getClientOrderId(limitOrder);
if (clientOrderId.isPresent()) {
krakenOrderBuilder.withClientOrderId(clientOrderId.get());
} else {
krakenOrderBuilder.withUserRefId(limitOrder.getUserReference());
}

return placeKrakenOrder(krakenOrderBuilder.buildOrder());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ else if ("stop".equals(orderType))
.timestamp(dto.opentm == null ? null : new Date((long) (dto.opentm * 1000L)))
.fee(dto.fee)
.flags(adaptFlags(dto.oflags))
.userReference(dto.userref == null ? null : Integer.toString(dto.userref))
.userReference(resolveUserReference(dto.cl_ord_id, dto.userref))
.build());
}
}
Expand Down Expand Up @@ -220,9 +220,16 @@ private List<UserTrade> adaptKrakenUserTrade(KrakenDtoUserTradeHolder[] ownTrade
.feeAmount(dto.fee)
.feeCurrency(currencyPair.counter)
.originalAmount(dto.vol)
.orderUserReference(resolveUserReference(dto.cl_ord_id, dto.userref))
.build());
}
}
return result;
}

private static String resolveUserReference(String cl_ord_id, Integer userref) {
return cl_ord_id == null
? userref == null ? null : Integer.toString(userref)
: cl_ord_id;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

import java.math.BigDecimal;

/** https://docs.kraken.com/websockets/#message-openOrders */
/** https://docs.kraken.com/api/docs/websocket-v1/openorders */
public class KrakenOpenOrder {
/** Referral order transaction id that created this order */
public String refid;

/** user reference id */
public Integer userref;

/** an optional, alphanumeric client identifier associated with this order */
public String cl_ord_id;

/** status of order: */
public String status;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ public class KrakenOwnTrade {
/** order responsible for execution of trade */
public String ordertxid;

/** an optional, alphanumeric client identifier associated with this order. Available on update messages only. */
public String cl_ord_id;

/** an optional, numeric identifier associated with one or more orders. Available on update messages only. */
public Integer userref;

/** Position trade id */
public String postxid;

Expand Down

0 comments on commit 5f717b9

Please sign in to comment.