Trading System API  3.0
Library for Simulating and Deploying Trading and Investment Strategies
TSAFunctions.h
1 
2 /* ===================================================================
3 *
4 * T R A D I N G S Y S T E M A P I ™
5 * Copyright © 1999 - 2014 by Peter Ritter ( TradingSystemAPI.com )
6 * A L L R I G H T S R E S E R V E D
7 *
8 * Consult your license regarding permissions and restrictions.
9 * You may obtain a copy of the License at:
10 * http://www.TradingSystemAPI.com/licenses/LICENSE-TSAPI-3.0.html
11 *
12 * ====================================================================
13 */
14 
15 #ifndef TSA_FUNCTIONS__INCLUDED
16 #define TSA_FUNCTIONS__INCLUDED
17 
18 #include "TSASeriesTemplate.h"
19 #include "TSAString.h"
20 #include "TSAGlobal.h"
21 
22 namespace tsa {
23 
24  /*
25  ** ================================================================
26  ** data / series
27  ** ================================================================
28  */
29 
41  size_t bars_since(const series<bool>& series, size_t period);
42 
54  size_t bars_since_nth(const series<bool>& series, size_t period, size_t n_count);
55 
57  dll_export size_t bars_since_max(const series<double>& series, size_t period);
58 
60  dll_export size_t bars_since_highest(const series<double>& series, size_t period);
61 
62 
64  dll_export size_t bars_since_min(const series<double>& series, size_t period);
65 
67  dll_export size_t bars_since_lowest(const series<double>& series, size_t period);
68 
70  dll_export bool crosses_above(const series<double>& series_a, const series<double>& series_b);
71 
73  dll_export bool crosses_below(const series<double>& series_a, const series<double>& series_b);
74 
76  dll_export bool crosses_above(const series<double>& series, double threshold);
77 
79  dll_export bool crosses_below(const series<double>& series, double threshold);
80 
82  dll_export bool turns_neg(const series<double>& series);
83 
85  dll_export bool turns_pos(const series<double>& series);
86 
98  dll_export template<typename T>
99  const series<T> shift_by(const series<T>& in_series, size_t shift_by) {
100  return in_series.shift(shift_by);
101  }
102 
103  // @brief Returns a series that is a 'shifted' version of the given @a in_series argument. This is the overload of
104  // the template version of shift to accomodate series of type auto_series. See shift(const series<T>&, size_t).
105  //dll_export const series<double> shift(const auto_series& in_series, size_t shift);
106 
107 
109  dll_export bool is_defined(const variant& v);
110 
120  void populate_with_changes(series<double>& target, const series<double>& source, size_t period);
121 
132  void populate_with_change_ratios(series<double>& target, series<double>& source, size_t period);
133 
135 
136 
137  /*
138  ** ================================================================
139  ** random
140  ** ================================================================
141  */
142 
146  dll_export int rand_int(int low, int high);
148 
150  dll_export double rand(double low = 0.0, double high = 1.0);
151 
153  dll_export double unit_gaussian(void);
154 
156  dll_export double gaussian(double stdev);
157 
159  dll_export bool rand_bool(double probability_of_true = 0.5);
160 
162  dll_export std::string rand_string(size_t min_len = 10, size_t max_len = 10);
163 
164  // Internal Use: Returns the area between the 'median' and the 'value'. This does not include the
165  // area below the median (which amounts to 50%).
166  dll_export double area_under_normal_curve(double value, double median, double stdDev);
167 
168  // Internal Use: Returns the percent (area under a curve) for a given standard deviate Z
169  // with a precision of 0.1. Arguments are capped and floored at 4 and -4 respectively.
170  dll_export double area_under_normal_curve(double stdDeviateZ);
171 
172  // Internal Use: Returns the normal standart deviate - Z, This is equal to the
173  // number of standard deviations between the MEAN and VALUE
174  dll_export double StandardNormalDeviateZ(double value, double median, double stdDev);
175 
177 
178  /*
179  ** ================================================================
180  ** math
181  ** ================================================================
182  */
183 
187  dll_export double min(const series<double>& series, size_t period);
189 
191  dll_export double lowest(const series<double>& series, size_t period);
192 
194  dll_export size_t count_pos(const series<double>& ser, size_t period);
195 
197  dll_export size_t count_neg(const series<double>& ser, size_t period);
198 
200  dll_export size_t count_zero(const series<double>& ser, size_t period);
201 
203  dll_export size_t count_non_zero(const series<double>& ser, size_t period);
204 
206  dll_export double sum_pos(const series<double>& data, size_t period);
207 
209  dll_export double sum_neg(const series<double>& data, size_t period);
210 
212  dll_export double sum(const series<double>& data, size_t period);
213 
215  dll_export double sum_squares(const series<double>& data, size_t period);
216 
218  dll_export double average(const series<double>& data, size_t period);
219 
220  // @brief Returns the the average value of @b data with given @b period.
221  //dll_export double SMA(const series<double>& data, size_t period);
222 
224  dll_export double average_variable(const series<double>& data, size_t var_period, size_t max_period);
225 
227  dll_export double stdev(const series<double>& data, size_t period);
228 
230  dll_export double variance(const series<double>& data, size_t period);
231 
233  dll_export double correlation(const series<double>& x, const series<double>& y, size_t period);
234 
236  dll_export double max(const series<double>& series, size_t period);
237 
239  dll_export double highest(const series<double>& series, size_t period);
240 
242  dll_export double average_weighted(const series<double>& data, size_t period);
243 
245  dll_export double WMA(const series<double>& data, size_t period);
246 
248  struct dll_export r_tuple {
249  double slope;
250  double rSquare;
251  double yIntercept;
252  double lastLinePoint;
253  };
254 
256  dll_export r_tuple linear_regression(const series<double>& series, size_t period);
257 
258  dll_export r_tuple linear_regression(const series<double>& x, const series<double>& y, size_t period);
259 
261  dll_export double const_e(void);
262 
264  dll_export double const_phi(void);
265 
267  dll_export double const_pi(void);
268 
270  dll_export int64_t trunc(double value);
271 
273  dll_export double cap(double number, double max);
274 
276  dll_export double floor(double number, double min);
277 
279  dll_export double cap_floor(double number, double min, double max);
280 
283  dll_export double safe_divide(double numerator, double denominator, double denominator_adjust = 10e-9);
284 
286  double radians(double degrees);
287 
289  dll_export double degrees(double radians);
290 
292  dll_export double sin_r(double radians);
293 
295  dll_export double square(double arg);
296 
299  dll_export double sqrt(double arg);
300 
301  // Internal Use:
302  dll_export double percent_smaller_than(double threshold, const series<double>& data, size_t period);
303 
304  // Internal Use:
305  dll_export double percent_higher_than(double threshold, const series<double>& data, size_t period);
306 
307 
309 
310 }//tsa
311 
312 #endif
313 
314 
bool is_defined(const variant &v)
Returns true if the given variant v is &#39;defined;. See variant::defined().
Definition: TSAFunctions.cpp:109
r_tuple linear_regression(const series< double > &series, size_t period)
Returns various regression measures of series against time over given period.
Definition: TSAFunctionsScalar.cpp:63
size_t bars_since_max(const series< double > &series, size_t period)
Returns the number of bars since maximum value in series over given period.
Definition: TSAFunctionsScalar.cpp:198
const series< T > shift_by(const series< T > &in_series, size_t shift_by)
Returns a series that is a &#39;shifted&#39; version of the given in_series argument. The returned series wil...
Definition: TSAFunctions.h:99
size_t bars_since(const series< bool > &series, size_t period)
Returns the number of bars since a value in series was &#39;true&#39; (non-zero), in given period...
Definition: TSAFunctionsScalar.cpp:232
double lowest(const series< double > &series, size_t period)
Returns the smallest value found in series over given .
Definition: TSAFunctionsScalar.cpp:214
class series is a template class representing a sequence of values.
Definition: TSASeriesProxy.h:24
Namespace for the &#39;Trading System API&#39; library.
Definition: original1.TSA3Core.cpp:20
double safe_divide(double _numerator, double _denominator, double _denominator_adjust)
This function avoids &#39;division by zero&#39; errors by adding denominator_adjust to denominator when it is...
Definition: TSAFunctions.cpp:55
double variance(const series< double > &data, size_t period)
Returns the population variance in data over period.
Definition: TSAFunctionsScalar.cpp:122
double const_e(void)
Returns the value of E as 2.718281828459045235.
Definition: TSAFunctions.cpp:224
bool turns_pos(const series< double > &series)
Returns true when series crosses above 0.0.
Definition: TSAFunctionsScalar.cpp:298
double unit_gaussian(void)
Returns a random double with a standard deviation of 1.0 and a mean of 0.0.
Definition: TSAFunctions.cpp:35
size_t bars_since_lowest(const series< double > &series, size_t period)
Returns the number of bars since the minimum value in series over given period.
Definition: TSAFunctionsScalar.cpp:256
size_t bars_since_min(const series< double > &series, size_t period)
Returns the number of bars since the minimum value in series over given period.
Definition: TSAFunctionsScalar.cpp:260
double average_weighted(const series< double > &data, size_t period)
Returns the weighted average value of data over given period.
Definition: TSAFunctionsScalar.cpp:330
size_t bars_since_nth(const series< bool > &series, size_t period, size_t n_count)
Returns the number of bars since the n&#39;th value in series was &#39;true&#39; (non-zero), in given period...
Definition: TSAFunctionsScalar.cpp:236
int64_t trunc(double v)
Returns the integer portion of value.
Definition: TSAFunctions.cpp:240
variant objects can represent values of different types.
Definition: TSAVariant.h:140
double highest(const series< double > &series, size_t period)
Returns the highest value found in series over given .
Definition: TSAFunctionsScalar.cpp:176
double radians(double degrees)
Converts degrees to radians.
Definition: TSAFunctions.cpp:78
double stdev(const series< double > &data, size_t period)
Returns the population standard deviation in data over period.
Definition: TSAFunctionsScalar.cpp:142
void populate_with_change_ratios(series< double > &_target, series< double > &_source, size_t _period)
Populates the target series with changes from one value to the next of the source series for the give...
Definition: TSAFunctions.cpp:263
double cap_floor(double _number, double _min, double _max)
Returns number if number is between max and min, else max if above, or min if below.
Definition: TSAFunctions.cpp:70
double WMA(const series< double > &data, size_t period)
Returns the weighted average value of data over given period.
Definition: TSAFunctionsScalar.cpp:325
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
double rand(double _low, double _high)
Returns a random double between low and high (inclusive)
Definition: TSAFunctions.cpp:30
const series< T > shift(size_t _shift_by) const
Returns a series that is a &#39;shifted&#39; version of the given in_series argument. The returned series wil...
Definition: TSASeriesTemplate.h:1154
double sqrt(double d)
Returns the square root of the given argument. Throws an exception if given arg is smaller than 0...
Definition: TSAFunctions.cpp:97
std::string rand_string(size_t _minLen, size_t _maxLen)
Returns a random character string with a length between min_len to max_len.
Definition: TSAFunctions.cpp:50
double const_pi(void)
defines the value of Pi as 3.14159265358979323846264.
Definition: TSAFunctions.cpp:230
size_t bars_since_highest(const series< double > &series, size_t period)
Returns the number of bars since maximum value in series over given period.
Definition: TSAFunctionsScalar.cpp:194
double average(const series< double > &data, size_t period)
Returns the the average value of data with given period.
Definition: TSAFunctionsScalar.cpp:98
double degrees(double radians)
Converts radians to degrees.
Definition: TSAFunctions.cpp:82
double gaussian(double _stddev)
Returns a random double with given stdev and mean of 0.0.
Definition: TSAFunctions.cpp:40
double const_phi(void)
Returns the value of Phi (Golden Ratio) as 1.61803398874989.
Definition: TSAFunctions.cpp:227
bool rand_bool(double _prop)
Returns a random boolean value with a given probability_of_true.
Definition: TSAFunctions.cpp:45
bool turns_neg(const series< double > &series)
Returns true when seris crosses below 0.0.
Definition: TSAFunctionsScalar.cpp:294
double average_variable(const series< double > &data, size_t var_period, size_t max_period)
Returns the the average value of data with a variable period, where the period is capped at max_perio...
Definition: TSAFunctionsScalar.cpp:106
Return tuple of LinearRegression function.
Definition: TSAFunctions.h:248
double square(double _d)
Returns a square of the given argument. Same as std::pow(arg,2).
Definition: TSAFunctions.cpp:93
double cap(double _number, double _max)
Returns the lower of number or max.
Definition: TSAFunctions.cpp:62
bool crosses_below(const series< double > &series_a, const series< double > &series_b)
Returns true when series_a crosses below series_b.
Definition: TSAFunctionsScalar.cpp:281
double floor(double _number, double _min)
Returns the higher of number or min.
Definition: TSAFunctions.cpp:66
bool crosses_above(const series< double > &series_a, const series< double > &series_b)
Returns true when series_a crosses above series_b.
Definition: TSAFunctionsScalar.cpp:276
int rand_int(int _low, int _high)
Returns a random integer between low and high (inclusive)
Definition: TSAFunctions.cpp:25