Files
pulse-trader/pulse-sdk/src/terminal.rs
T

74 lines
1.6 KiB
Rust

use crate::{
general::{EngineStatus, EventLog, Position, 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>),
// Positions
PositionsUpdated(Vec<Position>),
// 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,
}