///|
pub(all) enum PatternTag {
Wedge
ReversalAttempt
MajorTrendReversal
FinalFlag
H1
H2
L1
L2
BreakoutTest
BreakoutPullback
BreakoutFailure
AlwaysIn
Barbwire
Overlap
MiddleRange
FailedSignal
Triangle
DoubleTopBottom
MeasuredMove
UnknownPattern(String)
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) enum DecisionAction {
NoOrder
Wait
LimitOrder
BreakoutOrder
MarketOrder
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) enum ValidationSeverity {
Info
Warning
Error
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct ValidationIssue {
severity : ValidationSeverity
path : String
message : String
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct Stage1Diagnosis {
cycle_position : CyclePosition
direction : Direction
confidence : Int
market_phase : MarketPhase
patterns : Array[PatternTag]
key_signals : Array[String]
strategy_files_needed : Array[StrategyFile]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct Stage2Decision {
action : DecisionAction
confidence : Int
rationale : String
risk_notes : Array[String]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct Stage1FeatureHints {
cycle_bias : CyclePosition
direction_bias : Direction
pattern_hints : Array[PatternTag]
notes : Array[String]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct ValidationReport {
ok : Bool
issues : Array[ValidationIssue]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub fn validation_issue(
severity : ValidationSeverity,
path : String,
message : String,
) -> ValidationIssue {
{ severity, path, message }
}
///|
pub fn validation_ok() -> ValidationReport {
{ ok: true, issues: [] }
}
///|
pub fn validation_error(path : String, message : String) -> ValidationReport {
{ ok: false, issues: [validation_issue(Error, path, message)] }
}
///|
pub fn stage1_diagnosis(
cycle_position : CyclePosition,
direction : Direction,
confidence : Int,
market_phase : MarketPhase,
patterns : Array[PatternTag],
key_signals? : Array[String] = [],
strategy_files_needed? : Array[StrategyFile] = [],
) -> Stage1Diagnosis {
{
cycle_position,
direction,
confidence,
market_phase,
patterns,
key_signals,
strategy_files_needed,
}
}
///|
pub fn stage2_decision(
action : DecisionAction,
confidence : Int,
rationale : String,
risk_notes? : Array[String] = [],
) -> Stage2Decision {
{ action, confidence, rationale, risk_notes }
}
///|
pub fn stage1_feature_hints(
cycle_bias : CyclePosition,
direction_bias : Direction,
pattern_hints : Array[PatternTag],
notes? : Array[String] = [],
) -> Stage1FeatureHints {
{ cycle_bias, direction_bias, pattern_hints, notes }
}