XROAD
algo_order.h File Reference
#include <common/xroad_string.h>
#include <cache/xroad_objects.h>
#include <mdata/engine/mdata_engine.h>
#include <algo/curr_engine/curr_engine.h>
Include dependency graph for algo_order.h:

Go to the source code of this file.

Classes

struct  algo_order_callback_t
 

Typedefs

typedef struct algo_order_s algo_order_t
 

Enumerations

enum  algo_order_state_t {
  algo_order_state_initial = 0 , algo_order_state_active = 1 , algo_order_state_middle = 2 , algo_order_state_liquidate = 3 ,
  algo_order_state_completed = 4 , algo_order_state_awaiting_cancel = 5 , algo_order_state_canceled = 6 , algo_order_state_awaiting_replace = 7
}
 

Functions

algo_order_t * algo_order_create (mdata_engine_t *mdata, algo_order_callback_t callback, xroad_order_t *parent, curr_engine_t *ce, void *ctx, int64_t level_interval)
 
void algo_order_destroy (algo_order_t *o)
 
void algo_order_stop (algo_order_t *o)
 
xroad_errno_t algo_order_cancel (algo_order_t *o)
 
xroad_errno_t algo_order_send (algo_order_t *o, xroad_qty_t qty, xroad_qty_t display_qty, int64_t mid_shift, int64_t liq_shift, int64_t agression_level, int32_t pool_size)
 
xroad_errno_t algo_order_send_ex (algo_order_t *o, xroad_qty_t qty, xroad_qty_t display_qty, int64_t mid_shift, int64_t liq_shift, int64_t agression_level, int32_t sensitivity, int32_t deviation, xroad_qty_t threshold_qty, int32_t pool_size)
 
void algo_order_on_node_object (algo_order_t *order, void *obj)
 
void * algo_order_get_ctx (algo_order_t *order)
 
xroad_qty_t algo_order_get_qty (algo_order_t *)
 
algo_order_state_t algo_order_get_state (algo_order_t *)
 
void algo_order_set_state (algo_order_t *o, algo_order_state_t s)
 
xroad_str_t algo_order_stat (algo_order_t *o)
 
xroad_order_t * algo_order_get_parent (algo_order_t *order)
 
int32_t algo_order_exceed_limit (algo_order_t *, xroad_price_t)
 
xroad_errno_t algo_order_get_limit (algo_order_t *ao, xroad_price_t *p)
 
xroad_price_t algo_order_get_rate (algo_order_t *ao)
 

Detailed Description

Author
Danil Krivopustov

Enumeration Type Documentation

◆ algo_order_state_t

order state

Enumerator
algo_order_state_initial 

order is in initial state

algo_order_state_active 

order is in active state

algo_order_state_middle 

order is in midle state

algo_order_state_liquidate 

order is in liquidation state

algo_order_state_completed 

order is in completed state

algo_order_state_awaiting_cancel 

order is in awaiting cancel state

algo_order_state_canceled 

order is in canceled state

algo_order_state_awaiting_replace 

order is in awaiting replace state

Function Documentation

◆ algo_order_cancel()

xroad_errno_t algo_order_cancel ( algo_order_t *  o)

cancel order. order will be cancelled

Parameters
[in]o- order to cancel
Returns
XROAD_OK - cancel operation applied, else failed

◆ algo_order_create()

algo_order_t* algo_order_create ( mdata_engine_t *  mdata,
algo_order_callback_t  callback,
xroad_order_t *  parent,
curr_engine_t *  ce,
void *  ctx,
int64_t  level_interval 
)

create new order

Parameters
[in]mdata- order name. Must be unique
[in]callback- order callback
[in]parent- parent xroad order
[in]ctx- order context
[in]deep_of_book- book depth (in levels)
[in]level_interval- interval between levels (in price levels)
Returns
pointer to order, in case of error - NULL (see errno)

◆ algo_order_destroy()

void algo_order_destroy ( algo_order_t *  o)

destroy order

Parameters
[in]o- order to destory
[in]force- force order destruction (don't wait for exchange ack, if any)
Returns
XROAD_OK - destroy operation applied, else failed

◆ algo_order_exceed_limit()

int32_t algo_order_exceed_limit ( algo_order_t *  ,
xroad_price_t   
)

check order limit TODO consider move it to callback

Parameters
[in]o- algo order

◆ algo_order_get_ctx()

void* algo_order_get_ctx ( algo_order_t *  order)

gets context for algo order

Parameters
[in]o- algo order

◆ algo_order_get_parent()

xroad_order_t* algo_order_get_parent ( algo_order_t *  order)

gets order parent

Parameters
[in]o- algo order

◆ algo_order_get_qty()

xroad_qty_t algo_order_get_qty ( algo_order_t *  )

gets order qty

Parameters
[in]o- algo order

◆ algo_order_get_state()

algo_order_state_t algo_order_get_state ( algo_order_t *  )

gets order state

Parameters
[in]o- algo order

◆ algo_order_on_node_object()

void algo_order_on_node_object ( algo_order_t *  order,
void *  obj 
)

process node events

Parameters
[in]obj- object to process
[in]from- object source

◆ algo_order_send()

xroad_errno_t algo_order_send ( algo_order_t *  o,
xroad_qty_t  qty,
xroad_qty_t  display_qty,
int64_t  mid_shift,
int64_t  liq_shift,
int64_t  agression_level,
int32_t  pool_size 
)

send order

Parameters
[in]o- order to replace
[in]qty- order new qty
[in]price- order new price
[in]mask- replace mask (see algo_order_replace_mask_t)
Returns
XROAD_OK - replace operation applied, else failed

◆ algo_order_send_ex()

xroad_errno_t algo_order_send_ex ( algo_order_t *  o,
xroad_qty_t  qty,
xroad_qty_t  display_qty,
int64_t  mid_shift,
int64_t  liq_shift,
int64_t  agression_level,
int32_t  sensitivity,
int32_t  deviation,
xroad_qty_t  threshold_qty,
int32_t  pool_size 
)

send order

Parameters
[in]o- order to replace
[in]qty- order new qty
[in]price- order new price
[in]sensitivity- number of trades with aggression side == order side after which it would execute over spread
[in]deviation- max percent of random deviation from display_qty
Returns
XROAD_OK - replace operation applied, else failed

◆ algo_order_set_state()

void algo_order_set_state ( algo_order_t *  o,
algo_order_state_t  s 
)

sets order state

Parameters
[in]o- algo order
[in]s- algo order state

◆ algo_order_stat()

xroad_str_t algo_order_stat ( algo_order_t *  o)

gets order statistice

Parameters
[in]o- algo order