19 #define ST_PREV_PRICE 0.0
21 typedef struct strategy_s strategy_t;
62 void (*on_mdata_trade)(strategy_t*, xroad_instr_t*,
const mdata_trade_t*,
void*);
66 void (*on_mdata_quote)(strategy_t*, xroad_instr_t*,
const mdata_quote_t*,
void*);
70 void (*on_mdata_book)(strategy_t*, xroad_instr_t*,
const mdata_book_20_t*,
void*);
78 void (*on_mdata_order)(strategy_t*, xroad_instr_t*,
const mdata_order_t*,
void*);
82 void (*on_mdata_feed_state)(strategy_t*, xroad_instr_t*,
const mdata_feed_state_type_t,
void*);
86 void (*on_order_before_send)(strategy_t*, order_t*,
void* ctx);
90 void (*on_order_activated)(strategy_t*, order_t*,
void* ctx);
94 void (*on_order_trade)(strategy_t*, order_t*, xroad_trade_t*,
void* ctx);
98 void (*on_order_canceled)(strategy_t*, order_t*, xroad_rej_reason_t,
xroad_str_t,
void*);
102 void (*on_order_canceled_unexpected)(strategy_t*, order_t*, xroad_rej_reason_t,
xroad_str_t,
void*);
106 void (*on_order_replaced)(strategy_t*, order_t*,
void*);
110 void (*on_order_rejected)(strategy_t*, order_t*, xroad_rej_reason_t,
xroad_str_t,
void*);
114 void (*on_order_cancel_rejected)(strategy_t*, order_t*, xroad_rej_reason_t,
xroad_str_t,
void*);
118 void (*on_order_replace_rejected)(strategy_t*, order_t*, xroad_rej_reason_t,
xroad_str_t,
void*);
129 void (*on_pos_updated)(strategy_t*, xroad_instr_t*, xroad_price_t,
xroad_qty_t, xroad_price_t, xroad_price_t,
void*);
133 void (*on_order_destroyed)(strategy_t*, order_t*,
void*);
137 xroad_errno_t (*on_order_restore)(strategy_t*, order_t*, xroad_order_t*,
void*);
204 xroad_instr_t* instr,
216 #define strategy_add_order(s, name, instr, side, ...) \
218 xroad_str_t def_account = xroad_str("XXX"); \
219 strategy_add_order_ex_args_t args = {.account = def_account, .type = xroad_ord_type_limit, \
220 .tif = xroad_tif_day, .till_date = xroad_date_nul, __VA_ARGS__}; \
221 strategy_add_order_ex(s, name, instr, side, args.account, args.client_code, args.type, args.qty, args.price, \
222 args.ext_ref, args.flags, args.tif, args.till_date); \
244 xroad_instr_t* instr,
256 #define strategy_replace_order(s, name, instr, side, ...) \
258 xroad_str_t def_account = xroad_str("XXX"); \
259 strategy_add_order_ex_args_t args = {.account = def_account, .type = xroad_ord_type_limit, \
260 .tif = xroad_tif_day, .till_date = xroad_date_null, __VA_ARGS__}; \
261 strategy_replace_order_ex(s, name, instr, side, args.account, args.client_code, args.type, args.qty, args.price, \
262 args.ext_ref, args.flags, args.tif, args.till_date); \
300 #define strategy_send_order(s, oname, ...) \
302 strategy_send_order_ex_args_t args = (strategy_send_order_ex_args_t){ \
303 .qty = ST_PREV_QTY, .price = ST_PREV_PRICE, __VA_ARGS__}; \
304 strategy_send_order_ex(s, oname, args.qty, args.price); \
335 strategy_t* s,
const xroad_instr_t* i, xroad_side_t side,
xroad_qty_t qty, xroad_price_t price);
348 strategy_t* s, xroad_instr_t* i,
xroad_str_t account, xroad_side_t side,
bool use_native);
350 #define strategy_cancel_orders(s, ...) \
352 strategy_cancel_orders_args_t args_ = (strategy_cancel_orders_args_t){.instr = NULL, \
353 .side = xroad_side_undef, .use_native = false, __VA_ARGS__}; \
354 strategy_cancel_orders_ex(s, args_.instr, args_.account, args_.side, args_.use_native); \
375 xroad_errno_t strategy_reset_position(strategy_t* s, xroad_instr_t* i, xroad_price_t avg_price,
xroad_qty_t qty, xroad_price_t realized_pnl);
381 mdata_engine_t* strategy_get_mdata(strategy_t* s);
order_state_t
Definition: order.h:23
xroad_errno_t strategy_stop(strategy_t *s)
xroad_errno_t strategy_send_order_instr(strategy_t *s, const xroad_instr_t *i, xroad_side_t side, xroad_qty_t qty, xroad_price_t price)
xroad_errno_t strategy_unsubscribe(strategy_t *s, xroad_instr_t *i)
xroad_errno_t strategy_subscribe(strategy_t *s, xroad_instr_t *i, int32_t mask)
void strategy_destroy(strategy_t *s)
xroad_errno_t strategy_del_order(strategy_t *s, xroad_str_t oname)
order_t * strategy_replace_order_ex(strategy_t *s, xroad_str_t name, xroad_instr_t *instr, xroad_side_t side, xroad_str_t account, xroad_str_t client_code, xroad_ord_type_t type, xroad_qty_t qty, xroad_price_t price, xroad_str_t ext_ref, int32_t flags, xroad_tif_t tif, xroad_date_t till_date)
xroad_errno_t strategy_start(strategy_t *s)
xroad_str_t strategy_gen_order_name(const xroad_instr_t *i, xroad_side_t side, xroad_ord_type_t type)
order_state_t strategy_get_order_state(strategy_t *s, xroad_str_t oname)
xroad_errno_t strategy_send_order_ex(strategy_t *s, xroad_str_t oname, xroad_qty_t qty, xroad_price_t price)
order_t * strategy_add_order_ex(strategy_t *s, xroad_str_t name, xroad_instr_t *instr, xroad_side_t side, xroad_str_t account, xroad_str_t client_code, xroad_ord_type_t type, xroad_qty_t qty, xroad_price_t price, xroad_str_t ext_ref, int32_t flags, xroad_tif_t tif, xroad_date_t till_date)
xroad_errno_t strategy_cancel_orders_ex(strategy_t *s, xroad_instr_t *i, xroad_str_t account, xroad_side_t side, bool use_native)
strategy_t * strategy_create(xroad_xml_tag_t cfg, strategy_callback_t cback)
void strategy_init_orders(strategy_t *s, xroad_instr_t *instr, xroad_str_t account, xroad_str_t client_code)
order_t * strategy_get_order(strategy_t *s, xroad_str_t oname)
xroad_errno_t strategy_cancel_order(strategy_t *s, xroad_str_t oname)
Definition: mdata_proto.h:107
Definition: mdata_proto.h:197
Definition: mdata_proto.h:142
Definition: mdata_proto.h:118
Definition: mdata_proto.h:130
Definition: strategy.h:38
Definition: strategy.h:54
void * ctx
Definition: strategy.h:58
Definition: strategy.h:24
Definition: strategy.h:32
Definition: xroad_date.h:20
Definition: xroad_string.h:29
struct xroad_str_s xroad_str_t
see common/xroad_string.h for details
Definition: xroad_common_fwd.h:39
CAUTION: do not change this file - it is autogenerated.
xroad_ord_type_t
Definition: xroad_objects_types.h:254
int64_t xroad_qty_t
Definition: xroad_objects_types.h:159