19#define PINEFORGE_HAS_EXPLICIT_PINE_CAP_V1 1
20#define PINEFORGE_HAS_EXPLICIT_PINE_EXECUTION_ADAPTER_V1 1
21#define PINEFORGE_HAS_NATIVE_LOWERING_V1 1
24#define PINEFORGE_HAS_SYMBOL_SECURITY_EVAL_V1 1
25#define PINEFORGE_HAS_TRADE_SCRATCH_V1 1
51 double mintick = std::numeric_limits<double>::quiet_NaN();
368 double limit_price =
std::numeric_limits<
double>::quiet_NaN(),
369 double stop_price =
std::numeric_limits<
double>::quiet_NaN(),
370 double qty =
std::numeric_limits<
double>::quiet_NaN(),
371 const
std::
string& comment = {},
372 const std::string& oca_name = {},
int oca_type = 0,
374 void strategy_close(
const std::string&
id,
const std::string& comment = {},
375 double qty = std::numeric_limits<double>::quiet_NaN(),
376 double qty_percent = std::numeric_limits<double>::quiet_NaN(),
377 bool immediately =
false);
378 void strategy_close(
const std::string&
id,
const std::string& comment,
379 double qty,
double qty_percent,
bool immediately,
380 std::uint64_t callsite_token);
382 void strategy_exit(
const std::string&
id,
const std::string& from_entry,
383 double limit_price,
double stop_price,
384 double trail_points = std::numeric_limits<double>::quiet_NaN(),
385 double trail_offset = std::numeric_limits<double>::quiet_NaN(),
386 double trail_price = std::numeric_limits<double>::quiet_NaN(),
387 double qty_percent = 100.0,
const std::string& comment = {},
388 double qty = std::numeric_limits<double>::quiet_NaN(),
389 const std::string& oca_name = {},
390 double profit_ticks = std::numeric_limits<double>::quiet_NaN(),
391 double loss_ticks = std::numeric_limits<double>::quiet_NaN());
393 const std::string& from_entry,
394 const std::string& comment = {});
397 void strategy_order(
const std::string&
id,
bool is_long,
double qty,
398 double limit_price = std::numeric_limits<double>::quiet_NaN(),
399 double stop_price = std::numeric_limits<double>::quiet_NaN(),
400 const std::string& oca_name = {},
int oca_type = 0);
416 int* close_only,
int* partition) const;
419 double* trail_activation) const;
457 const std::string& input_tf)
override;
461 const Bar* bars,
const int64_t* close_ms,
int n)
override;
bool set_symbol_feed_borrowed(
const std::string& key,
const std::string&
timeframe,
const Bar* bars,
const int64_t* close_ms,
int n)
override;
463 const std::string& name,
const double* values,
466 const std::string& value)
override;
468 const double* values,
int n)
override;
474 const double* values,
int n, std::size_t cache_capacity_bytes);
482 std::size_t cache_capacity_bytes);
483#ifdef PINEFORGE_HAS_AUX_SECURITY_FEED_V1
509 double qty = std::numeric_limits<double>::quiet_NaN();
540 guard_native_mutation(
"set_margin_call_enabled");
562 guard_native_mutation(
"set_realtime_tail");
588 guard_native_mutation(
"set_probe_suppress_tail_logic");
616#ifdef PINEFORGE_VALUE_INVALID_SIZING_MARGIN_FIXTURES
620 return adapter_.default_sizing_units(sizing);
628 return adapter_.chart_day_key(timestamp_ms);
631#ifdef PINEFORGE_VALUE_INVALID_FIXTURES
632 void fixture_value_invalid_drawdown_limit(
double value,
bool percent)
noexcept {
633 adapter_.fixture_value_invalid_drawdown_limit(value, percent);
637 return adapter_.cap.due_cause().has_value();
643 host_.config_.default_qty_type =
static_cast<int>(value);
647 return static_cast<QtyType>(host_.config_.default_qty_type);
659 host_.config_.commission_type =
static_cast<int>(value);
663 return static_cast<CommissionType>(host_.config_.commission_type);
675 host_.adapter_.set_risk_direction(value);
684 class SourceIdLedgerView {
691 return present_ == other.present_;
694 return !(*
this == other);
698 bool present_ =
false;
702 const double units = host_ ? host_->adapter_.source_unclosed_qty_for(
id) : 0.0;
704 result.present_ = units > 0.0;
705 result.value_.
second = units;
711 explicit SourceIdLedgerView(
const PineStrategyHost* host) noexcept : host_(host) {}
762 const
Series<
double>& fallback) const;
765 const
Series<
double>& fallback)
const {
772 scheduler_.fixture_publish_source_series(bar, new_history_slot);
790 int64_t
pine_time_offset(int64_t bar_open_ms,
int bars_back,
const std::string& tf,
791 const std::string& session,
const std::string& tz,
792 int timeframe_bars_back,
bool close)
const;
808 const std::string& timezone,
809 std::int64_t bar_ms)
const {
813 const std::string& timezone,
814 std::int64_t bar_ms)
const {
818 const std::string& timezone,
819 std::int64_t bar_ms)
const {
829 const std::string& input_tf,
bool lookahead_on,
830 bool gaps_on =
false,
bool heikinashi =
false);
844 const std::string& requested_tf,
const std::string& input_tf,
845 bool lookahead_on,
bool gaps_on =
false,
846 bool ignore_invalid_symbol =
false);
851 const std::string& requested_tf,
const char* input_tf,
852 bool lookahead_on,
bool gaps_on =
false) =
delete;
870 const std::string& input_tf);
903 struct ForeignSecuritySite {
905 std::string requested_tf;
906 bool lookahead =
false;
908 bool ignore_invalid =
false;
918 bool invalid =
false;
919 std::int64_t subscription = -1;
920 std::size_t feed = 0;
921 std::int64_t delivered = 0;
922 std::int64_t close_ms = 0;
925 std::int64_t last_input = -1;
930 std::int64_t handed = 0;
931 SecurityEvalState eval{};
935 StagedConfiguration staged_configuration()
const;
936 static PineStrategyConfig apply_overrides(PineStrategyConfig,
937 const StrategyOverrides&);
938 std::uint64_t adapter_broker_fill_event_sequence() const noexcept {
939 return broker_fill_event_seq_;
941 void scheduler_prepare_script_run(PineScheduler::InputView,
942 bool static_eligible,
int expected_script_bars,
943 bool script_bar_geometry);
944 void scheduler_configure_security_evaluators();
945 bool scheduler_uses_aux_security_feed() const noexcept;
946 void scheduler_prepare_security_sequence(
PineScheduler::InputView);
961 bool declare_security_sites_to_kernel();
965 bool same_symbol_sites_routable(std::vector<NativeTimeframeSubscription>& declared);
970 void prepare_foreign_security_sites(std::vector<NativeTimeframeSubscription>& declared);
973 void run_foreign_site_bar(ForeignSecuritySite& site, const Bar& bar, std::int64_t close_ms);
977 void read_ahead_foreign_security_sites(const Bar& chart_bar);
980 void clear_gapped_foreign_security_sites();
981 std::int64_t find_symbol_feed(const std::
string& key, const std::
string& tf) const;
982 bool set_recorded_series_impl(const std::
string& key, const int64_t* chart_open_ms,
983 const
double* values,
int n,
984 std::optional<std::
size_t> cache_capacity_bytes);
985 bool set_recorded_series_reader_impl(
986 const std::
string& key, std::shared_ptr<const FeedReader<RecordedSeriesRow>> reader,
987 std::optional<std::
size_t> cache_capacity_bytes);
988 void refresh_symbol_data_digest();
989 std::uint64_t calculate_symbol_data_digest(
990 const std::
string* replacement_key =
nullptr,
991 const RecordedSeries* replacement =
nullptr) const;
994 const NativeInstrumentFeed& installed_symbol_feed(std::
size_t i) const;
996 void restore_symbol_feeds();
void stage_symbol_feed_views();
998 std::
string restore_symbol_feeds_reason();
1001 bool security_sites_kernel_routed() const noexcept;
1002 void init_security_eval_states_for_run(const std::
string& effective_input_tf);
1003 void prepare_historical_security_lookahead_projections(
1004 const Bar* input_bars,
int n_input, const std::
string& effective_input_tf);
1005 void clear_historical_security_lookahead_projections();
1006 bool scheduler_feed_security_input(const Bar&, std::int64_t next_input_ms,
1007 bool calling_bar_complete,
1008 bool defer_boundary_gate);
1009 void scheduler_publish_security_boundary();
1010 void scheduler_feed_deferred_security_input(const Bar&, std::int64_t next_input_ms);
1011 void scheduler_feed_aux_security(
int chart_index);
1012 void scheduler_feed_deferred_aux_security(
int chart_index);
1013 void scheduler_finish_security_sequence();
1018 void pine_feed_security_eval_state(SecurityEvalState& state, const Bar& input_bar,
1019 bool calling_bar_complete = false);
1022 PineSecurityEvalState& pine_security_state(
int sec_id) {
1025 const PineSecurityEvalState& pine_security_state(
int sec_id)
const {
1026 static const PineSecurityEvalState plain{};
1031 void prune_pine_security_states();
1042 bool security_input_precedes_range_start(
const SecurityEvalState& state,
1043 int64_t input_ts)
const;
1044#ifdef PINEFORGE_HAS_AUX_SECURITY_FEED_V1
1048 bool aux_security_traded_between(int64_t from_ms, int64_t to_ms)
const;
1053 void publish_security_eval_state_at_calling_boundary(SecurityEvalState& state);
1054 void scheduler_record_range_end(
const Bar&);
1055 void present_report(ReportC*)
const override;
1058 bool report_presenter_supports_non_full() const noexcept
override {
return false; }
1059 bool report_terminal_quote_eligible()
const;
1060 std::int64_t report_quote_time_ms_ = -1;
1061 double report_quote_close_ = std::numeric_limits<double>::quiet_NaN();
1065 void scheduler_mark_report_point(std::int64_t script_bar_ts);
1066 void scheduler_record_broker_hash();
1067 void capture_script_continuation_hash();
1071 void scheduler_update_session_state();
1072 void update_extended_session_day(
const NativeDecisionContext& facts);
1073 void adapter_label_bracket_trades(
1074 const native_order::ExecutionAppliedEvent&,
bool from_bracket);
1075 bool adapter_has_open_entry_id(
const std::string&)
const;
1076 void scheduler_publish_source_bar(
const Bar&,
bool first_tick,
1077 bool advance_source_index =
true);
1078 void scheduler_publish_suppressed_tail(
const Bar&);
1086 bool selected_begin_evaluation(std::int64_t label_ms);
1087 void selected_finish_evaluation() noexcept;
1088 void selected_clear_suppressed_evaluation(std::int64_t label_ms);
1098 void selected_replay_at_open(const Bar&, const NativeDecisionContext&);
1102 void finish_adapter_evaluation();
1103 void project_short_seed_report_rows(const native_order::ExecutionAppliedEvent&);
1104 void order_global_exit_children(const native_order::ExecutionAppliedEvent&);
1105 detail::CommandScratchStore* trade_scratch_ =
nullptr;
1106 detail::CommandScratchStore& trade_scratch();
1107 std::optional<std::
size_t> sort_same_bar_exit_trades(
1109 bool scheduler_coof_enabled() const noexcept {
return config_.calc_on_order_fills; }
1114 void record_applied_range_end();
1115#ifdef PINEFORGE_HAS_AUX_SECURITY_FEED_V1
1116 void clear_aux_security_chart_ranges();
1117 void prepare_aux_security_chart_ranges(
const Bar*,
int,
const std::string&);
1118 std::int64_t aux_security_calling_close_ms()
const;
1119 void feed_aux_security_for_chart_bar(
int);
1120 void feed_deferred_aux_security_for_chart_bar(
int);
1129 : adapter_(&adapter) {}
1131 return adapter_ && adapter_->cap.due_cause().has_value();
1161#ifdef PINEFORGE_HAS_AUX_SECURITY_FEED_V1
1349 std::numeric_limits<double>::quiet_NaN();
1356#ifdef PINEFORGE_HAS_AUX_SECURITY_FEED_V1
The public native host: an abstract subclass of BacktestEngine with no PineScript on it.
FixtureCommissionTypeSlot & operator=(CommissionType value) noexcept
FixtureCommissionTypeSlot(PineStrategyHost &host) noexcept
FixtureQtyTypeSlot(PineStrategyHost &host) noexcept
FixtureQtyTypeSlot & operator=(QtyType value) noexcept
FixtureRiskDirectionSlot(PineStrategyHost &host) noexcept
FixtureRiskDirectionSlot & operator=(int value) noexcept
SourceCloseObligationView(const PineExecutionAdapter &adapter) noexcept
bool pending() const noexcept
bool operator==(const const_iterator &other) const noexcept
bool operator!=(const const_iterator &other) const noexcept
const value_type * operator->() const noexcept
friend class SourceIdLedgerView
const_iterator find(const std::string &id) const noexcept
const_iterator end() const noexcept
friend class PineStrategyHost
void validate_security_timeframes(const std::string &input_tf)
int observe_pending_count_v1() const override
compat::pine::Calculation fixture_cap_calculation() const
void register_security_eval(int sec_id, const std::string &requested_tf, const std::string &input_tf, bool lookahead_on, bool gaps_on=false, bool heikinashi=false)
std::map< long long, double > symbol_calendar_opens_
std::map< std::string, RecordedSeries > recorded_series_
bool set_symbol_facts(const std::string &key, const std::string &field, const std::string &value) override
FixtureCommissionTypeSlot fixture_commission_type_slot() noexcept
void clear_report_terminal_quote()
Series< double > & _src_volume_
bool set_realtime_tail(bool on, int horizon_bars) override
std::int64_t foreign_input_index_
void attach_pine_execution_adapter()
int64_t chart_time_close() const
void strategy_cancel_all()
void set_syminfo_session(const std::string &)
PineExecutionAdapter adapter_
double net_profit() const
void hold_script_average_price(double average)
std::vector< Bar > aux_security_bars_
bool session_islastbar_regular_
std::optional< NativeMarginDecision > resolve_margin_requirement(const NativeMarginRequirementView &) const final
const std::pair< std::int64_t, std::int64_t > * symbol_calendar_day(std::int64_t ms) const
std::optional< double > resolve_margin_call_units(const NativeMarginCallView &) const final
const Series< double > & get_input_source(const std::string &key, const Series< double > &fallback) const
double open_profit(double current_price) const
void set_pine_risk_direction(int)
void prepare_native_begin(const NativeBeginArgs &) final
BarTime fixture_chart_time(std::int64_t timestamp_ms) const
bool & _src_series_active_
compat::pine::CapClock fixture_cap_clock() const
std::uint64_t source_callback_count_
void strategy_entry(const std::string &id, bool is_long, double limit_price=std::numeric_limits< double >::quiet_NaN(), double stop_price=std::numeric_limits< double >::quiet_NaN(), double qty=std::numeric_limits< double >::quiet_NaN(), const std::string &comment={}, const std::string &oca_name={}, int oca_type=0, int qty_type=-1)
void enable_pine_intraday_cap()
Series< double > & _src_hlcc4_
const PendingIntentView & pending_intent_view() const noexcept
friend class PineScheduler
const std::vector< FixtureIntentRow > & source_pending_view() const
void finish_applied_admission(const native_order::ExecutionAppliedEvent &, const NativeDecisionContext &)
void set_pine_risk_max_intraday_filled_orders(int)
long long symbol_calendar_days_
int pending_order_count() const
void on_native_tick(const Bar &, const NativeTickContext &) final
Series< double > & _src_open_
SourceCloseObligationView position_close_obligation_
const Series< double > & source_input_series(const std::string &key, const Series< double > &fallback) const
bool security_history_publication_replay_
Series< double > & _src_hl2_
int pending_order_effective_levels(int index, double *stop, double *limit, double *trail_activation) const
bool historical_security_lookahead_projection_active_
bool fixture_cap_due_pending() const noexcept
int observe_pending_effective_levels(int, double *, double *, double *) const override
bool set_aux_security_feed(const Bar *bars, int n, const std::string &input_tf) override
double observe_trail_best_price_v1() const override
void strategy_order(const std::string &id, bool is_long, double qty, double limit_price=std::numeric_limits< double >::quiet_NaN(), double stop_price=std::numeric_limits< double >::quiet_NaN(), const std::string &oca_name={}, int oca_type=0)
bool margin_call_enabled_
Series< double > & _src_low_
bool fixture_intraday_cap_latched()
void configure_pine_strategy(const PineStrategyConfig &)
void set_pine_risk_max_position_size(double)
FixtureQtyTypeSlot fixture_default_qty_type_slot() noexcept
friend struct ReportSinkEquityTestAccess
int64_t security_calling_close_ms_
bool set_recorded_series_reader(const std::string &key, std::shared_ptr< const FeedReader< RecordedSeriesRow > > reader)
bool is_last_tick() const noexcept
void set_pine_risk_max_cons_loss_days(int)
double current_equity() const
void strategy_exit_cancel_bracket(const std::string &exit_id, const std::string &from_entry, const std::string &comment={})
int observe_pending_level_resolved(int) const override
FixtureRiskDirectionSlot fixture_risk_direction_slot() noexcept
bool set_symbol_feed_borrowed(const std::string &key, const std::string &timeframe, const Bar *bars, const int64_t *close_ms, int n) override
bool set_symbol_calendar(std::vector< std::pair< std::int64_t, std::int64_t > > sessions)
bool pine_session_ispremarket(const std::string &session, const std::string &timezone, std::int64_t bar_ms) const
bool session_isfirstbar_regular_
virtual void on_native_applied_event(const native_order::ExecutionAppliedEvent &, const NativeDecisionContext &)
std::vector< BorrowedFeedSlot > symbol_feed_views_
std::vector< std::size_t > aux_security_chart_begin_
bool pine_session_ismarket(const std::string &session, const std::string &timezone, std::int64_t bar_ms) const
const std::vector< std::pair< std::int64_t, std::int64_t > > & symbol_calendar() const noexcept
int64_t security_range_start_ms_
const Series< double > & source_series(const std::string &) const
bool set_symbol_feed_column(const std::string &key, const std::string &timeframe, const std::string &name, const double *values, int n) override
void install_symbol_calendar_metadata()
void apply_realtime_tail_horizon(const Bar *bars, int n, bool script_bar_geometry)
bool probe_suppress_tail_logic() const
bool margin_call_enabled() const
int64_t chart_bar_close_ms(int64_t stamp) const
std::vector< std::pair< std::int64_t, std::int64_t > > symbol_calendar_
void hash_source_extension(BrokerStateHashSink &sink) const final
void strategy_close_all()
void on_native_applied(const native_order::ExecutionAppliedEvent &, const NativeDecisionContext &) final
std::vector< admission::Field > market_admission_fields() const
PineStrategyHost(compat::pine::CapAttachment cap=compat::pine::CapAttachment::None)
int security_lower_tf_sub_bar_index(int sec_id) const
int pending_order_level_resolved(int index) const
bool set_symbol_feed(const std::string &key, const std::string &timeframe, const Bar *bars, const int64_t *close_ms, int n) override
std::map< std::string, SymbolFacts > symbol_facts_
void refresh_aux_security_digest() noexcept
int observe_last_bar_dual_entry_path_v1() const override
int pine_last_bar_index() const
void set_trade_scratch(detail::CommandScratchStore &)
std::int64_t fixture_chart_day_key(std::int64_t timestamp_ms) const noexcept
void on_native_run_begin() final
void release_script_average_price() noexcept
std::uint64_t broker_state_hash_projection() const override
StrategyOverrides override_
int64_t security_first_chart_bar_ms_
Series< double > & _src_close_
void fixture_retain_all_events()
void strategy_cancel(const std::string &id)
double security_column_value(int sec_id, const std::string &name) const
bool security_range_start_na_warmup_
PineStrategyConfig config_
std::vector< FixtureIntentRow > source_pending_view_cache_
bool margin_check_allowed(const NativeMarginCheckPoint &) const final
void fixture_publish_source_series(const Bar &bar, bool new_history_slot)
std::optional< double > resolve_anchored_level(const NativeAnchoredLevelView &) const final
void hash_host_extension(BrokerStateHashSink &) const override
void register_security_lower_tf_eval(int sec_id, const std::string &requested_tf, const std::string &input_tf)
void freeze_script_position_view()
std::uint64_t fixture_applied_receipt_count() const
Series< double > & _src_hlc3_
bool security_series_slot_is_new(int) const noexcept
bool chart_ema_na_warmup_
bool realtime_tail() const
PineStrategyConfig & fixture_configuration() noexcept
void register_security_eval(int sec_id, const std::string &symbol, const std::string &requested_tf, const char *input_tf, bool lookahead_on, bool gaps_on=false)=delete
bool report_terminal_quote_applied(const ReportC &) const
std::vector< NativeInstrumentFeed > symbol_feeds_
int last_bar_dual_entry_path() const
std::int64_t symbol_calendar_open_before(std::int64_t before) const
void strategy_exit(const std::string &id, const std::string &from_entry, double limit_price, double stop_price, double trail_points=std::numeric_limits< double >::quiet_NaN(), double trail_offset=std::numeric_limits< double >::quiet_NaN(), double trail_price=std::numeric_limits< double >::quiet_NaN(), double qty_percent=100.0, const std::string &comment={}, double qty=std::numeric_limits< double >::quiet_NaN(), const std::string &oca_name={}, double profit_ticks=std::numeric_limits< double >::quiet_NaN(), double loss_ticks=std::numeric_limits< double >::quiet_NaN())
double prev_chart_close() const
int source_last_bar_index_
void on_native_input(const Bar &, const NativeInputContext &) final
int64_t time_close() const
double live_position_size() const override
std::vector< int > foreign_security_series_
std::map< long long, double > symbol_calendar_closes_
bool source_aux_security_feed_enabled() const override
bool set_recorded_series(const std::string &key, const int64_t *chart_open_ms, const double *values, int n) override
void set_pine_risk_max_intraday_loss(double, bool)
bool script_average_held_
int short_seed_collision_role_v1(native_order::RequestHandle) const noexcept
void strategy_close(const std::string &id, const std::string &comment={}, double qty=std::numeric_limits< double >::quiet_NaN(), double qty_percent=std::numeric_limits< double >::quiet_NaN(), bool immediately=false)
bool history_advances_new_bar() const noexcept
void set_margin_call_enabled(bool enabled)
std::map< int, PineSecurityEvalState > pine_security_states_
std::uint64_t symbol_data_digest_
int pine_bar_index() const
double recorded_series_value(const std::string &key) const
void on_native_bar_open(const Bar &, const NativeDecisionContext &) final
bool set_report_terminal_quote(std::int64_t time_ms, double close)
bool source_prepare_failed_
bool historical_security_lookahead_projection_
bool set_probe_suppress_tail_logic(bool on) override
bool is_first_tick() const noexcept
void set_pine_risk_max_drawdown(double, bool)
double closed_trade_equity() const
double open_entry_fees_paid() const
double margin_liquidation_price() const
int realtime_tail_horizon_bars_
bool probe_suppress_tail_logic_
MarketAdmissionJournal & market_admission_journal()
double precommit_held_units_
Series< double > & _src_ohlc4_
static detail::ScratchKeyOrder trade_scratch_order() noexcept
NativePrecommitVerdict validate_execution_precommit(const NativePrecommitView &) const final
void clear_script_position_view()
int64_t pine_time_offset(int64_t bar_open_ms, int bars_back, const std::string &tf, const std::string &session, const std::string &tz, int timeframe_bars_back, bool close) const
const bool & is_last_tick_
void on_native_timeframe_bar(const Bar &, const NativeTimeframeBarContext &) final
bool pine_session_ispostmarket(const std::string &session, const std::string &timezone, std::int64_t bar_ms) const
void source_aux_security_input_view(const Bar *&, int &) const override
double script_mark_price(double price) const
void on_native_bar(const Bar &, const NativeDecisionContext &) final
int observe_probe_fill_qty(int, double, double *, int *, int *) const override
bool source_configuration_captured_
const PineStrategyConfig & fixture_configuration() const noexcept
void set_syminfo_metadata(const std::string &, double) override
void release_aux_security_chart_ranges()
void set_strategy_override(const StrategyOverrides &)
SourceIdLedgerView source_id_ledger_view() const noexcept
std::string aux_security_input_tf_
virtual void on_source_bar(const Bar &)=0
Series< double > & _src_high_
int observe_pending_copy_v1(int, pf_pending_order_v1_t *) const override
std::vector< std::size_t > aux_security_chart_end_
bool adapter_core_sizes_default_opening(bool is_long) const
native_order::ExecutionTerms resolve_execution_terms(const NativeExecutionTermsFacts &) const final
void on_native_sub_bar(const Bar &, const NativeDecisionContext &) final
int probe_fill_qty(int index, double fill_price, double *qty, int *close_only, int *partition) const
double signed_position_size() const
void on_native_recalculate(const Bar &, const NativeDecisionContext &, NativeCalculationReason, const native_order::ExecutionAppliedEvent *) final
std::int64_t symbol_calendar_open_from(std::int64_t at) const
std::uint64_t aux_security_digest_
friend class PineExecutionAdapter
const ForeignSecuritySite * foreign_context_
std::map< int, ForeignSecuritySite > foreign_security_sites_
void source_stream_entry_comment(const PyramidEntry &, std::string &) const override
NativeCalculationReason
Why the kernel is asking the host to calculate.
NativePrecommitVerdict
The host is consulted before generic opening-margin admission.
constexpr char kSourceSecurityDomain[]
PineStrategyHost::FixtureIntentRow FixtureIntentRow
PineStrategyHost::FixtureIntentKind FixtureIntentKind
constexpr char kSourceSymbolDataDomain[]
PineStrategyHost PineNativeHost
bool pine_session_ispostmarket(const std::string &session, const std::string &tz, int64_t bar_ms)
admission::Draft MarketAdmissionDraft
bool pine_session_ispremarket(const std::string &session, const std::string &tz, int64_t bar_ms)
bool pine_session_ismarket(const std::string &session, const std::string &tz, int64_t bar_ms)
admission::Journal MarketAdmissionJournal
Ephemeral read-only facts of one anchored-leg materialization (L7b), offered to the host exactly once...
Borrowed begin-call facts.
Read-only owning-value facts for one candidate.
Accepted input facts presented before the generic consumer aggregates the bar into its script interva...
Ephemeral factual view of one kernel-issued liquidation before its units are fixed.
Ephemeral factual view of one kernel check point, offered to the host before the check runs.
Ephemeral factual view of the numbers the kernel is about to compare, at one check point,...
Ephemeral factual view of one prepared execution before any physical effect.
One accepted realtime print before native matching at its current decision point.
One completed higher-timeframe bucket of a declared subscription (NativeRunSpec::subscriptions),...
One committed execution: the definition, the cursor, the resolved price and units,...
bool calling_bar_complete
std::vector< HistoricalSecurityProjection > historical_projections
int lower_tf_input_aggregation_ratio
bool calling_close_completes_partial
int64_t last_published_label
std::vector< DeferredAuxBar > deferred_aux
bool calling_open_latches_first
bool historical_projection_dispatched
std::vector< Bar > lower_tf_input_buffer
bool first_bucket_published
int lower_tf_sub_bar_index
int publish_gate_tf_seconds
bool lower_tf_array_requested
std::size_t historical_projection_cursor
const std::int64_t * close_ms
double frozen_market_transaction_units
double paired_flat_market_transaction_qty
double affordability_placement_equity
std::uint64_t incarnation
double default_stop_placement_equity
double default_stop_sizing_price
double frozen_market_own_units
MarketAdmissionDraft market_admission
std::int64_t paired_flat_market_peer_seq
double frozen_default_qty
double default_stop_placement_qty
bool over_pyramiding_cap_at_placement
double default_stop_placement_signal_close
std::optional< std::size_t > cache_capacity_override
pineforge::detail::FeedProjection< RecordedSeriesRow > rows
std::optional< bool > valid