Trade
Start with this page to learn more about trading via FIX on Finery Markets
Every price or size values should be represented with Finery Markets internal corresponding types.
A description of all the types can be found here.
New Order Single<D>
Sent by the client to submit a new order. Execution Report<8> sent to the client to provide information about the order execution.
Tag | Name | Required | Example | Description |
---|---|---|---|---|
11 | ClOrdID | Y | 123 | Unique identifier of the order as assigned by the client, should be integral number, >0 |
55 | Symbol | Y | BTC-USD | Instrument name |
44 | Price | N | 1 | Price, value of type Price |
38 | OrderQty | N | 1 | Size of the order(if the order is by size), value of type Size |
152 | CashOrderQty | N | 1 | Volume of the order(if the order is by volume), value of type Size |
40 | OrdType | Y | 1 | Order Type(see below) |
54 | Side | Y | 1 | Side of the order(see below) |
59 | TimeInForce | Y | 1 | Specifies how long the order remains in effect(see below) |
60 | TransactTime | Y | 20230530-09:29:52.722 | UTC Timestamp of the order creation |
Order Type | Description |
---|---|
1 | Market (Taker only) |
2 | Limit |
Order Side | Description |
---|---|
1 | Buy |
2 | Sell |
Time In Force | Description |
---|---|
1 | Good Till Cancel (GTC) - Maker |
3 | Immediate or Cancel (IOC) - Taker |
4 | Fill or Kill (FOK) - Taker |
P | PostOnly - Maker |
Either OrderQty<38> or CashOrderQty<152> field should present.
Execution Report<8>
Sent by the server whenever an order receives a fill, whenever the status of an order changes, or in response to a NewOrderSingle<D>, OrderCancelRequest<F> and OrderCancel/Replace Request<G> message from the client.
Tag | Name | Required | Example | Description |
---|---|---|---|---|
37 | OrderID | Y | 1 | Unique order Id, generated by the server |
11 | ClOrdID | Y | 2 | Unique identifier of the order as assigned by the client. ClOrdID<11> of the canceled order if OrdStatus<39> == 4 (canceled), ClOrdID<11> from the NewOrderSingle<D> or OrderCancel/ReplaceRequest<G> otherwise |
151 | LeavesQty | Y | 1 | Quantity open for further execution, value of type Size |
17 | ExecID | N | 123 | Deal id in case of ExecType<150> == TRADE. Same as OrderID<37> otherwise. |
55 | Symbol | N | BTC-USD | Instrument name |
54 | Side | N | 1 | “1” - Buy, “2” - Sell |
38 | OrderQty | N | 1 | Order quantity, value of type Size. If ExecType<150> == 5, quantity of the new order |
44 | Price | N | 10 | Order Price, value of type Price. If ExecType<150> == 5, price of the new order |
31 | LastPx | N | 1000 | Current fill price. Only present if this message was the result of a fill, value of type Price |
32 | LastQty | N | 2 | Current fill quantity. Only present if this message was the result of a fill, value of type Size |
39 | OrdStatus | Y | 2 | Identifies current status of order(see below) |
150 | ExecType | Y | 2 | Describes the specific Execution Report(see below) |
58 | Text | N | 79 | In case the order was declined by the Finery Markets, this field contains Finery Markets error code |
136 | NoMiscFees | N | 1 | If present should always be 1 Following group describes markup applied to the deal |
137 | => MiscFeeAmt | N | 10 | Required if NoMiscFees<136> is present. Markup size. |
139 | => MiscFeeType | N | 8 | Required if NoMiscFees<136> is present. Should always be 8 for Markup. |
958 | CounterpartyID | N | 1234 | FineryMarkets id of the counterparty |
41 | OrigClOrdID | N | 42 | ClOrdID<11> of the replaced order, if ExecType<150> = 5(Replaced). |
Order Status | Description |
---|---|
0 | New |
1 | Partially filled |
2 | Filled |
4 | Canceled |
5 | Replaced |
8 | Rejected |
Exec Type | Description |
---|---|
0 | New |
F | Trade |
4 | Canceled |
5 | Replaced |
8 | Rejected |
ExecType<150> indicates the reason why the Execution Report<8> message was sent. And Order Status indicates the current state of the order.
For every order Execution Report<8> with ExecType<150> == 0 should be generated.
When no further execution is possible Execution Report<8> with either ExecType<150> == F and OrderStatus<39> == 2 or ExecType<150> == 4 and OrderStatus<39> == 4 should be generated.
Order Cancel Request<F>
The Order Cancel Request<F> message requests the cancellation of all of the remaining quantity of an existing order. Note that the Order Cancel/Replace Request<G> should be used to partially cancel (reduce) an order).
Tag | Name | Required | Example | Description |
---|---|---|---|---|
37 | OrderID | N | 1 | Unique order Id, generated by the server, of the order to cancel |
11 | ClOrdID | Y | 2 | Unique identifier of the request as assigned by the client |
41 | OrigClOrdID | N | 3 | ClOrdID <11> of the order to cancel |
54 | Side | Y | 1 | Side of the order(see above) |
60 | TransactTime | Y | 20230530-09:29:52.722 | UTC Timestamp of the order creation |
Either OrderID<37> or OrigClOrdID<41> should be present.
Order Cancel Reject<9>
The Order Cancel Reject <9> message is issued by the server upon receipt of a Order Cancel Request<F> or Order Cancel/Replace Request<G> message which cannot be honored.
Tag | Name | Required | Example | Description |
---|---|---|---|---|
37 | OrderID | N | 1 | Unique order Id, generated by the server, copied from request message |
11 | ClOrdID | Y | 2 | Request Id assigned by the client, copied from request message |
41 | OrigClOrdID | N | 3 | ClOrdID <11> of the previous non-rejected order, copied from request message |
434 | CxlRejResponseTo | Y | 1 | Identifies the type of request that a Cancel Reject <9> is in response to(see below) |
102 | CxlRejReason | N | 99 | Reject Reason Code. If CxlRejReason == 99, Text<58> field contains FineryMarkets error code. |
58 | Text | N | Invalid OrderID. | Human-readable reject reason |
39 | OrdStatus | Y | 0 | Reserved for future use. Always 0. |
CxlRejResponseTo | Description |
---|---|
1 | Order Cancel Request<F> was rejected |
2 | Order Cancel/Replace Request<G> was rejected |
Order Cancel/Replace Request<G>
The Order Cancel/Replace Request<G> (a.k.a. Order Modification Request) is used to change the parameters of an existing order. Do not use this message to cancel the remaining quantity of an outstanding order, use the Order Cancel Request<F> message for this purpose.
It is possible, that the "Cancel" part succeeds and "Replace" part fails. In this case ExecutionReport<8> with OrdStatus<39> == 4 (Canceled) issued for the canceled order as well as the OrderCancelReject<9> referencing the OrderCancel/ReplaceRequest<G> with the "Replace" failure reason.
Tag | Name | Required | Example | Description |
---|---|---|---|---|
37 | OrderID | Y | 1 | Unique order Id, generated by the server, of the order to cancel/replace |
11 | ClOrdID | Y | 2 | Request Id assigned by the client |
41 | OrigClOrdID | Y | 1 | Request Id assigned by the client for the original order |
44 | Price | Y | 3 | Price, value of type Price |
38 | OrderQty | Y | 4 | Initial size of replace result will be OrderQty - (old order initial size - old order remaining size) |
40 | OrdType | Y | 1 | Order Type (see above) should be the same as in the original order |
54 | Side | Y | 1 | Side of the order(see above) should be the same as in the original order |
60 | TransactTime | Y | 20230530-09:29:52.722 | UTC Timestamp of the order creation |
Last updated