using System.ComponentModel.DataAnnotations; using static Managing.Common.Enums; namespace Managing.Api.Models.Requests; /// /// Simplified trading bot configuration request with only primary properties /// public class TradingBotConfigRequest { /// /// The account name to use for trading /// [Required] public string AccountName { get; set; } /// /// The ticker/symbol to trade /// [Required] public Ticker Ticker { get; set; } /// /// The timeframe for trading decisions /// [Required] public Timeframe Timeframe { get; set; } /// /// Whether this bot is for watching only (no actual trading) /// [Required] public bool IsForWatchingOnly { get; set; } /// /// The initial trading balance for the bot /// [Required] public decimal BotTradingBalance { get; set; } /// /// The name/identifier for this bot /// [Required] public string Name { get; set; } [Required] public bool FlipPosition { get; set; } /// /// Cooldown period between trades (in candles) /// [Required] public int CooldownPeriod { get; set; } /// /// Maximum consecutive losses before stopping the bot /// [Required] public int MaxLossStreak { get; set; } /// /// The scenario configuration (takes precedence over ScenarioName) /// public ScenarioRequest? Scenario { get; set; } /// /// The scenario name to load from database (only used when Scenario is not provided) /// public string? ScenarioName { get; set; } /// /// The money management name to load from database (only used when MoneyManagement is not provided) /// public string? MoneyManagementName { get; set; } /// /// The money management object to use for the bot /// public MoneyManagementRequest? MoneyManagement { get; set; } /// /// Maximum time in hours that a position can remain open before being automatically closed /// public decimal? MaxPositionTimeHours { get; set; } /// /// Whether to close positions early when they become profitable /// public bool CloseEarlyWhenProfitable { get; set; } = false; /// /// Whether to only flip positions when the current position is in profit /// public bool FlipOnlyWhenInProfit { get; set; } = true; /// /// Whether to use Synth API for predictions and risk assessment /// public bool UseSynthApi { get; set; } = false; /// /// Whether to use Synth predictions for position sizing adjustments /// public bool UseForPositionSizing { get; set; } = true; /// /// Whether to use Synth predictions for signal filtering /// public bool UseForSignalFiltering { get; set; } = true; /// /// Whether to use Synth predictions for dynamic stop-loss/take-profit adjustments /// public bool UseForDynamicStopLoss { get; set; } = true; }