From 99515c17d4157a31057b8157e942b629795dbb32 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Mon, 27 Jul 2026 01:52:52 +0200 Subject: [PATCH] Cooldown config --- pulse-wire/src/plugin.rs | 2 +- pulse-wire/src/terminal.rs | 4 ++-- src/engine/engine/mod.rs | 2 +- src/engine/store/config.rs | 21 +++++++++++++++------ src/engine/terminal.rs | 2 +- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/pulse-wire/src/plugin.rs b/pulse-wire/src/plugin.rs index db9139b..bd91135 100644 --- a/pulse-wire/src/plugin.rs +++ b/pulse-wire/src/plugin.rs @@ -25,7 +25,7 @@ pub struct RiskManifest { version: String, max_loss: u8, - cooldown: String, + cooldown: CandleInterval, } #[pwp] diff --git a/pulse-wire/src/terminal.rs b/pulse-wire/src/terminal.rs index 006c646..072001d 100644 --- a/pulse-wire/src/terminal.rs +++ b/pulse-wire/src/terminal.rs @@ -103,7 +103,7 @@ pub enum Mode { #[pwp] pub enum ItemState { Running, - Off, + Stopped, Error, } @@ -140,7 +140,7 @@ impl std::fmt::Display for ItemState { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Running => write!(f, "\x1b[92mRUNNING\x1b[0m"), - Self::Off => write!(f, "\x1b[90mOFF\x1b[0m"), + Self::Stopped => write!(f, "\x1b[90mSTOPPED\x1b[0m"), Self::Error => write!(f, "\x1b[91mERROR\x1b[0m"), } } diff --git a/src/engine/engine/mod.rs b/src/engine/engine/mod.rs index aa7e18e..dcd8e65 100644 --- a/src/engine/engine/mod.rs +++ b/src/engine/engine/mod.rs @@ -54,7 +54,7 @@ impl Engine { loop { refresh.tick().await; - let watch_list = &self.config.lock().await.watchlist.symbols; + let watch_list = &self.config.lock().await.watchlist; match crate::fetch::fetch_watch_list(&client, watch_list).await { Ok(watch_list) => { diff --git a/src/engine/store/config.rs b/src/engine/store/config.rs index afaf487..3d3f507 100644 --- a/src/engine/store/config.rs +++ b/src/engine/store/config.rs @@ -1,13 +1,22 @@ -#[derive(Debug, Default, serde::Serialize, serde::Deserialize)] -pub struct WatchList { - pub symbols: Vec, -} +use hypersdk::hypercore::CandleInterval; -#[derive(Debug, Default, serde::Serialize, serde::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Config { - pub watchlist: WatchList, + pub watchlist: Vec, pub strategy: String, pub risk: String, + pub cooldown: CandleInterval, +} + +impl Default for Config { + fn default() -> Self { + Self { + watchlist: vec!["BTC".to_string(), "SOL".to_string(), "ETH".to_string()], + strategy: String::new(), + risk: String::new(), + cooldown: CandleInterval::ThirtyMinutes, + } + } } impl Config { diff --git a/src/engine/terminal.rs b/src/engine/terminal.rs index 39eb997..6623b6a 100644 --- a/src/engine/terminal.rs +++ b/src/engine/terminal.rs @@ -69,7 +69,7 @@ impl TerminalServer { risk: engine.strategy.risk.manifest.lock().await.clone(), mode: Mode::Auto, state: ItemState::Running, - cooldown: hypersdk::hypercore::CandleInterval::ThirtyMinutes, + cooldown: engine.config.lock().await.cooldown, }), ) .await?;