Skip to content

Commit a2b3fe1

Browse files
author
dxcity
committed
tagging release 3.292
1 parent 4077449 commit a2b3fe1

File tree

87 files changed

+2338
-453
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+2338
-453
lines changed

ReleaseNotes.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
QDS 3.292:
2+
3+
* [QD-1251] New order source for cboe C2 options
4+
* [QD-1241] dxFeed API: Extend Order event for Full Order Book
5+
- JVM parameter "-Ddxscheme.fob=true" will add Full Order Book fields to Order record
6+
- List of Order sources that support Full Order Book can be customized by
7+
"-Dcom.dxfeed.event.market.impl.Order.fob.suffixes" parameter (default value="|#NTV")
8+
* [QD-1244] QDS: Add support for long and timestamp fields in QD schema
9+
- Added support for long values and time in millis to com.dxfeed.annotation.EventFieldType
10+
(to enable long use @EventFieldMapping(type = EventFieldType.LONG) annotation)
11+
- Changed ordering of constants in com.dxfeed.annotation.EventFieldType
12+
* [QD-1235] QD Core: Disable conflation for Order events
13+
- JVM parameter "-Dcom.devexperts.qd.impl.matrix.History.conflateFilter" manages which records are conflated;
14+
if "-Ddxscheme.fob=true" is specified, then default value is "!:Order*", else it is "*"
115

216
QDS 3.291:
317

auth/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.291</version>
17+
<version>3.292</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<artifactId>QD</artifactId>
1616
<groupId>com.devexperts.qd</groupId>
17-
<version>3.291</version>
17+
<version>3.292</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020
<modelVersion>4.0.0</modelVersion>

dxfeed-api/src/main/java/com/dxfeed/annotation/EventFieldType.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,21 @@ public enum EventFieldType {
2525
*/
2626
TRANSIENT,
2727

28+
/** @deprecated Use {@link #TIME_SECONDS} instead. */
29+
@Deprecated
30+
TIME,
31+
2832
/**
2933
* This type can be used for {@code long} properties that store time in milliseconds since Java Epoch.
3034
* It will be mapped to a QD field that keeps <b>seconds</b> since Java Epoch (milliseconds will be lost).
3135
*/
32-
TIME,
36+
TIME_SECONDS,
37+
38+
/**
39+
* This type can be used for {@code long} properties that store time in milliseconds since Java Epoch.
40+
* It will be mapped to a time millis QD field.
41+
*/
42+
TIME_MILLIS,
3343

3444
/**
3545
* This type can be used for {@code int} properties that store number of days since Java Epoch.
@@ -42,6 +52,13 @@ public enum EventFieldType {
4252
*/
4353
INT,
4454

55+
/**
56+
* This type can be used for {@code long} properties.
57+
* By default primitive longs are mapped to {@link #DECIMAL} - use this type with {@link EventFieldMapping}
58+
* annotation to map to a long QD field.
59+
*/
60+
LONG,
61+
4562
/**
4663
* This type can be used for all primitive properties.
4764
* It will be mapped to a decimal QD field.
@@ -70,5 +87,5 @@ public enum EventFieldType {
7087
* This type can be used for all reference properties.
7188
* It will be mapped to a serial object QD field.
7289
*/
73-
MARSHALLED
90+
MARSHALLED,
7491
}

