162 long long own_bar_ = -1;
163 bool has_written_ =
false;
166 bool cached_ =
false;
171 long long cache_seen_bar_ = -1;
172 bool saved_cached_ =
false;
173 double saved_cval_ = 0.0;
174 long long saved_cbar_ = 0;
188 double saved_output_val_;
190 int saved_bar_count_;
210 double saved_prev_src_;
211 int saved_bar_count_;
227 double saved_prev_a_, saved_prev_b_;
242 double saved_prev_a_, saved_prev_b_;
283 double saved_output_val_;
285 int saved_bar_count_;
292 bool na_warmup_ =
false;
293 bool warmup_latched_ =
false;
324 MACD(
int fast_length,
int slow_length,
int signal_length);
370 double saved_prev_close_;
371 int saved_bar_count_;
375 double compute(
double high,
double low,
double close);
376 double recompute(
double high,
double low,
double close);
385 double compute(
double high,
double low,
double close,
double prev_chart_close);
386 double recompute(
double high,
double low,
double close,
double prev_chart_close);
401 double compute(
double src,
double high,
double low);
434 int last_nonzero_sign_;
436 double saved_prev_a_, saved_prev_b_;
437 int saved_last_nonzero_sign_;
507 explicit StdDev(
int length,
bool biased =
true);
512 double held_stdev()
const;
513 double biased_value()
const;
532 double prev_upper_, prev_lower_, prev_st_;
533 double prev_direction_;
538 double saved_prev_upper_, saved_prev_lower_, saved_prev_st_;
539 double saved_prev_direction_, saved_prev_close_;
540 bool saved_initialized_;
566 RMA rma_plus_, rma_minus_, rma_tr_;
568 double prev_high_, prev_low_, prev_close_;
572 double saved_prev_high_, saved_prev_low_, saved_prev_close_;
573 bool saved_first_bar_;
576 DMI(
int di_length,
int adx_smoothing);
588 double start_, increment_, maximum_;
589 double af_, ep_, sar_;
592 double prev_high_, prev_low_, prev_close_;
593 double prev_prev_high_, prev_prev_low_;
596 double saved_af_, saved_ep_, saved_sar_;
597 bool saved_is_long_, saved_initialized_;
598 double saved_prev_high_, saved_prev_low_, saved_prev_close_;
599 double saved_prev_prev_high_, saved_prev_prev_low_;
602 SAR(
double start,
double increment,
double maximum);
603 double compute(
double high,
double low,
double close);
604 double recompute(
double high,
double low,
double close);
626 BB(
int length,
double mult);
651 bool use_true_range_;
657 double range_of(
double high,
double low)
const;
660 KC(
int length,
double mult,
bool use_true_range =
true);
672 int left_bars_, right_bars_;
688 int left_bars_, right_bars_;
739 double sv_sum_, v_sum_;
886 std::vector<double> prices_;
887 std::vector<int> order_;
888 std::vector<double> price_rank_;
924 std::vector<double> scratch_;
975 double offset_, sigma_;
978 std::vector<double> weights_;
981 ALMA(
int length,
double offset = 0.85,
double sigma = 6.0,
bool floor =
false);
991#define PF_ALMA_HAS_FLOOR 1
1017 double saved_prev_src_;
1018 int saved_bar_count_;
1040 double saved_prev_src_;
1041 int saved_bar_count_;
1064 double saved_prev_src_;
1065 int saved_bar_count_;
1068 TSI(
int short_length,
int long_length);
1085 double compute(
double close,
double high,
double low);
1130 KCW(
int length,
double mult,
bool use_true_range =
true);
1131 double compute(
double src,
double high,
double low,
double close);
1132 double recompute(
double src,
double high,
double low,
double close);
1141#define PF_KC_HAS_USE_TRUE_RANGE 1
1150 bool saved_ever_true_;
1165 int max_occurrence_;
1202 double saved_prev_close_;
1203 int saved_bar_count_;
1206 explicit TR(
bool handle_na =
false);
1207 double compute(
double high,
double low,
double close);
1211 double compute(
double high,
double low,
double close,
double prev_chart_close);
1212 double recompute(
double high,
double low,
double close,
double prev_chart_close);
1229 std::vector<double> ranked_;
1232 int entered_at_ = -1;
1239 const std::vector<double>*
push(
double src);
1241 const std::vector<double>*
repush(
double src);
1291 double saved_sum_ = 0.0, saved_prev_close_ =
na<double>();
1292 int saved_bar_count_ = 0;
1308 double saved_sum_ = 0.0;
1312 double compute(
double high,
double low,
double close,
double volume);
1313 double recompute(
double high,
double low,
double close,
double volume);
1327 double saved_nvi_ = 1.0, saved_prev_close_ =
na<double>(),
1329 int saved_bar_count_ = 0;
1348 double saved_pvi_ = 1.0, saved_prev_close_ =
na<double>(),
1350 int saved_bar_count_ = 0;
1367 double saved_pvt_ = 0.0, saved_prev_close_ =
na<double>();
1384 double saved_wad_ = 0.0, saved_prev_close_ =
na<double>();
1388 double compute(
double high,
double low,
double close);
1398 double compute(
double open,
double high,
double low,
double close,
double volume);
1399 double recompute(
double open,
double high,
double low,
double close,
double volume);
1408 double compute(
double high,
double low,
double close,
double volume);
1409 double recompute(
double high,
double low,
double close,
double volume);
1425 double cum_pv_ = 0.0;
1426 double cum_vol_ = 0.0;
1429 double cum_pv_sq_ = 0.0;
1438 int64_t anchor_day_ = std::numeric_limits<int64_t>::min();
1442 double saved_cum_pv_ = 0.0, saved_cum_vol_ = 0.0, saved_cum_pv_sq_ = 0.0;
1443 int64_t saved_anchor_day_ = std::numeric_limits<int64_t>::min();
1445 void roll_anchor(int64_t day);
1454 double compute(
double src,
double volume, int64_t timestamp_ms);
1455 double recompute(
double src,
double volume, int64_t timestamp_ms);
1456 double compute(
double src,
double volume, int64_t timestamp_ms,
1457 const std::string& tz,
const std::string& session);
1458 double recompute(
double src,
double volume, int64_t timestamp_ms,
1459 const std::string& tz,
const std::string& session);
1463 const std::string& tz,
const std::string& session);
1465 const std::string& tz,
const std::string& session);
1473#define PF_VWAP_HAS_SESSION_ANCHOR 1
1483 explicit VWAPBands(
double stdev_mult) : stdev_mult_(stdev_mult) {}
1485 return vwap_.compute_bands(src, volume, timestamp_ms, stdev_mult_);
1488 return vwap_.recompute_bands(src, volume, timestamp_ms, stdev_mult_);
1491 const std::string& tz,
const std::string& session) {
1492 return vwap_.compute_bands(src, volume, timestamp_ms, stdev_mult_, tz, session);
1495 const std::string& tz,
const std::string& session) {
1496 return vwap_.recompute_bands(src, volume, timestamp_ms, stdev_mult_, tz, session);
1518 double cum_pv_ = 0.0;
1519 double cum_vol_ = 0.0;
1520 double cum_pv_sq_ = 0.0;
1521 bool started_ =
false;
1525 double saved_cum_pv_ = 0.0, saved_cum_vol_ = 0.0, saved_cum_pv_sq_ = 0.0;
1526 bool saved_started_ =
false;
1529 bool accumulate(
double src,
double volume,
bool anchor);
1533 double compute(
double src,
double volume,
bool anchor);
1551 return vwap_.compute_bands(src, volume, anchor, stdev_mult_);
1554 return vwap_.recompute_bands(src, volume, anchor, stdev_mult_);
1565#define PF_VWAP_HAS_ANCHOR_INPUT 1
1572 unsigned char state = 0;
1578 std::vector<CountEntry> counts_;
1580 void add_count(
double value);
1581 void remove_count(
double value);
1582 double current_mode()
const;
1598 explicit Range(
int length) : highest_(length), lowest_(length) {}
1611 explicit Dev(
int length) : length_(length) {}
1632 double high,
double low,
double close);
1643 double low,
double close,
double next_open);
1692 double open,
double high,
double low,
double close);
1694 double open,
double high,
double low,
double close);
1696 std::vector<double>
compute(
const std::string& type,
bool anchor,
bool developing,
1697 double open,
double high,
double low,
double close);
1698 std::vector<double>
recompute(
const std::string& type,
bool anchor,
bool developing,
1699 double open,
double high,
double low,
double close);
1707 void enter(
double o,
double h,
double l,
double c);
1712 static Levels no_levels();
1715 Levels held_ = no_levels();
1716 Period saved_period_;
1717 Levels saved_held_ = no_levels();
1724#define PF_PIVOT_LEVELS_HAS_ANCHOR 1
double compute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double high, double low, double close)
double compute(double high, double low, double close, double prev_chart_close)
void observe_owned_storage(OwnedStorage &) const noexcept
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)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double recompute(double src)
BBW(int length, double mult)
BBResult recompute(double src)
BB(int length, double mult)
void observe_owned_storage(OwnedStorage &out) const noexcept
BBResult compute(double src)
BarContextScope(const BarContextScope &)=delete
void observe_owned_storage(OwnedStorage &) const noexcept
BarContextScope & operator=(const BarContextScope &)=delete
BarContextScope(long long bar_index, long long origin)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double compute(double src)
double compute(double src, int length=1)
double recompute(double src, int length=1)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src1, double src2)
double recompute(double src1, double src2)
void observe_owned_storage(OwnedStorage &out) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
bool compute(double a, double b)
bool recompute(double a, double b)
void observe_owned_storage(OwnedStorage &) const noexcept
bool recompute(double a, double b)
bool compute(double a, double b)
void observe_owned_storage(OwnedStorage &) const noexcept
bool recompute(double a, double b)
bool compute(double a, double b)
double compute(double src)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &) const noexcept
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())
void observe_owned_storage(OwnedStorage &out) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double compute(double src)
double compute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double recompute(double high, double low, double close, double volume)
double compute(double high, double low, double close, double volume)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double src, double high, double low, double close)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src, double high, double low, double close)
KCW(int length, double mult, bool use_true_range=true)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double recompute(double src)
MACDResult recompute(double src)
MACD(int fast_length, int slow_length, int signal_length)
void observe_owned_storage(OwnedStorage &out) const noexcept
MACDResult compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src, double vol)
double recompute(double src, double vol)
double compute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double close, double volume)
double compute(double close, double volume)
double recompute(double close, double volume)
double compute(double close, double volume)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double close, double volume)
double compute(double close, double volume)
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double close, double volume)
double compute(double close, double volume)
double compute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
PercentileLinearInterpolation(int length)
double recompute(double src, double percentage)
double compute(double src, double percentage)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src, double percentage)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src, double percentage)
PercentileNearestRank(int length)
const std::vector< double > * push(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
const std::vector< double > * repush(double src)
PercentileWindow(int length)
double compute(double src)
PivotHigh(int left_bars, int right_bars)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double compute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src)
double compute(double src)
double recompute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
StdDev(int length, bool biased=true)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double src)
double compute(double src)
double compute(double src, double high, double low)
double recompute(double src, double high, double low)
void observe_owned_storage(OwnedStorage &out) const noexcept
Supertrend(double factor, int atr_period)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &) const noexcept
double recompute(double high, double low, double close)
double compute(double high, double low, double close)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double src, double vol)
double recompute(double src, double vol)
void observe_owned_storage(OwnedStorage &out) const noexcept
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)
void observe_owned_storage(OwnedStorage &out) const noexcept
double compute(double high, double low, double close)
double recompute(double high, double low, double close)
void observe_owned_storage(OwnedStorage &) const noexcept
WindowCacheStats cache_stats() const
double recompute(double src)
double compute(double src)
void observe_owned_storage(OwnedStorage &out) const noexcept
WMA(int length, WindowCacheCapacity cache=window_cache_capacity())
double compute(double close, double high, double low)
void observe_owned_storage(OwnedStorage &out) const noexcept
double recompute(double close, double high, double low)
double recompute(double open, double high, double low, double close, double volume)
void observe_owned_storage(OwnedStorage &) const noexcept
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)
double nearest_rank_of(const std::vector< double > *ranked, double percentage)
PivotLevelsType pivot_levels_type(const std::string &name)
WindowCacheCapacity & window_cache_capacity()
void observe_owned_members(OwnedStorage &out, const T &... values) noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept
void observe_owned_storage(OwnedStorage &) const noexcept