Strategy Interface
The IStrategy
interface defines the base structure for implementing trading strategies in Flox.
It provides lifecycle hooks and market event handlers, and grants access to execution, risk, and position services.
Purpose
To create modular, pluggable strategies that react to market data and can submit orders through controlled interfaces.
Interface Definition
class IStrategy {
public:
virtual ~IStrategy() = default;
virtual void onStart();
virtual void onStop();
virtual void onCandle(SymbolId symbol, const Candle &candle);
virtual void onTrade(const Trade &trade);
virtual void onBookUpdate(const BookUpdate &bookUpdate);
void setPositionManager(IPositionManager *manager);
void setRiskManager(IRiskManager *manager);
void setOrderExecutor(IOrderExecutor *executor);
void setOrderValidator(IOrderValidator *validator);
protected:
IRiskManager *GetRiskManager();
IPositionManager *GetPositionManager();
IOrderExecutor *GetOrderExecutor();
IOrderValidator *GetOrderValidator();
};
Responsibilities
- Reacts to market data via
onCandle
,onTrade
, andonBookUpdate
- Optionally implements
onStart
/onStop
for initialization/teardown - May use
IOrderExecutor
to place orders andIRiskManager
/IOrderValidator
to enforce logic - Has access to current position via
IPositionManager
Notes
- All dependencies are injected via
setX()
methods - Strategies are typically managed by
StrategyManager
- Designed for subclassing: each concrete strategy inherits from
IStrategy