PineForge v0.13.1-379-g9b50973
Deterministic PineScript v6 backtest runtime — C ABI reference
Loading...
Searching...
No Matches
execution_consumer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <pineforge/bar.hpp>
5
6#include <cstdint>
7#include <memory>
8#include <string>
9#include <unordered_map>
10#include <vector>
11
12namespace pineforge {
13
14struct SymInfo;
15
16inline namespace engine_script_run_v18 {
17
18class BacktestEngine;
19
20// Constructor-bound execution consumer. NativeExecutionConsumer owns lifecycle,
21// matching and the sole timeline allocator. It is not copyable.
23public:
24 IExecutionConsumer() = default;
25 virtual ~IExecutionConsumer() = default;
30
31 virtual bool is_native() const noexcept = 0;
32 virtual void refuse_source_mutation(const char* operation) = 0;
34 const std::vector<std::int64_t>& timestamps,
35 const std::vector<double>& rates) = 0;
36 virtual uint64_t continuation_hash() const noexcept = 0;
37
38 virtual void run_simple(BacktestEngine& engine, const Bar* bars, int n) = 0;
39 virtual void run_tf(BacktestEngine& engine,
40 const Bar* input_bars, int n_input,
41 const std::string& input_tf,
42 const std::string& script_tf,
43 bool bar_magnifier,
44 int magnifier_samples,
45 MagnifierDistribution magnifier_dist) = 0;
46 virtual void run_rich(BacktestEngine& engine,
47 const Bar* input_bars, int n_input,
48 const std::string& input_tf,
49 const std::string& script_tf,
50 const std::unordered_map<std::string, std::string>& inputs,
51 const SymInfo& syminfo,
52 // Opaque host-override handle, forwarded verbatim.
53 const void* overrides,
54 bool bar_magnifier,
55 int magnifier_samples,
56 MagnifierDistribution magnifier_dist) = 0;
57
58 virtual bool stream_begin(BacktestEngine& engine,
59 const Bar* warmup_bars, int n_warmup,
60 const std::string& input_tf,
61 const std::string& script_tf) = 0;
62 virtual bool stream_push_bar(BacktestEngine& engine, const Bar& bar) = 0;
63 virtual bool stream_push_tick(BacktestEngine& engine, const TradeTick& tick) = 0;
64 virtual bool stream_push_ticks(BacktestEngine& engine, const TradeTick* ticks, int n) = 0;
65 virtual bool stream_advance_time(BacktestEngine& engine, int64_t timestamp_ms) = 0;
66 virtual bool stream_end(BacktestEngine& engine, bool finalize_partial_input_bar) = 0;
67};
68
70
71} // inline namespace engine_script_run_v18
72} // namespace pineforge
virtual void run_rich(BacktestEngine &engine, const Bar *input_bars, int n_input, const std::string &input_tf, const std::string &script_tf, const std::unordered_map< std::string, std::string > &inputs, const SymInfo &syminfo, const void *overrides, bool bar_magnifier, int magnifier_samples, MagnifierDistribution magnifier_dist)=0
virtual bool stream_push_tick(BacktestEngine &engine, const TradeTick &tick)=0
virtual void run_tf(BacktestEngine &engine, const Bar *input_bars, int n_input, const std::string &input_tf, const std::string &script_tf, bool bar_magnifier, int magnifier_samples, MagnifierDistribution magnifier_dist)=0
virtual bool stream_begin(BacktestEngine &engine, const Bar *warmup_bars, int n_warmup, const std::string &input_tf, const std::string &script_tf)=0
virtual void run_simple(BacktestEngine &engine, const Bar *bars, int n)=0
virtual uint64_t continuation_hash() const noexcept=0
IExecutionConsumer(IExecutionConsumer &&)=delete
virtual bool stream_end(BacktestEngine &engine, bool finalize_partial_input_bar)=0
IExecutionConsumer & operator=(IExecutionConsumer &&)=delete
virtual bool stage_account_currency_fx_series(const std::vector< std::int64_t > &timestamps, const std::vector< double > &rates)=0
virtual bool stream_advance_time(BacktestEngine &engine, int64_t timestamp_ms)=0
IExecutionConsumer(const IExecutionConsumer &)=delete
IExecutionConsumer & operator=(const IExecutionConsumer &)=delete
virtual bool stream_push_bar(BacktestEngine &engine, const Bar &bar)=0
virtual void refuse_source_mutation(const char *operation)=0
virtual bool stream_push_ticks(BacktestEngine &engine, const TradeTick *ticks, int n)=0
std::unique_ptr< IExecutionConsumer > make_native_execution_consumer()
MagnifierDistribution
Definition magnifier.hpp:7