diff --git a/pulse-wire/src/strategy.rs b/pulse-wire/src/strategy.rs index bab45e5..757ac70 100644 --- a/pulse-wire/src/strategy.rs +++ b/pulse-wire/src/strategy.rs @@ -3,16 +3,23 @@ use pulse_macros::pwp; #[pwp] #[derive(serde::Deserialize, serde::Serialize)] -pub struct Strategy { +pub struct StrategyManifest { name: String, - timeframes: Vec, description: String, author: String, + version: String, + + timeframes: Vec, } #[pwp] #[derive(serde::Deserialize, serde::Serialize)] -pub struct Risk { +pub struct RiskManifest { name: String, + description: String, + author: String, + version: String, + max_loss: u8, + cooldown: TimeFrame, } diff --git a/pulse-wire/src/terminal.rs b/pulse-wire/src/terminal.rs index c137889..ab83339 100644 --- a/pulse-wire/src/terminal.rs +++ b/pulse-wire/src/terminal.rs @@ -1,8 +1,8 @@ use crate::{ PulseWire, general::{EventLog, MarketTrend, Position, Signal}, - strategy::{Risk, Strategy}, - units::{Symbol, USD, Volatility}, + strategy::{RiskManifest, StrategyManifest}, + units::{Symbol, TimeFrame, USD, Volatility}, }; use pulse_macros::pwp; @@ -87,24 +87,33 @@ pub enum InspectItem { #[pwp] pub struct Status { - feed: Feed, + feed: Mode, exchange: String, dex: String, latency: u16, } #[pwp] -pub enum Feed { - Connected, - Disconnected, - Connecting, - Failed, +pub enum Mode { + Auto, + Manual, } #[pwp] -pub struct StrategyView { - strategy: Strategy, - risk: Risk, +pub enum ItemState { + Running, + Off, + Error, +} + +#[pwp] +pub struct Strategy { + strategy: StrategyManifest, + risk: RiskManifest, + + mode: Mode, + state: ItemState, + cooldown: TimeFrame, } impl std::fmt::Display for AlertLevel {