71 lines
1.6 KiB
Rust
71 lines
1.6 KiB
Rust
use crate::{
|
|
general::{EngineStatus, EventLog, Signal},
|
|
strategy::StrategyManifest,
|
|
};
|
|
use hypersdk::Decimal;
|
|
|
|
pub type SignalStatus = Result<Signal, Signal>;
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub enum TerminalServerMessage {
|
|
// WatchList
|
|
WatchListUpdated(Vec<MarketItem>),
|
|
|
|
// Configuration
|
|
ConfigUpdated(EngineConfig),
|
|
|
|
// Signals
|
|
SignalsUpdated(Vec<SignalStatus>),
|
|
|
|
// Inspector
|
|
Inspect(InspectTarget),
|
|
|
|
// Status
|
|
StatusUpdated(EngineStatus),
|
|
|
|
// Logs
|
|
SetLogs(Vec<EventLog>),
|
|
AddLog(EventLog),
|
|
}
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub enum TerminalClientMessage {
|
|
ExecuteCommand(String),
|
|
}
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub struct MarketItem {
|
|
pub symbol: String,
|
|
pub price: Decimal,
|
|
pub trend: Decimal,
|
|
pub volume_24h: Decimal,
|
|
}
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub enum InspectTarget {
|
|
None,
|
|
Some(Vec<InspectRow>),
|
|
}
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub struct InspectRow(pub InspectItem, pub InspectItem, pub InspectItem);
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub enum InspectItem {
|
|
Name(String),
|
|
Symbol(String),
|
|
USD(Decimal),
|
|
F64(Decimal),
|
|
}
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub struct EngineConfig {
|
|
pub preset: String,
|
|
pub strategy: StrategyManifest,
|
|
pub description: Option<String>,
|
|
|
|
pub risk_per_trade: String,
|
|
pub max_open_positions: u32,
|
|
pub max_daily_loss: String,
|
|
}
|