PineForge
unreleased
Deterministic PineScript v6 backtest runtime — C ABI reference
Loading...
Searching...
No Matches
pine_value_admit_decl.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
pineforge/source/pine_adapter.hpp
>
4
5
#include "
pine_value_admission.hpp
"
6
7
#include <cmath>
8
9
namespace
pineforge::source
{
10
11
// D3-a is pending. MAP: strategy(na/computed expression) is not emitted as a
12
// numeric member; omissions are finite. No script provenance for a raw host
13
// NaN is established, so preserve it. The supervisor can flip this one line.
14
inline
constexpr
bool
kDeclarationNanIsInvalid
=
false
;
15
16
inline
bool
declaration_value_is_invalid
(
double
value)
noexcept
{
17
return
std::isinf(value) || (
kDeclarationNanIsInvalid
&& std::isnan(value));
18
}
19
20
// Call only for the source declaration, before storage and any caller override
21
// merge. Finite values, including non-positive margins, keep their definitions.
22
// Existing financial/domain refusals and caller values have their own doors.
23
inline
void
admit_strategy_declaration
(
const
PineStrategyConfig
& config) {
24
if
(
declaration_value_is_invalid
(config.
default_qty_value
)) {
25
throw_strategy_value_invalid
(
value_field::strategy_default_qty_value
,
26
StrategyValueReason::nonfinite
);
27
}
28
if
(
declaration_value_is_invalid
(config.
margin_long
)) {
29
throw_strategy_value_invalid
(
value_field::strategy_margin_long
,
30
StrategyValueReason::nonfinite
);
31
}
32
if
(
declaration_value_is_invalid
(config.
margin_short
)) {
33
throw_strategy_value_invalid
(
value_field::strategy_margin_short
,
34
StrategyValueReason::nonfinite
);
35
}
36
}
37
38
}
// namespace pineforge::source
pineforge::source::value_field::strategy_default_qty_value
constexpr const char * strategy_default_qty_value
Definition
pine_value_admission.hpp:87
pineforge::source::value_field::strategy_margin_short
constexpr const char * strategy_margin_short
Definition
pine_value_admission.hpp:90
pineforge::source::value_field::strategy_margin_long
constexpr const char * strategy_margin_long
Definition
pine_value_admission.hpp:89
pineforge::source
Definition
exit_payload_readback.hpp:5
pineforge::source::admit_strategy_declaration
void admit_strategy_declaration(const PineStrategyConfig &config)
Definition
pine_value_admit_decl.hpp:23
pineforge::source::declaration_value_is_invalid
bool declaration_value_is_invalid(double value) noexcept
Definition
pine_value_admit_decl.hpp:16
pineforge::source::throw_strategy_value_invalid
void throw_strategy_value_invalid(const char *field, StrategyValueReason reason)
The coded failure of a source-owned invalid actionable value.
Definition
pine_value_admission.hpp:30
pineforge::source::kDeclarationNanIsInvalid
constexpr bool kDeclarationNanIsInvalid
Definition
pine_value_admit_decl.hpp:14
pineforge::source::StrategyValueReason::nonfinite
@ nonfinite
Definition
pine_value_admission.hpp:17
pine_adapter.hpp
pine_value_admission.hpp
pineforge::source::PineStrategyConfig
Definition
pine_adapter.hpp:78
pineforge::source::PineStrategyConfig::margin_long
double margin_long
Definition
pine_adapter.hpp:88
pineforge::source::PineStrategyConfig::margin_short
double margin_short
Definition
pine_adapter.hpp:89
pineforge::source::PineStrategyConfig::default_qty_value
double default_qty_value
Definition
pine_adapter.hpp:83
src
source
pine_value_admit_decl.hpp
PineForge unreleased — Apache-2.0 —
github.com/pineforge-4pass/pineforge-engine
—
pineforge.dev