3#include "./session_executor.hpp"
5#include "../runner/journal.hpp"
6#include "../runner/runner.hpp"
31template <
typename Strategy,
typename Session>
34 typename Session::Caps,
35 typename Session::BrokerTag,
44template <
typename Strategy,
typename Session>
47 typename Session::Caps,
48 typename Session::BrokerTag,
70template <
typename Strategy,
typename Session>
76 Venue default_route = Venue::UNSPECIFIED
82 SessionExecutor<Session>(session, default_route)
99template <
typename Strategy,
typename Session,
typename Journal,
typename Clock = runner::SteadyClock>
102 typename Session::Caps,
103 typename Session::BrokerTag,
136template <
typename Strategy,
typename Session,
typename Journal,
typename Clock = runner::SteadyClock>
143 Venue default_route = Venue::UNSPECIFIED,
151 SessionExecutor<Session>(session, default_route), journal, std::move(clock)
174template <
typename Strategy,
typename Session>
183 std::move(
strategy), std::move(limits), series_capacity, {}
The executor that sends a runner's orders and cancellations through a broker session.
An executor wrapper that records each instruction in a journal before sending it.
An executor that sends nothing and records what it was given (the dry run's default).
Runs one strategy: feeds it events, reconciles what it asks for, checks the risk limits,...
Connects a runner to a broker session for live trading.
constexpr std::size_t default_series_capacity
The number of trailing bars per instrument a bound runner keeps by default.
runner::Runner< Strategy, typename Session::Caps, typename Session::BrokerTag, runner::RecordingExecutor< typename Session::BrokerTag > > ObservingRunner
The runner type bind_observer returns: the same capabilities and tag, sending nowhere.
JournaledRunner< Strategy, Session, Journal, Clock > bind_journaled(Session &session, Journal &journal, Strategy strategy, strategy::RiskLimits limits={}, std::size_t series_capacity=default_series_capacity, Venue default_route=Venue::UNSPECIFIED, Clock clock={})
Binds a strategy to a broker session, recording every instruction in a journal before it is sent.
ObservingRunner< Strategy, Session > bind_observer(Session &session, Strategy strategy, strategy::RiskLimits limits={}, std::size_t series_capacity=default_series_capacity)
Binds a strategy for observation: the session's capabilities and broker tag, and nothing to send thro...
runner::Runner< Strategy, typename Session::Caps, typename Session::BrokerTag, runner::JournalingExecutor< SessionExecutor< Session >, Journal, Clock > > JournaledRunner
The runner type bind_journaled returns: the same pipeline, journaling before it sends.
runner::Runner< Strategy, typename Session::Caps, typename Session::BrokerTag, SessionExecutor< Session > > BoundRunner
The runner type bind returns.
BoundRunner< Strategy, Session > bind(Session &session, Strategy strategy, strategy::RiskLimits limits={}, std::size_t series_capacity=default_series_capacity, Venue default_route=Venue::UNSPECIFIED)
Binds a strategy to a broker session, so its instructions are sent to the broker.
What a strategy sees and emits: events, intents, the portfolio, reconciliation and risk limits.
The library: broker-neutral types (core), and the modules below.
Venue
A trading venue: an exchange, or the combined view across exchanges.
The limits the operator sets for RiskGuard.