19template <
class T,
typename In>
23 return static_cast<T*
>(
this)->
update(data);
41 double threshold = 0.0) :
42 short_sma(short_period), long_sma(long_period), threshold(threshold) {}
45 double short_value = short_sma.update(data.
value);
46 double long_value = long_sma.update(data.
value);
48 if ((short_value > long_value * (1.0 + threshold))
51 else if ((short_value < long_value * (1.0 - threshold))
74 RSIStrat(
size_t window_size = 14,
double oversold = 30.0,
75 double overbought = 70.0) :
76 rsi(window_size), oversold(oversold), overbought(overbought),
79 double rsi_value = rsi.update(data);
81 if (std::isnan(rsi_value))
83 if ((rsi_value < oversold) && (last_side !=
Side::BUY))
85 else if ((rsi_value > overbought) && (last_side !=
Side::SELL))
107 MACDStrat(
size_t short_period,
size_t long_period,
size_t signal_period,
108 double smoothing = 2.0,
double threshold = 0.0)
109 : macd(short_period, long_period, signal_period, smoothing),
110 threshold(threshold), last_side(
Side::
NONE) {}
114 if (std::isnan(macd_value.
macd) || std::isnan(macd_value.
signal))
116 if ((macd_value.
macd > macd_value.
signal * (1.0 + threshold))
119 else if ((macd_value.
macd < macd_value.
signal * (1.0 - threshold))
Signal update(const SingleValue &data)
Definition strategies.h:111
MACDStrat(size_t short_period, size_t long_period, size_t signal_period, double smoothing=2.0, double threshold=0.0)
Definition strategies.h:107
Definition indicators.h:233
Signal update(const Ohlcv &data)
Definition strategies.h:78
RSIStrat(size_t window_size=14, double oversold=30.0, double overbought=70.0)
Definition strategies.h:74
Definition indicators.h:189
Signal update(const SingleValue &data)
Definition strategies.h:44
SMACrossover(size_t short_period, size_t long_period, double threshold=0.0)
Definition strategies.h:40
Simple Moving Average (SMA).
Definition indicators.h:59
Definition strategies.h:20
Signal update(const In &data)
Definition strategies.h:22
Technical indicators for financial analysis.
Side
Trade direction enumeration.
Definition defs.h:28
@ SELL
Sell signal or short position.
Definition defs.h:30
@ NONE
No action, hold current position.
Definition defs.h:31
@ BUY
Buy signal or long position.
Definition defs.h:29
Definition indicators.h:216
double signal
Definition indicators.h:218
double macd
Definition indicators.h:217
Open-High-Low-Close-Volume candlestick data.
Definition defs.h:84
double close
Closing price.
Definition defs.h:89
int64_t timestamp
Unix timestamp for the candle.
Definition defs.h:85
Trading signal generated by a strategy.
Definition defs.h:44
Side side
Trade direction (BUY/SELL/NONE).
Definition defs.h:46
double value
Definition defs.h:136
int64_t timestamp
Definition defs.h:135