15 #ifndef TSA_FUNCTORS__INCLUDED 16 #define TSA_FUNCTORS__INCLUDED 23 #include "TSATypeDef.h" 24 #include "TSATypeDef.h" 25 #include "TSASeriesTemplate.h" 26 #include "TSAFunctorParent.h" 27 #include "TSASeriesVariant.h" 28 #include "TSASeriesImp.h" 29 #include "TSAFunctions.h" 41 class dll_export
max :
public functor::parent<double> {
50 const parent& operator()(
const series<double>& series_,
size_t period);
52 size_t m_const_period;
53 series_cref<double> m_series;
55 max(
const series<double>& ser,
size_t period)
56 : parent(1), m_series(ser), m_const_period(period) {
58 virtual void evaluate(
void)
override {
60 operator()(m_series, m_const_period);
62 virtual bool input_data_is_ok(
void)
override {
63 return m_series.size_ok(m_const_period);
73 class dll_export
min :
public functor::parent<double> {
82 const parent& operator()(
const series<double>& series_,
size_t _period);
84 size_t m_const_period;
88 : parent(1), m_series(ser), m_const_period(period) {
90 virtual void evaluate(
void)
override {
91 operator()(m_series, m_const_period);
93 virtual bool input_data_is_ok(
void)
override {
94 return m_series.
size_ok(m_const_period);
104 class dll_export
sum :
public functor::parent<double> {
111 const parent& operator()(
const series<double>& series_,
size_t _period);
113 size_t m_const_period;
117 : parent(1), m_series(ser), m_const_period(period) {
119 virtual void evaluate(
void)
override {
120 operator()(m_series, m_const_period);
122 virtual bool input_data_is_ok(
void)
override {
123 return m_series.
size_ok(m_const_period);
140 size_t m_const_period;
144 : parent(1), m_series(ser), m_const_period(period) {
146 virtual void evaluate(
void)
override {
147 operator()(m_series, m_const_period);
149 virtual bool input_data_is_ok(
void)
override {
150 return m_series.
size_ok(m_const_period);
157 class dll_export
sum_pos :
public functor::parent<double> {
164 const parent& operator()(
const series<double>& series_,
size_t period);
166 size_t m_const_period;
170 : parent(1), m_series(ser), m_const_period(period) {
172 virtual void evaluate(
void)
override {
173 operator()(m_series, m_const_period);
175 virtual bool input_data_is_ok(
void)
override {
176 return m_series.
size_ok(m_const_period);
183 class dll_export
sum_neg :
public functor::parent<double> {
190 const parent& operator()(
const series<double>& series_,
size_t period);
192 size_t m_const_period;
196 : parent(1), m_series(ser), m_const_period(period) {
198 virtual void evaluate(
void)
override {
199 operator()(m_series, m_const_period);
201 virtual bool input_data_is_ok(
void)
override {
202 return m_series.
size_ok(m_const_period);
210 class dll_export
average :
public functor::parent<double> {
219 size_t m_const_period;
223 : parent(1), m_series(ser), m_const_period(period) {
225 virtual void evaluate(
void)
override {
226 operator()(m_series, m_const_period);
228 virtual bool input_data_is_ok(
void)
override {
229 return m_series.
size_ok(m_const_period);
248 const parent& operator()(
const series<double>& _ser,
size_t _period);
250 size_t m_const_period;
254 : parent(1), m_series(ser), m_const_period(period) {
256 virtual void evaluate(
void)
override {
257 operator()(m_series, m_const_period);
259 virtual bool input_data_is_ok(
void)
override {
260 return m_series.
size_ok(m_const_period);
273 class dll_export
variance :
public functor::parent<double> {
275 double m_dCurrSumOfSquares;
281 const parent& operator()(
const series<double>& _ser,
size_t _period);
283 size_t m_const_period;
287 : parent(1), m_series(ser), m_const_period(period) {
289 virtual void evaluate(
void)
override {
290 operator()(m_series, m_const_period);
292 virtual bool input_data_is_ok(
void)
override {
293 return m_series.
size_ok(m_const_period + 1);
301 class dll_export
stdev :
public functor::parent<double> {
308 const parent& operator()(
const series<double>& _ser,
size_t _period);
310 size_t m_const_period;
314 : parent(1), m_series(ser), m_const_period(period) {
316 virtual void evaluate(
void)
override {
317 operator()(m_series, m_const_period);
319 virtual bool input_data_is_ok(
void)
override {
320 return m_series.
size_ok(m_const_period + 1);
342 size_t m_const_period;
347 : parent(1), m_ser_a(ser_a), m_ser_b(ser_b), m_const_period(period) {
349 virtual void evaluate(
void)
override {
350 operator()(m_ser_a, m_ser_b, m_const_period);
352 virtual bool input_data_is_ok(
void)
override {
353 return m_ser_a.
size_ok(m_const_period) && m_ser_b.
size_ok(m_const_period);
368 size_t m_period_short;
369 size_t m_period_long;
377 const parent& operator()(
380 size_t _period_avg = 10,
381 size_t _period_roc = 10
389 class dll_export
coppock :
public functor::parent<double> {
390 size_t m_period_roc_short;
391 size_t m_period_roc_long;
397 const parent& operator()(
double cl,
size_t _period_roc_short = 10,
398 size_t _period_roc_long = 11
406 class dll_export average_exp_by_wilder :
public functor::parent<double> {
411 average_exp_by_wilder(
void);
413 const parent& operator()(
const series<double>& _ser,
size_t _period);
415 size_t m_const_period;
419 : parent(1), m_series(ser), m_const_period(period) {
421 virtual void evaluate(
void)
override {
422 operator()(m_series, m_const_period);
424 virtual bool input_data_is_ok(
void)
override {
425 return m_series.
size_ok(m_const_period);
433 class dll_export RSI :
public functor::parent<double> {
438 functor::average_exp_by_wilder WEMA_UP;
439 functor::average_exp_by_wilder WEMA_DN;
444 const parent& operator()(
const series<double>& _ser,
size_t _period);
446 size_t m_const_period;
450 : parent(1), m_series(ser), m_const_period(period) {
452 virtual void evaluate(
void)
override {
453 operator()(m_series, m_const_period);
455 virtual bool input_data_is_ok(
void)
override {
456 return m_series.
size_ok(m_const_period);
464 class dll_export stochastic_raw_k :
public functor::parent<double> {
470 stochastic_raw_k(
void);
477 size_t m_const_period;
484 : parent(1), m_hi(hi), m_lo(lo), m_cl(cl), m_const_period(period) {
486 virtual void evaluate(
void)
override {
487 operator()(m_hi, m_lo, m_cl, m_const_period);
489 virtual bool input_data_is_ok(
void)
override {
490 return m_hi.
size_ok(m_const_period) &&
498 class dll_export
stochastic :
public functor::parent<double> {
503 functor::stochastic_raw_k RAW_K;
535 const parent& operator()(
540 size_t k_smooth_period = 3,
541 size_t d_smooth_period = 3
545 double k(
void)
const {
return parent::value(0); }
546 double d(
void)
const {
return parent::value(1); }
549 size_t m_const_period;
550 size_t m_smooth_k_period;
551 size_t m_smooth_d_period;
557 size_t period,
size_t k_smooth_period,
size_t d_smooth_period)
558 : parent(2), m_hi(hi), m_lo(lo), m_cl(cl),
559 m_const_period(period), m_smooth_k_period(k_smooth_period), m_smooth_d_period(d_smooth_period) {}
560 virtual void evaluate(
void)
override {
561 operator()(m_hi, m_lo, m_cl, m_const_period, m_smooth_k_period, m_smooth_d_period);
563 virtual bool input_data_is_ok(
void)
override {
575 double m_time_factor;
578 size_t m_ivals_per_year;
582 size_t m_const_period;
583 size_t m_num_ivals_in_year;
588 size_t _period,
size_t _numberOfIntervalsInYear);
590 : parent(1), m_series(ser), m_const_period(period), m_num_ivals_in_year(num_ivals_in_year) {
592 virtual void evaluate(
void)
override {
593 operator()(m_series, m_const_period, m_num_ivals_in_year);
595 virtual bool input_data_is_ok(
void)
override {
596 return m_series.
size_ok(m_const_period);
613 const parent& operator()(
620 size_t m_const_period;
631 m_const_period(period) {
633 virtual void evaluate(
void)
override {
634 operator()(m_hi, m_lo, m_cl, m_const_period);
636 virtual bool input_data_is_ok(
void)
override {
653 const parent& operator()(
659 double positive()
const {
return parent::value(0); }
660 double negative(
void)
const {
return parent::value(1); }
671 const parent& operator()(
686 const parent& operator()(
697 class aroon :
public functor::parent<double> {
711 const parent& operator()(
716 double up(
void)
const {
return parent::value(0); }
717 double dn(
void)
const {
return parent::value(1); }
718 double osc(
void)
const {
return parent::value(2); }
726 double m_nvi = 1000.0;
733 const parent& operator()(
768 class dll_export weighted_basket :
public object {
774 double dPercentOfTotal;
775 double dPositionSize;
776 double dPrevPositionSize;
778 bool bPriceWasUpdated;
781 typedef std::map<string, BasketItem> COMPONENTMAP;
782 COMPONENTMAP m_Components;
783 bool m_bFirstRebalanceCompleted;
784 size_t m_nRebalanceInterval;
785 size_t m_nBarsSinceLastReblance;
788 double m_dStartValue;
789 double m_dTotalValueAtLastBar;
790 double m_dCashBalance;
791 bool m_bForcePriceUpdate;
793 weighted_basket(
void);
794 ~weighted_basket(
void);
796 void AddComponent(
const tsa::string& symbol,
double weight = 1.0);
798 bool ComponentExists(
const tsa::string& symbol)
const;
799 void ResetWeight(
const tsa::string& symbol,
double weight);
800 const BasketItem& GetComponent(
const tsa::string& symbol)
const;
801 size_t Size(
void)
const;
803 void AddCash(
double);
804 const date_time& GetLastTimestamp(
void)
const;
805 const date_time& GetLastRebalanceTimestamp(
void)
const;
807 void UpdatePrice(
const tsa::string& symbol,
double price);
808 void SetForcePriceUpdate(
bool);
809 bool GetForcePriceUpdate(
void)
const;
810 double CashBalance(
void)
const;
812 size_t RebalanceInterval(
void)
const;
813 void RebalanceInterval(
size_t);
815 void CalculateMultipliers(
void);
816 double CalculateTotalValue(
void)
const;
817 double TotalValueAtLastCompletedBar(
void);
818 size_t BarsSinceLastRebalance(
void);
819 void NotifyBarCompleted(
const date_time&,
bool rebalance =
false);
820 double CalculateStockBasketValue(
void)
const;
823 double GetPositionSize(
const tsa::string& symbol)
const;
824 double GetPositionValue(
const tsa::string& symbol)
const;
827 void PrintState(std::ostream&)
const;
double max(const series< double > &series, size_t period)
Returns the highest value found in series over given .
Definition: TSAFunctionsScalar.cpp:180
Definition: TSAFunctors.h:389
max highest
Typedef. Same as class max;.
Definition: TSAFunctors.h:68
Functor for calculating the sum of all values in a series over a given period.
Definition: TSAFunctors.h:130
Namespace for the 'Trading System API' library.
Definition: original1.TSA3Core.cpp:20
double variance(const series< double > &data, size_t period)
Returns the population variance in data over period.
Definition: TSAFunctionsScalar.cpp:122
Nevative Volume Index by Fosback.
Definition: TSAFunctors.h:725
Functor for calculating the exponential average of all values in a series over a given period...
Definition: TSAFunctors.h:240
Functor for calculating the sum of all negative values in a series over a given period.
Definition: TSAFunctors.h:183
Functor for calculating the population standard deviation of all values in a series over a given peri...
Definition: TSAFunctors.h:301
Functor for calculating the minimum value in a series over a given period.
Definition: TSAFunctors.h:73
average SMA
Typedef. Save as class functor::average.
Definition: TSAFunctors.h:234
Functor for calculating the correlation between two series over a given period.
Definition: TSAFunctors.h:328
Functor for calculating the average of all values in a series over a given period.
Definition: TSAFunctors.h:210
Functor for calculating the sum of all values in a series over a given period.
Definition: TSAFunctors.h:104
correlation CORR
Typedef. Same as class functor::correlation.
Definition: TSAFunctors.h:358
sref< double > SUM(const container &c)
Returns the sum of the current values of all series in given container c.
Definition: TSADSLMath.cpp:631
sref< double > RSI(sref< double > ser, size_t period)
Relative Strength Index.
Definition: TSADSLFinancial.cpp:446
sref< double > MAX(const container &c)
Returns the maximum current values of all series in given container c.
Definition: TSADSLMath.cpp:653
double stdev(const series< double > &data, size_t period)
Returns the population standard deviation in data over period.
Definition: TSAFunctionsScalar.cpp:142
Parent class for many library classes.
Definition: TSATypeDef.h:462
double correlation(const series< double > &x, const series< double > &y, size_t period)
Returns the correlation coefficient of series and series over given period.
Definition: TSAFunctionsScalar.cpp:148
CCI by Lambert. Functor for calculating Commodity Channel Index over a given period.
Definition: TSAFunctors.h:603
min lowest
Typedef. Same as class max;.
Definition: TSAFunctors.h:99
Functor for calculating Volatitity over a given period.
Definition: TSAFunctors.h:572
Definition: TSAFunctors.h:366
Functor for calculating Stochastic indicator over a given period.
Definition: TSAFunctors.h:498
average_exp EMA
Typedef. Save as class functor::average_exp.
Definition: TSAFunctors.h:265
double average(const series< double > &data, size_t period)
Returns the the average value of data with given period.
Definition: TSAFunctionsScalar.cpp:98
Definition: TSAFunctors.h:680
Rounds up to next higher multiple of minimum-tick.
Definition: TSAGlobal.h:29
bool size_ok(size_t sz) const
Definition: TSASeriesTemplate.h:1335
Functor for calculating the sum of all positive values in a series over a given period.
Definition: TSAFunctors.h:157
Relative Volatility by Dorsey.
Definition: TSAFunctors.h:666
sref< double > MIN(const container &c)
Returns the minimum current values of all series in given container c.
Definition: TSADSLMath.cpp:667
Class representing a gregorian-date and time-of-day combination. The time component has microsecond r...
Definition: TSATime.h:428
Vortex Indicator by Botes / Siepman.
Definition: TSAFunctors.h:645
Definition: TSAFunctors.h:697
Functor for calculating the population standard deviation of all values in a series over a given peri...
Definition: TSAFunctors.h:273
Functor for calculating the maximum value in a series over a given period.
Definition: TSAFunctors.h:42