157 long long own_bar_ = -1;
158 bool has_written_ =
false;
161 bool cached_ =
false;
166 long long cache_seen_bar_ = -1;
167 bool saved_cached_ =
false;
168 double saved_cval_ = 0.0;
169 long long saved_cbar_ = 0;
179 double saved_output_val_;
181 int saved_bar_count_;
198 double saved_prev_src_;
199 int saved_bar_count_;
211 double saved_prev_a_, saved_prev_b_;
223 double saved_prev_a_, saved_prev_b_;
257 double saved_output_val_;
259 int saved_bar_count_;
266 bool na_warmup_ =
false;
267 bool warmup_latched_ =
false;
293 MACD(
int fast_length,
int slow_length,
int signal_length);
327 double saved_prev_close_;
328 int saved_bar_count_;
332 double compute(
double high,
double low,
double close);
333 double recompute(
double high,
double low,
double close);
342 double compute(
double high,
double low,
double close,
double prev_chart_close);
343 double recompute(
double high,
double low,
double close,
double prev_chart_close);
354 double compute(
double src,
double high,
double low);
361 std::deque<double> history;
379 int last_nonzero_sign_;
381 double saved_prev_a_, saved_prev_b_;
382 int saved_last_nonzero_sign_;
435 std::deque<double> buffer_;
441 explicit StdDev(
int length,
bool biased =
true);
446 double held_stdev()
const;
447 double biased_value()
const;
460 double prev_upper_, prev_lower_, prev_st_;
461 double prev_direction_;
466 double saved_prev_upper_, saved_prev_lower_, saved_prev_st_;
467 double saved_prev_direction_, saved_prev_close_;
468 bool saved_initialized_;
488 RMA rma_plus_, rma_minus_, rma_tr_;
490 double prev_high_, prev_low_, prev_close_;
494 double saved_prev_high_, saved_prev_low_, saved_prev_close_;
495 bool saved_first_bar_;
498 DMI(
int di_length,
int adx_smoothing);
506 double start_, increment_, maximum_;
507 double af_, ep_, sar_;
510 double prev_high_, prev_low_, prev_close_;
511 double prev_prev_high_, prev_prev_low_;
514 double saved_af_, saved_ep_, saved_sar_;
515 bool saved_is_long_, saved_initialized_;
516 double saved_prev_high_, saved_prev_low_, saved_prev_close_;
517 double saved_prev_prev_high_, saved_prev_prev_low_;
520 SAR(
double start,
double increment,
double maximum);
521 double compute(
double high,
double low,
double close);
522 double recompute(
double high,
double low,
double close);
539 BB(
int length,
double mult);
558 bool use_true_range_;
564 double range_of(
double high,
double low)
const;
567 KC(
int length,
double mult,
bool use_true_range =
true);
575 int left_bars_, right_bars_;
576 std::deque<double> buffer_;
587 int left_bars_, right_bars_;
588 std::deque<double> buffer_;
600 std::deque<double> buffer_;
612 std::deque<double> buffer_;
624 std::deque<double> sv_buffer_;
625 std::deque<double> v_buffer_;
626 double sv_sum_, v_sum_;
638 std::deque<double> buffer_;
650 std::deque<double> buffer_;
662 std::deque<double> buffer_;
674 std::deque<double> buffer_;
686 std::deque<double> buffer_;
739 std::deque<double> buffer_;
740 std::vector<double> prices_;
741 std::vector<int> order_;
742 std::vector<double> price_rank_;
757 std::deque<double> buffer_;
769 std::deque<double> buffer_;
770 std::vector<double> scratch_;
809 double offset_, sigma_;
811 std::deque<double> buffer_;
812 std::vector<double> weights_;
815 ALMA(
int length,
double offset = 0.85,
double sigma = 6.0,
bool floor =
false);
821#define PF_ALMA_HAS_FLOOR 1
826 std::deque<double> buffer_;
843 double saved_prev_src_;
844 int saved_bar_count_;
862 double saved_prev_src_;
863 int saved_bar_count_;
882 double saved_prev_src_;
883 int saved_bar_count_;
886 TSI(
int short_length,
int long_length);
899 double compute(
double close,
double high,
double low);
900 double recompute(
double close,
double high,
double low);
907 std::deque<double> buffer_;
921 BBW(
int length,
double mult);
932 KCW(
int length,
double mult,
bool use_true_range =
true);
933 double compute(
double src,
double high,
double low,
double close);
934 double recompute(
double src,
double high,
double low,
double close);
939#define PF_KC_HAS_USE_TRUE_RANGE 1
948 bool saved_ever_true_;
959 std::deque<double> values_;
962 std::deque<double> saved_values_;
974 std::deque<double> x_buffer_, y_buffer_;
989 double saved_prev_close_;
990 int saved_bar_count_;
993 explicit TR(
bool handle_na =
false);
994 double compute(
double high,
double low,
double close);
995 double recompute(
double high,
double low,
double close);
998 double compute(
double high,
double low,
double close,
double prev_chart_close);
999 double recompute(
double high,
double low,
double close,
double prev_chart_close);
1012 std::deque<double> history_;
1013 std::vector<double> ranked_;
1016 int entered_at_ = -1;
1023 const std::vector<double>*
push(
double src);
1025 const std::vector<double>*
repush(
double src);
1058 double saved_sum_ = 0.0, saved_prev_close_ =
na<double>();
1059 int saved_bar_count_ = 0;
1072 double saved_sum_ = 0.0;
1076 double compute(
double high,
double low,
double close,
double volume);
1077 double recompute(
double high,
double low,
double close,
double volume);
1088 double saved_nvi_ = 1.0, saved_prev_close_ =
na<double>(),
1090 int saved_bar_count_ = 0;
1106 double saved_pvi_ = 1.0, saved_prev_close_ =
na<double>(),
1108 int saved_bar_count_ = 0;
1122 double saved_pvt_ = 0.0, saved_prev_close_ =
na<double>();
1136 double saved_wad_ = 0.0, saved_prev_close_ =
na<double>();
1140 double compute(
double high,
double low,
double close);
1147 double compute(
double open,
double high,
double low,
double close,
double volume);
1148 double recompute(
double open,
double high,
double low,
double close,
double volume);
1154 double compute(
double high,
double low,
double close,
double volume);
1155 double recompute(
double high,
double low,
double close,
double volume);
1166 double cum_pv_ = 0.0;
1167 double cum_vol_ = 0.0;
1170 double cum_pv_sq_ = 0.0;
1179 int64_t anchor_day_ = std::numeric_limits<int64_t>::min();
1183 double saved_cum_pv_ = 0.0, saved_cum_vol_ = 0.0, saved_cum_pv_sq_ = 0.0;
1184 int64_t saved_anchor_day_ = std::numeric_limits<int64_t>::min();
1186 void roll_anchor(int64_t day);
1195 double compute(
double src,
double volume, int64_t timestamp_ms);
1196 double recompute(
double src,
double volume, int64_t timestamp_ms);
1197 double compute(
double src,
double volume, int64_t timestamp_ms,
1198 const std::string& tz,
const std::string& session);
1199 double recompute(
double src,
double volume, int64_t timestamp_ms,
1200 const std::string& tz,
const std::string& session);
1204 const std::string& tz,
const std::string& session);
1206 const std::string& tz,
const std::string& session);
1211#define PF_VWAP_HAS_SESSION_ANCHOR 1
1221 explicit VWAPBands(
double stdev_mult) : stdev_mult_(stdev_mult) {}
1223 return vwap_.compute_bands(src, volume, timestamp_ms, stdev_mult_);
1226 return vwap_.recompute_bands(src, volume, timestamp_ms, stdev_mult_);
1229 const std::string& tz,
const std::string& session) {
1230 return vwap_.compute_bands(src, volume, timestamp_ms, stdev_mult_, tz, session);
1233 const std::string& tz,
const std::string& session) {
1234 return vwap_.recompute_bands(src, volume, timestamp_ms, stdev_mult_, tz, session);
1252 double cum_pv_ = 0.0;
1253 double cum_vol_ = 0.0;
1254 double cum_pv_sq_ = 0.0;
1255 bool started_ =
false;
1259 double saved_cum_pv_ = 0.0, saved_cum_vol_ = 0.0, saved_cum_pv_sq_ = 0.0;
1260 bool saved_started_ =
false;
1263 bool accumulate(
double src,
double volume,
bool anchor);
1267 double compute(
double src,
double volume,
bool anchor);
1282 return vwap_.compute_bands(src, volume, anchor, stdev_mult_);
1285 return vwap_.recompute_bands(src, volume, anchor, stdev_mult_);
1292#define PF_VWAP_HAS_ANCHOR_INPUT 1
1299 unsigned char state = 0;
1303 std::deque<double> buffer_;
1304 std::vector<CountEntry> counts_;
1306 void add_count(
double value);
1307 void remove_count(
double value);
1308 double current_mode()
const;
1320 explicit Range(
int length) : highest_(length), lowest_(length) {}
1327 std::deque<double> buffer_;
1329 explicit Dev(
int length) : length_(length) {}
1346 double high,
double low,
double close);
1357 double low,
double close,
double next_open);
1406 double open,
double high,
double low,
double close);
1408 double open,
double high,
double low,
double close);
1410 std::vector<double>
compute(
const std::string& type,
bool anchor,
bool developing,
1411 double open,
double high,
double low,
double close);
1412 std::vector<double>
recompute(
const std::string& type,
bool anchor,
bool developing,
1413 double open,
double high,
double low,
double close);
1421 void enter(
double o,
double h,
double l,
double c);
1426 static Levels no_levels();
1429 Levels held_ = no_levels();
1430 Period saved_period_;
1431 Levels saved_held_ = no_levels();
1435#define PF_PIVOT_LEVELS_HAS_ANCHOR 1
double compute(double src)
double recompute(double src)
ALMA(int length, double offset=0.85, double sigma=6.0, bool floor=false)
double recompute(double high, double low, double close)
double recompute(double high, double low, double close, double prev_chart_close)
double compute(double high, double low, double close)
double compute(double high, double low, double close, double prev_chart_close)
double compute(double high, double low, double close, double volume)
double recompute(double high, double low, double close, double volume)
double recompute(double src)
double compute(double src)
double recompute(double src)
double compute(double src)
VWAPBandsResult compute(double src, double volume, bool anchor)
AnchoredVWAPBands(double stdev_mult)
VWAPBandsResult recompute(double src, double volume, bool anchor)
double recompute(double src, double volume, bool anchor)
double compute(double src, double volume, bool anchor)
VWAPBandsResult recompute_bands(double src, double volume, bool anchor, double stdev_mult)
VWAPBandsResult compute_bands(double src, double volume, bool anchor, double stdev_mult)
double compute(double src)
double recompute(double src)
BBW(int length, double mult)
BBResult recompute(double src)
BB(int length, double mult)
BBResult compute(double src)
BarContextScope(const BarContextScope &)=delete
BarContextScope & operator=(const BarContextScope &)=delete
BarContextScope(long long bar_index, long long origin)
double compute(double src)
double recompute(double src)
double recompute(double src)
double compute(double src)
double recompute(double src)
double compute(double src)
double compute(double src, int length=1)
double recompute(double src, int length=1)
double compute(double src1, double src2)
double recompute(double src1, double src2)
bool compute(double a, double b)
bool recompute(double a, double b)
bool recompute(double a, double b)
bool compute(double a, double b)
bool recompute(double a, double b)
bool compute(double a, double b)
double compute(double src)
double recompute(double src)
DMI(int di_length, int adx_smoothing)
DMIResult compute(double high, double low, double close)
DMIResult recompute(double high, double low, double close)
double recompute(double src)
double compute(double src)
double compute(double src)
EMA(int length, EmaSeeding seeding)
double recompute(double src)
Result update(double src, bool advance, bool want_max)
WindowCacheStats cache_stats() const
ExtremeRing(int length, WindowCacheCapacity cache=window_cache_capacity())
double recompute(double src)
double compute(double src)
double compute(double src)
double recompute(double src)
double compute(double src)
double recompute(double src)
double recompute(double src)
double compute(double src)
double recompute(double high, double low, double close, double volume)
double compute(double high, double low, double close, double volume)
double recompute(double src, double high, double low, double close)
double compute(double src, double high, double low, double close)
KCW(int length, double mult, bool use_true_range=true)
KCResult compute(double src, double high, double low, double close)
KC(int length, double mult, bool use_true_range=true)
KCResult recompute(double src, double high, double low, double close)
double recompute(double src, double offset)
double compute(double src, double offset)
double recompute(double src)
double compute(double src)
double compute(double src)
double recompute(double src)
MACDResult recompute(double src)
MACD(int fast_length, int slow_length, int signal_length)
MACDResult compute(double src)
double compute(double src, double vol)
double recompute(double src, double vol)
double compute(double src)
double recompute(double src)
double recompute(double src)
double compute(double src)
double recompute(double close, double volume)
double compute(double close, double volume)
double recompute(double close, double volume)
double compute(double close, double volume)
double recompute(double close, double volume)
double compute(double close, double volume)
double recompute(double close, double volume)
double compute(double close, double volume)
double compute(double src)
double recompute(double src)
PercentileLinearInterpolation(int length)
double recompute(double src, double percentage)
double compute(double src, double percentage)
double recompute(double src, double percentage)
double compute(double src, double percentage)
PercentileNearestRank(int length)
const std::vector< double > * push(double src)
const std::vector< double > * repush(double src)
PercentileWindow(int length)
double compute(double src)
PivotHigh(int left_bars, int right_bars)
double recompute(double src)
PivotLow(int left_bars, int right_bars)
double recompute(double src)
double compute(double src)
std::vector< double > recompute(const std::string &type, bool anchor, bool developing, double open, double high, double low, double close)
PivotPointLevels()=default
std::vector< double > recompute(PivotLevelsType type, bool anchor, bool developing, double open, double high, double low, double close)
std::vector< double > compute(const std::string &type, bool anchor, bool developing, double open, double high, double low, double close)
std::vector< double > compute(PivotLevelsType type, bool anchor, bool developing, double open, double high, double low, double close)
double recompute(double src)
double compute(double src)
double compute(double src)
double recompute(double src)
double recompute(double src)
double compute(double src)
double compute(double src)
double recompute(double src)
double compute(double src)
double recompute(double src)
double compute(double src)
double recompute(double src)
SAR(double start, double increment, double maximum)
double compute(double high, double low, double close)
double recompute(double high, double low, double close)
double recompute(double src)
double compute(double src)
double compute(double src)
double recompute(double src)
StdDev(int length, bool biased=true)
double recompute(double src)
double compute(double src)
double compute(double src, double high, double low)
double recompute(double src, double high, double low)
Supertrend(double factor, int atr_period)
SupertrendResult recompute(double high, double low, double close)
SupertrendResult compute(double high, double low, double close)
double compute(double high, double low, double close, double prev_chart_close)
double recompute(double high, double low, double close, double prev_chart_close)
double recompute(double high, double low, double close)
double compute(double high, double low, double close)
double compute(double src)
TSI(int short_length, int long_length)
double recompute(double src)
VWAPBandsResult recompute(double src, double volume, int64_t timestamp_ms)
VWAPBandsResult compute(double src, double volume, int64_t timestamp_ms)
VWAPBands(double stdev_mult)
VWAPBandsResult compute(double src, double volume, int64_t timestamp_ms, const std::string &tz, const std::string &session)
VWAPBandsResult recompute(double src, double volume, int64_t timestamp_ms, const std::string &tz, const std::string &session)
double recompute(double src, double volume, int64_t timestamp_ms)
double recompute(double src, double volume, int64_t timestamp_ms, const std::string &tz, const std::string &session)
VWAPBandsResult recompute_bands(double src, double volume, int64_t timestamp_ms, double stdev_mult)
double compute(double src, double volume, int64_t timestamp_ms, const std::string &tz, const std::string &session)
VWAPBandsResult recompute_bands(double src, double volume, int64_t timestamp_ms, double stdev_mult, const std::string &tz, const std::string &session)
VWAPBandsResult compute_bands(double src, double volume, int64_t timestamp_ms, double stdev_mult, const std::string &tz, const std::string &session)
double compute(double src, double volume, int64_t timestamp_ms)
VWAPBandsResult compute_bands(double src, double volume, int64_t timestamp_ms, double stdev_mult)
double compute(double src, double vol)
double recompute(double src, double vol)
double compute(bool condition, double source, int occurrence)
double recompute(bool condition, double source, int occurrence)
ValueWhen(int max_occurrence=1)
Variance(int length, bool biased=true)
double recompute(double src)
double compute(double src)
double compute(double high, double low, double close)
double recompute(double high, double low, double close)
WindowCacheStats cache_stats() const
double recompute(double src)
double compute(double src)
WMA(int length, WindowCacheCapacity cache=window_cache_capacity())
double compute(double close, double high, double low)
double recompute(double close, double high, double low)
double recompute(double open, double high, double low, double close, double volume)
double compute(double open, double high, double low, double close, double volume)
bool & ema_na_warmup_flag()
BarContext & bar_context()
std::vector< double > pivot_point_levels(const std::string &method, double high, double low, double close)
PivotLevelsType pivot_levels_type(const std::string &name)
WindowCacheCapacity & window_cache_capacity()