Skip to content

Commit 5f717b9

Browse files
authored
Merge pull request #5000 from herman-korolevsky/develop
[Kraken] - Pass and receive client order id correctly. User reference…
2 parents 3336c54 + fcdee8c commit 5f717b9

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

xchange-kraken/src/main/java/org/knowm/xchange/kraken/service/KrakenTradeServiceRaw.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,16 @@ public KrakenOrderResponse placeKrakenLimitOrder(LimitOrder limitOrder) throws I
225225
type,
226226
limitOrder.getLimitPrice().toPlainString(),
227227
limitOrder.getOriginalAmount())
228-
.withUserRefId(limitOrder.getUserReference())
229228
.withOrderFlags(limitOrder.getOrderFlags())
230229
.withLeverage(limitOrder.getLeverage())
231230
.withTimeInForce(timeInForceFromOrder(limitOrder).orElse(null));
232231

233-
getClientOrderId(limitOrder).ifPresent(krakenOrderBuilder::withClientOrderId);
232+
Optional<String> clientOrderId = getClientOrderId(limitOrder);
233+
if (clientOrderId.isPresent()) {
234+
krakenOrderBuilder.withClientOrderId(clientOrderId.get());
235+
} else {
236+
krakenOrderBuilder.withUserRefId(limitOrder.getUserReference());
237+
}
234238

235239
return placeKrakenOrder(krakenOrderBuilder.buildOrder());
236240
}

xchange-stream-kraken/src/main/java/info/bitrich/xchangestream/kraken/KrakenStreamingTradeService.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ else if ("stop".equals(orderType))
137137
.timestamp(dto.opentm == null ? null : new Date((long) (dto.opentm * 1000L)))
138138
.fee(dto.fee)
139139
.flags(adaptFlags(dto.oflags))
140-
.userReference(dto.userref == null ? null : Integer.toString(dto.userref))
140+
.userReference(resolveUserReference(dto.cl_ord_id, dto.userref))
141141
.build());
142142
}
143143
}
@@ -220,9 +220,16 @@ private List<UserTrade> adaptKrakenUserTrade(KrakenDtoUserTradeHolder[] ownTrade
220220
.feeAmount(dto.fee)
221221
.feeCurrency(currencyPair.counter)
222222
.originalAmount(dto.vol)
223+
.orderUserReference(resolveUserReference(dto.cl_ord_id, dto.userref))
223224
.build());
224225
}
225226
}
226227
return result;
227228
}
229+
230+
private static String resolveUserReference(String cl_ord_id, Integer userref) {
231+
return cl_ord_id == null
232+
? userref == null ? null : Integer.toString(userref)
233+
: cl_ord_id;
234+
}
228235
}

xchange-stream-kraken/src/main/java/info/bitrich/xchangestream/kraken/dto/KrakenOpenOrder.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
import java.math.BigDecimal;
44

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

1010
/** user reference id */
1111
public Integer userref;
1212

13+
/** an optional, alphanumeric client identifier associated with this order */
14+
public String cl_ord_id;
15+
1316
/** status of order: */
1417
public String status;
1518

xchange-stream-kraken/src/main/java/info/bitrich/xchangestream/kraken/dto/KrakenOwnTrade.java

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ public class KrakenOwnTrade {
66
/** order responsible for execution of trade */
77
public String ordertxid;
88

9+
/** an optional, alphanumeric client identifier associated with this order. Available on update messages only. */
10+
public String cl_ord_id;
11+
12+
/** an optional, numeric identifier associated with one or more orders. Available on update messages only. */
13+
public Integer userref;
14+
915
/** Position trade id */
1016
public String postxid;
1117

0 commit comments

Comments
 (0)