Expose strategy runtime data APIs
This commit is contained in:
@@ -406,6 +406,10 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(
|
||||
execution_date,
|
||||
default_stage_time(ScheduleStage::BeforeTrading),
|
||||
),
|
||||
})?;
|
||||
publish_phase_event(
|
||||
&mut self.strategy,
|
||||
@@ -509,6 +513,10 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(
|
||||
execution_date,
|
||||
default_stage_time(ScheduleStage::OpenAuction),
|
||||
),
|
||||
})?);
|
||||
publish_phase_event(
|
||||
&mut self.strategy,
|
||||
@@ -603,6 +611,10 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(
|
||||
execution_date,
|
||||
default_stage_time(ScheduleStage::OnDay),
|
||||
),
|
||||
})
|
||||
})
|
||||
.transpose()?
|
||||
@@ -685,6 +697,10 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(
|
||||
execution_date,
|
||||
default_stage_time(ScheduleStage::Bar),
|
||||
),
|
||||
})?);
|
||||
publish_phase_event(
|
||||
&mut self.strategy,
|
||||
@@ -828,6 +844,7 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: Some(quote.timestamp),
|
||||
},
|
||||
"e,
|
||||
)?);
|
||||
@@ -929,6 +946,10 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(
|
||||
execution_date,
|
||||
default_stage_time(ScheduleStage::AfterTrading),
|
||||
),
|
||||
})?;
|
||||
publish_phase_event(
|
||||
&mut self.strategy,
|
||||
@@ -1036,6 +1057,10 @@ where
|
||||
subscriptions: &self.subscriptions,
|
||||
process_events: &process_events,
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(
|
||||
execution_date,
|
||||
default_stage_time(ScheduleStage::Settlement),
|
||||
),
|
||||
})?;
|
||||
publish_phase_event(
|
||||
&mut self.strategy,
|
||||
@@ -1626,6 +1651,7 @@ fn collect_scheduled_decisions<S: Strategy>(
|
||||
subscriptions,
|
||||
process_events: process_events.as_slice(),
|
||||
active_process_event: None,
|
||||
active_datetime: stage_datetime(execution_date, current_time),
|
||||
},
|
||||
rule,
|
||||
)?);
|
||||
@@ -1686,6 +1712,7 @@ fn publish_phase_event<S: Strategy>(
|
||||
subscriptions,
|
||||
process_events,
|
||||
active_process_event: Some(&event),
|
||||
active_datetime: None,
|
||||
};
|
||||
strategy.on_process_event(&event_ctx, &event)?;
|
||||
events.push(event);
|
||||
@@ -1720,6 +1747,7 @@ fn publish_process_events<S: Strategy>(
|
||||
subscriptions,
|
||||
process_events,
|
||||
active_process_event: Some(&event),
|
||||
active_datetime: None,
|
||||
};
|
||||
strategy.on_process_event(&event_ctx, &event)?;
|
||||
target.push(event);
|
||||
@@ -1754,6 +1782,7 @@ fn publish_custom_process_event<S: Strategy>(
|
||||
subscriptions,
|
||||
process_events,
|
||||
active_process_event: Some(&event),
|
||||
active_datetime: None,
|
||||
};
|
||||
strategy.on_process_event(&event_ctx, &event)?;
|
||||
target.push(event);
|
||||
@@ -1772,6 +1801,13 @@ fn stage_label(stage: ScheduleStage) -> &'static str {
|
||||
}
|
||||
}
|
||||
|
||||
fn stage_datetime(
|
||||
date: NaiveDate,
|
||||
time: Option<chrono::NaiveTime>,
|
||||
) -> Option<chrono::NaiveDateTime> {
|
||||
time.map(|value| date.and_time(value))
|
||||
}
|
||||
|
||||
fn should_run_tick_events(rules: &[ScheduleRule], subscriptions: &BTreeSet<String>) -> bool {
|
||||
!subscriptions.is_empty() || rules.iter().any(|rule| rule.stage == ScheduleStage::Tick)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user