Learn R Programming

QuantTools (version 0.5.2)

Processor: c++ Processor class

Description

c++ class documentation

Arguments

timeFrame
candle timeframe in seconds
latencySend, latencyReceive
latency in seconds

Usage

Processor( int timeFrame, double latencySend, double latencyReceive )

Public Members and Methods

Name
Return Type Description
onCandle( Candle candle ) std::function
called on new candle event onTick( Tick tick )
std::function called on new tick event
Feed( Tick tick ) void
process by individual tick Feed( Rcpp::DataFrame ticks )
void batch process, see 'Ticks' section
SendOrder( Order* order ) void
send order to exchange CancelOrders()
void cancel active orders
GetPosition() int
total executed position, positive means long, negative means short GetPositionPlanned()
int total number of orders processing ( not executed or cancelled yet )
GetMarketValue() double
total portfolio percent value ( initial value is 0 ) GetCandles()
Rcpp::List candles history, see 'Candles' section
GetOrders() Rcpp::List
orders history, see 'Orders' section GetTrades()
Rcpp::List trades history, see 'Trades' section
GetSummary() Rcpp::List
trades summary, see 'Summary' section GetOnCandleMarketValueHistory()
std::vector vector of portfolio value history recalculated on candle complete
GetOnCandleDrawDownHistory() std::vector
vector of portfolio drawdown history recalculated on candle complete GetOnDayClosePerformanceHistory()
Rcpp::List data.table of daily performance history with columns date, return, pnl, drawdown
Reset() void
resets to initial state

Execution model

System sends new order and after latencySend seconds it reaches exchange. System receives confirmation of order placement latencyReceive seconds later. When execution conditions met on exchange - order is executed and system receives execution confirmation latencyReceive seconds later. When system sends cancel request to exchange and after latencySend seconds when exchange receives cancel request if order is not executed yet it is cancelled and cancellation confirmation is received by system after latencyReceive seconds.

Ticks

Ticks must be a data.frame/data.table with at least the following columns:
Name
Description
time
time
price
price
tick id is ticks row number.

Candles

Candles returned as data.table with the following columns:
Name
Description
time
time when formed
open
first tick price
high
maximum tick price
low
minimum tick price
close
last tick price
volume
total volume traded

Orders

Orders returned as data.table with the following columns:
Name
Description
id_trade
trade id
id_sent
tick id when order was sent to exchange
id_processed
tick id when enter order execution or cancelled confirmation was received ( first tick after time_processed )
time_sent
time when order was sent to exchange
time_processed
time when enter order execution or cancelled confirmation was received
price_init
initial price
price_exec
execution price
side
buy/sell
type
limit/market
state
new/registered/executed/cancelling/cancelled

Trades

Two orders are combined into trade by trade id. The first and the second orders are called enter and exit respectively. Trade side is long if enter order is buy and short if enter order is sell Orders must be buy and sell only. Two buys or two sells not allowed. Trade can be new when order to open trade is just placed, opened when trade is not closed yet and closed when trade is flat. Trades returned as data.table with the following columns:
Name
Description
id_trade
trade id
id_sent
tick id when enter order was sent to exchange
id_enter
tick id when enter order execution confirmation was received ( first tick after enter time_executed )
id_exit
tick id when exit order execution confirmation was received ( first tick after exit time_executed )
time_sent
time when enter order sent to exchange
time_enter
time when enter order execution confirmation was received
time_exit
time when exit order execution confirmation was received
side
side long/short
price_enter
enter order execution price
price_exit
exit order execution price
pnl
trade pnl net
mtm_min
min mark-to-market
mtm_max
max mark-to-market
cost
absolute trading cost
pnl_rel
trade pnl net in basis points
mtm_min_rel
min mark-to-market in basis points
mtm_max_rel
max mark-to-market in basis points
cost_rel
relative trading cost in basis points

Summary

Back test summary statistics:
Name
Description
from
first tick time
to
last tick time
days_tested
number of trading days tested
days_traded
number of trading days traded ( at least one order was executed )
n_per_day
number of trades per day
n
number of trades
n_long
number of long trades
n_short
number of short trades
n_win
number of winning trades
n_loss
number of loosing trades
pct_win
percent of winning trades
pct_loss
percent of loosing trades
avg_win
average winning trade in basis points
avg_loss
average loosing trade in basis points
avg_pnl
average trade pnl in basis points
win
total won in percent
loss
total lost in percent
pnl
total pnl in percent
max_dd
maximum drawdown in percent
max_dd_start
time the maximum drawdown started
max_dd_end
time the maximum drawdown recovered
max_dd_length
number of calendar days in the maximum drawdown period
sharpe
annualized Sharpe ratio calulated on daily returns
sortino
annualized Sortino ratio calulated on daily returns
r_squared
R Squared calulated on daily PnL values

See Also

Other backtesting classes: Candle, Cost, Indicator, Order, Tick

Other c++ classes: BBands, Candle, Cost, Crossover, Ema, Indicator, Order, RollLinReg, RollPercentRank, RollRange, RollSd, RollVolumeProfile, Rsi, Sma, Stochastic, Tick