Primary headers (public API):
headers/pnf/types.hppheaders/pnf/box.hppheaders/pnf/column.hppheaders/pnf/chart.hppheaders/pnf/trendline.hppheaders/pnf/indicators.hppheaders/pnf/events.hppheaders/pnf/backtest.hppheaders/pnf/features.hppheaders/pnf/scanner.hppheaders/pnf/data_adapters.hppheaders/pnf/walk_forward.hppheaders/pnf/visualization.hppheaders/pnf/csv_loader.hppheaders/pnf/version.hpp
For exhaustive symbol-level coverage generated from source, see:
BoxTypeColumnTypeConstructionMethodBoxSizeMethodTrendLineTypeSignalTypePatternTypeEventTypeTradeDirectionPositionStateEntryPolicyExitPolicy
OHLCSignalPatternSupportResistanceLevelPriceObjectiveTrendLinePointChartConfigIndicatorConfigColumnDataChartDataIndicatorDataEventStreamConfigChartEventEventStreamSnapshotBacktestConfigTradeEquityPointBacktestResultFeatureVectorFeatureMatrixPatternQualityScorePatternQualityConfigScanConfigSymbolSeriesScanRowBatchScanResultDataAdapterOptionsWalkForwardConfigWalkForwardWindowResultWalkForwardResult
pattern_type_to_string(PatternType)is_bullish_pattern(PatternType)is_bearish_pattern(PatternType)event_type_to_string(EventType)trade_direction_to_string(TradeDirection)position_state_to_string(PositionState)
- constructor:
Box(price, type, marker = "") price(),type(),marker()set_marker(...),set_type(...)to_string()
- constructor:
Column(type = ColumnType::X) add_box(...)(overloads)remove_box(...),has_box(...)get_box(...),get_box_at(...)get_box_marker(...),set_box_marker(...)box_count(),highest_price(),lowest_price()type(),set_type(...)clear(),to_string()
- constructor:
Chart(const ChartConfig&) - ingestion:
add_data(...)(OHLC/close overloads),add_ohlc(...) - structure:
column_count(),column(i),last_column() - stats:
x_column_count(),o_column_count(),mixed_column_count() - index helpers:
x_column_indices(),o_column_indices(),mixed_column_indices() - market state:
all_prices(),config(),current_box_size() - bias/support checks:
has_bullish_bias(),has_bearish_bias(),should_take_bullish_signals(),should_take_bearish_signals(),is_above_bullish_support(...),is_below_bearish_resistance(...) - lifecycle/export:
clear(),to_string(),columns()
- constructor with start point +
box_size update_end_point(...),is_broken(...),test(...),price_at_column(...)type(),start_point(),end_point(),is_active(),set_active(...),was_touched(),touch_count()to_string()
- constructor:
TrendLineManager(box_size) - mutation:
update(...),process_new_column(...),check_break(...) - queries:
active_trend_line(),all_trend_lines(),is_above_bullish_support(...),is_below_bearish_resistance(...),has_bullish_bias(),has_bearish_bias() - lifecycle:
clear(),set_box_size(...),to_string()
MovingAverageBollingerBandsRSIOnBalanceVolumeBullishPercentSignalDetectorPatternRecognizerSupportResistancePriceObjectiveCalculatorCongestionDetector
Each component exposes:
- configuration setters (where applicable)
calculate/detect/identify- point queries by column
- vector accessors for computed series
to_string()
- constructors: default +
Indicators(const IndicatorConfig&) - configuration:
configure(...),config() - execution:
calculate(...),calculate_with_volume(...) - accessors for each component pointer (const + mutable)
- exports:
export_data(),export_chart_data(...) - summary:
summary(),to_string()
- constructor:
EventStream(chart_config, indicator_config, stream_config) - ingestion:
add_data(...)(OHLC/close overloads),add_ohlc(...) - event access:
events(),events_copy(),consume_events() - state access:
snapshot(),chart(),indicators() - lifecycle:
reset()
EventStream is an additive wrapper over Chart and Indicators. It does not change chart construction behavior; it observes each incremental update and emits structured ChartEvent records for column creation, column extension, reversals, signals, patterns, objectives, support/resistance changes, and congestion detection.
- constructor:
Backtester(const BacktestConfig&) - execution:
run(data, chart_config, indicator_config) - configuration:
config()
- trade list:
trades - equity samples:
equity_curve - headline metrics:
final_equity,total_return,max_drawdown,win_rate,profit_factor,average_trade_pnl,exposure,sharpe_ratio - counts:
trade_count,winning_trades,losing_trades - summary:
to_string()
The built-in backtester consumes EventStream output, so strategy decisions are made only from events emitted after each historical bar is processed. This keeps the path close to live event processing and avoids vectorized lookahead assumptions.
FeatureVectoris the stable numeric ML row: column count, last column type, box size, reversal, trend bias, bullish percent, support/resistance distance, latest pattern type, objective distance, congestion width, SMA distance, and RSI.FeatureMatrixstores column names and feature rows; usevalues()for row-major numeric export andto_csv()for text export.extract_features(chart, indicators)reuses already-calculated indicators.extract_features(chart, indicator_config)calculates indicators internally.extract_feature_matrix(charts, config)exports one row per chart.objective_distance(price, objective)returns signed relative distance to a target.
PatternQualityConfigtunes quality scoring inputs.score_pattern_quality(chart, indicators, pattern, config)scores one pattern.score_patterns(chart, indicators, config)scores every detected pattern.- Score dimensions are freshness, breakout strength, column symmetry, congestion context, support/resistance distance, trend alignment, and objective room.
ScanConfigcombines chart config, indicator config, freshness lookback, and support/resistance tolerance.SymbolSeriescarries aligned OHLCV vectors for one symbol.scan(symbols, config)returns aBatchScanResultwith oneScanRowper symbol.BatchScanResult::feature_matrix()exports scanner rows as aFeatureMatrix.rank_by_bullish_percent,latest_patterns,fresh_breakouts,near_support,near_resistance, andobjective_distanceare post-scan filters/helpers.
DataAdapters::is_supported(format)reports local format support.DataAdapters::load,load_csv,load_metatrader_export, andload_tradingview_exportreturnstd::vector<OHLC>.DataAdapters::save_csvwrites OHLC data in the configured delimiter/header layout.DataAdapterOptionsmaps timestamp, open, high, low, close, volume, delimiter, and header behavior.
WalkForwardConfigcontrols rolling train/test lengths, step size, candidate chart configs, and candidate indicator configs.walk_forward_optimize(data, config)returns window-level best parameters, train/test performance, stability score, overfit warnings, and split-performance text.
- constructor with
RenderConfig render(chart),render_with_indicators(chart, indicators)set_config(...),config()
- constructor with
SvgConfig render(chart),render_with_indicators(chart, indicators)set_config(...),config()
- constructor with
JsonConfig export_chart(...),export_chart_with_indicators(...),export_indicators(...)set_config(...),config()
export_columns(...)export_boxes(...)export_signals(...)export_patterns(...)export_indicator_values(...)
to_svg(chart, indicators, config)to_png(chart, indicators, config)to_html(chart, indicators, config)to_plotly_json(chart, indicators, config)
PlotExportConfig controls title, annotation toggles for signals/patterns/objectives/month markers/support-resistance, and PNG scale. Use these exports for reproducible reports where dashboard state is not enough.
to_ascii(...)to_svg(...)to_json(...)to_csv_columns(...)to_csv_boxes(...)to_ascii_with_indicators(...)to_svg_with_indicators(...)to_json_with_indicators(...)
load(filename)parse_datetime(date_str, format)
Version::majorVersion::minorVersion::patchVersion::string