dxfeed-api/src/main/java/com/dxfeed/event/market/AnalyticOrder.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,19 @@
103103
* <p>
104104
* This event type cannot be used with {@link DXFeed#getLastEvent DXFeed.getLastEvent} method.
105105
*
106+
* <h3><a name="fobSection">Full Order Book Support</a></h3>
107+
*
108+
* Some feeds provide support for "Full Order Book" (FOB) where additional fields will be available:
109+
* <ul>
110+
* <li>{@link #getAction() action} - event business meaning (see {@link OrderAction} for more details)</li>
111+
* <li>{@link #getActionTime() actionTime} - time of the last action</li>
112+
* <li>{@link #getOrderId() orderId} - ID of this order</li>
113+
* <li>{@link #getAuxOrderId() auxOrderId} - additional ID for this order</li>
114+
* <li>{@link #getTradeId() tradeId} - trade (order execution) ID</li>
115+
* <li>{@link #getTradePrice() tradePrice} - price of the trade</li>
116+
* <li>{@link #getTradeSize() tradeSize} - size of the trade</li>
117+
* </ul>
118+
*
106119
* <h3>Implementation details</h3>
107120
* <p>
108121
* This event is implemented on top of QDS records {@code AnalyticOrder#<source-id>},

dxfeed-api/src/main/java/com/dxfeed/event/market/Order.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,19 @@
100100
*
101101
* This event type cannot be used with {@link DXFeed#getLastEvent DXFeed.getLastEvent} method.
102102
*
103+
* <h3><a name="fobSection">Full Order Book Support</a></h3>
104+
*
105+
* Some feeds provide support for "Full Order Book" (FOB) where additional fields will be available:
106+
* <ul>
107+
* <li>{@link #getAction() action} - event business meaning (see {@link OrderAction} for more details)</li>
108+
* <li>{@link #getActionTime() actionTime} - time of the last action</li>
109+
* <li>{@link #getOrderId() orderId} - ID of this order</li>
110+
* <li>{@link #getAuxOrderId() auxOrderId} - additional ID for this order</li>
111+
* <li>{@link #getTradeId() tradeId} - trade (order execution) ID</li>
112+
* <li>{@link #getTradePrice() tradePrice} - price of the trade</li>
113+
* <li>{@link #getTradeSize() tradeSize} - size of the trade</li>
114+
* </ul>
115+
*
103116
* <h3>Implementation details</h3>
104117
*
105118
* This event is implemented on top of QDS record {@code Quote} for composite quotes with {@link Scope#COMPOSITE},
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
/*
2+
* !++
3+
* QDS - Quick Data Signalling Library
4+
* !-
5+
* Copyright (C) 2002 - 2020 Devexperts LLC
6+
* !-
7+
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
8+
* If a copy of the MPL was not distributed with this file, You can obtain one at
9+
* http://mozilla.org/MPL/2.0/.
10+
* !__
11+
*/
12+
package com.dxfeed.event.market;
13+
14+
/**
15+
* Action enum for the Full Order Book (FOB) Orders. Action describes business meaning of the {@link Order} event:
16+
* whether order was added or replaced, partially or fully executed, etc.
17+
*/
18+
public enum OrderAction {
19+
20+
/**
21+
* Default enum value for orders that do not support "Full Order Book" and for backward compatibility -
22+
* action must be derived from other {@link Order} fields.
23+
*
24+
* <p>All Full Order Book related fields for this action will be empty.
25+
*/
26+
UNDEFINED(0),
27+
28+
/**
29+
* New Order is added to Order Book.
30+
*
31+
* <p>Full Order Book fields:
32+
* <ul>
33+
* <li>{@link Order#getOrderId() orderId} - always present</li>
34+
* <li>{@link Order#getAuxOrderId() auxOrderId} - ID of the order replaced by this new order - if available.</li>
35+
* <li>Trade fields will be empty</li>
36+
* </ul>
37+
*/
38+
NEW(1),
39+
40+
/**
41+
* Order is modified and price-time-priority is not maintained (i.e. order has re-entered Order Book).
42+
* Order {@link Order#getEventSymbol() symbol} and {@link Order#getOrderSide() side} will remain the same.
43+
*
44+
* <p>Full Order Book fields:
45+
* <ul>
46+
* <li>{@link Order#getOrderId() orderId} - always present</li>
47+
* <li>Trade fields will be empty</li>
48+
* </ul>
49+
*/
50+
REPLACE(2),
51+
52+
/**
53+
* Order is modified without changing its price-time-priority (usually due to partial cancel by user).
54+
* Order's {@link Order#getSize() size} will contain new updated size.
55+
*
56+
* <p>Full Order Book fields:
57+
* <ul>
58+
* <li>{@link Order#getOrderId() orderId} - always present</li>
59+
* <li>Trade fields will be empty</li>
60+
* </ul>
61+
*/
62+
MODIFY(3),
63+
64+
/**
65+
* Order is fully canceled and removed from Order Book.
66+
* Order's {@link Order#getSize() size} will be equal to 0.
67+
*
68+
* <p>Full Order Book fields:
69+
* <ul>
70+
* <li>{@link Order#getOrderId() orderId} - always present</li>
71+
* <li>{@link Order#getAuxOrderId() auxOrderId} - ID of the new order replacing this order - if available.</li>
72+
* <li>Trade fields will be empty</li>
73+
* </ul>
74+
*/
75+
DELETE(4),
76+
77+
/**
78+
* Size is changed (usually reduced) due to partial order execution.
79+
* Order's {@link Order#getSize() size} will be updated to show current outstanding size.
80+
*
81+
* <p>Full Order Book fields:
82+
* <ul>
83+
* <li>{@link Order#getOrderId() orderId} - always present</li>
84+
* <li>{@link Order#getAuxOrderId()} auxOrderId} - aggressor order ID, if available</li>
85+
* <li>{@link Order#getTradeId() tradeId} - if available</li>
86+
* <li>{@link Order#getTradeSize() tradeSize} and {@link Order#getTradePrice() tradePrice} -
87+
* contain size and price of this execution</li>
88+
* </ul>
89+
*/
90+
PARTIAL(5),
91+
92+
/**
93+
* Order is fully executed and removed from Order Book.
94+
* Order's {@link Order#getSize() size} will be equals to 0.
95+
*
96+
* <p>Full Order Book fields:
97+
* <ul>
98+
* <li>{@link Order#getOrderId() orderId} - always present</li>
99+
* <li>{@link Order#getAuxOrderId()} auxOrderId} - aggressor order ID, if available</li>
100+
* <li>{@link Order#getTradeId() tradeId} - if available</li>
101+
* <li>{@link Order#getTradeSize() tradeSize} and {@link Order#getTradePrice() tradePrice} -
102+
* contain size and price of this execution - always present</li>
103+
* </ul>
104+
*/
105+
EXECUTE(6),
106+
107+
/**
108+
* Non-Book Trade - this Trade not refers to any entry in Order Book.
109+
* Order's {@link Order#getSize() size} and {@link Order#getPrice() price} will be equals to 0.
110+
*
111+
* <p>Full Order Book fields:
112+
* <ul>
113+
* <li>{@link Order#getOrderId() orderId} - always empty</li>
114+
* <li>{@link Order#getTradeId()} tradeId} - if available</li>
115+
* <li>{@link Order#getTradeSize() tradeSize} and {@link Order#getTradePrice() tradePrice} -
116+
* contain size and price of this trade - always present</li>
117+
* </ul>
118+
*/
119+
TRADE(7),
120+
121+
/**
122+
* Prior Trade/Order Execution bust.
123+
* Order's {@link Order#getSize() size} and {@link Order#getPrice() price} will be equals to 0.
124+
*
125+
* <p>Full Order Book fields:
126+
* <ul>
127+
* <li>{@link Order#getOrderId() orderId} - always empty</li>
128+
* <li>{@link Order#getTradeId() tradeId} - always present</li>
129+
* <li>{@link Order#getTradeSize() tradeSize} and {@link Order#getTradePrice() tradePrice} - always empty</li>
130+
* </ul>
131+
*/
132+
BUST(8);
133+
134+
private static final OrderAction[] ACTIONS = Util.buildEnumArrayByOrdinal(UNDEFINED, 9);
135+
136+
/**
137+
* Returns side by integer code bit pattern.
138+
* @param code integer code.
139+
* @return side.
140+
* @throws ArrayIndexOutOfBoundsException if code is invalid.
141+
*/
142+
public static OrderAction valueOf(int code) {
143+
return ACTIONS[code];
144+
}
145+
146+
private final int code;
147+
148+
private OrderAction(int code) {
149+
this.code = code;
150+
if (code != ordinal())
151+
throw new IllegalArgumentException("code differs from ordinal");
152+
}
153+
154+
/**
155+
* Returns integer code that is used in flag bits.
156+
* @return integer code.
157+
*/
158+
public int getCode() {
159+
return code;
160+
}
161+
}

0 commit comments

Comments
 (0)