# NT8 SDK - API Reference **Version:** 0.2.0 **Last Updated:** February 15, 2026 --- ## Table of Contents - [Core Interfaces](#core-interfaces) - [Risk Management](#risk-management) - [Position Sizing](#position-sizing) - [Order Management](#order-management) - [Analytics](#analytics) - [Data Models](#data-models) - [Enumerations](#enumerations) --- ## Core Interfaces ### IStrategy **Namespace:** `NT8.Core.Common.Interfaces` Defines the contract for trading strategy implementations. ```csharp public interface IStrategy { StrategyMetadata Metadata { get; } void Initialize( StrategyConfig config, IMarketDataProvider dataProvider, ILogger logger); StrategyIntent? OnBar(BarData bar, StrategyContext context); StrategyIntent? OnTick(TickData tick, StrategyContext context); Dictionary GetParameters(); void SetParameters(Dictionary parameters); } ``` **Properties:** | Property | Type | Description | |----------|------|-------------| | `Metadata` | `StrategyMetadata` | Strategy metadata (name, version, etc.) | **Methods:** #### Initialize Initializes the strategy with configuration and dependencies. **Parameters:** - `config` (`StrategyConfig`) - Strategy configuration - `dataProvider` (`IMarketDataProvider`) - Market data provider - `logger` (`ILogger`) - Logging interface **Example:** ```csharp public void Initialize(StrategyConfig config, IMarketDataProvider dataProvider, ILogger logger) { _config = config; _dataProvider = dataProvider; _logger = logger; LoadParameters(config.Parameters); _logger.LogInformation("Strategy initialized: {0}", Metadata.Name); } ``` --- #### OnBar Processes new bar data and generates trading intent if conditions are met. **Parameters:** - `bar` (`BarData`) - New bar data - `context` (`StrategyContext`) - Current strategy context **Returns:** `StrategyIntent?` - Trading intent or null **Example:** ```csharp public StrategyIntent? OnBar(BarData bar, StrategyContext context) { if (bar.Close > _threshold && context.CurrentPosition.Quantity == 0) { return new StrategyIntent( Symbol: bar.Symbol, Side: OrderSide.Buy, EntryType: OrderType.Market, LimitPrice: null, StopTicks: 8, TargetTicks: 16, Confidence: 0.75, Reason: "Breakout above threshold", Metadata: new() ); } return null; } ``` --- #### OnTick Processes tick data (optional for high-frequency strategies). **Parameters:** - `tick` (`TickData`) - Tick data - `context` (`StrategyContext`) - Current strategy context **Returns:** `StrategyIntent?` - Trading intent or null **Default Implementation:** Returns `null` --- #### GetParameters / SetParameters Get/Set strategy parameters for serialization. **Returns:** `Dictionary` - Parameter dictionary **Example:** ```csharp public Dictionary GetParameters() { return new Dictionary { ["StopTicks"] = _stopTicks, ["TargetTicks"] = _targetTicks, ["Threshold"] = _threshold }; } public void SetParameters(Dictionary parameters) { if (parameters.TryGetValue("StopTicks", out var stop)) _stopTicks = (int)stop; if (parameters.TryGetValue("TargetTicks", out var target)) _targetTicks = (int)target; } ``` --- ## Risk Management ### IRiskManager **Namespace:** `NT8.Core.Risk` Validates trading intents against risk parameters. ```csharp public interface IRiskManager { RiskDecision ValidateOrder( StrategyIntent intent, StrategyContext context, RiskConfig config); void OnFill(OrderFill fill); void OnPnLUpdate(double netPnL, double dayPnL); Task EmergencyFlatten(string reason); RiskStatus GetRiskStatus(); } ``` **Methods:** #### ValidateOrder Validates order intent against all risk parameters. **Parameters:** - `intent` (`StrategyIntent`) - Trading intent to validate - `context` (`StrategyContext`) - Current context - `config` (`RiskConfig`) - Risk configuration **Returns:** `RiskDecision` - Validation result **Example:** ```csharp var decision = riskManager.ValidateOrder(intent, context, riskConfig); if (decision.Allow) { // Proceed with order Console.WriteLine($"Order approved: Risk Level={decision.RiskLevel}"); } else { // Order rejected Console.WriteLine($"Order rejected: {decision.RejectReason}"); } ``` --- #### OnFill Updates risk state after order fill. **Parameters:** - `fill` (`OrderFill`) - Fill information **Example:** ```csharp var fill = new OrderFill( OrderId: orderId, Symbol: "ES", Quantity: 2, FillPrice: 4200.0, FillTime: DateTime.UtcNow, Commission: 4.50, ExecutionId: Guid.NewGuid().ToString() ); riskManager.OnFill(fill); ``` --- #### OnPnLUpdate Updates risk state with current P&L. **Parameters:** - `netPnL` (`double`) - Net P&L - `dayPnL` (`double`) - Daily P&L **Example:** ```csharp riskManager.OnPnLUpdate(netPnL: 500.0, dayPnL: -150.0); ``` --- #### EmergencyFlatten Triggers emergency position flatten. **Parameters:** - `reason` (`string`) - Reason for emergency flatten **Returns:** `Task` - Success indicator **Example:** ```csharp var success = await riskManager.EmergencyFlatten("Connection lost"); if (success) { Console.WriteLine("All positions flattened"); } ``` --- #### GetRiskStatus Returns current risk system status. **Returns:** `RiskStatus` - Current status **Example:** ```csharp var status = riskManager.GetRiskStatus(); Console.WriteLine($"Trading Enabled: {status.TradingEnabled}"); Console.WriteLine($"Daily P&L: {status.DailyPnL:C}"); Console.WriteLine($"Open Positions: {status.OpenPositions}"); ``` --- ### BasicRiskManager **Namespace:** `NT8.Core.Risk` Implements Tier 1 risk controls. **Features:** - Daily loss limits with auto-halt - Per-trade risk caps - Position count limits - Emergency flatten **Constructor:** ```csharp public BasicRiskManager(ILogger logger) ``` **Example:** ```csharp var riskManager = new BasicRiskManager(logger); var config = new RiskConfig( DailyLossLimit: 1000, MaxTradeRisk: 200, MaxOpenPositions: 3, EmergencyFlattenEnabled: true ); var decision = riskManager.ValidateOrder(intent, context, config); ``` --- ### AdvancedRiskManager **Namespace:** `NT8.Core.Risk` Implements Tier 2-3 risk controls. **Additional Features:** - Weekly rolling loss limits - Trailing drawdown protection - Cross-strategy exposure limits - Correlation-based limits - Time-based trading windows - Risk modes and cooldown periods **Constructor:** ```csharp public AdvancedRiskManager( IRiskManager basicRiskManager, ILogger logger) ``` **Example:** ```csharp var advancedRiskManager = new AdvancedRiskManager( new BasicRiskManager(logger), logger ); var advancedConfig = new AdvancedRiskConfig( // Tier 1 dailyLossLimit: 1000, maxTradeRisk: 200, maxOpenPositions: 3, // Tier 2 weeklyLossLimit: 3000, trailingDrawdownLimit: 0.15, // Tier 3 maxCrossStrategyExposure: 50000, correlationThreshold: 0.7, tradingHours: new[] { "09:30-16:00" } ); var decision = advancedRiskManager.ValidateOrder(intent, context, advancedConfig); ``` --- ## Position Sizing ### IPositionSizer **Namespace:** `NT8.Core.Sizing` Calculates position sizes for trading intents. ```csharp public interface IPositionSizer { SizingResult CalculateSize( StrategyIntent intent, StrategyContext context, SizingConfig config); SizingMetadata GetMetadata(); } ``` **Methods:** #### CalculateSize Calculates position size based on sizing method. **Parameters:** - `intent` (`StrategyIntent`) - Trading intent - `context` (`StrategyContext`) - Current context - `config` (`SizingConfig`) - Sizing configuration **Returns:** `SizingResult` - Calculated size **Example:** ```csharp var config = new SizingConfig( Method: SizingMethod.FixedDollarRisk, MinContracts: 1, MaxContracts: 10, RiskPerTrade: 200, MethodParameters: new() ); var result = sizer.CalculateSize(intent, context, config); Console.WriteLine($"Contracts: {result.Contracts}"); Console.WriteLine($"Risk Amount: {result.RiskAmount:C}"); ``` --- ### BasicPositionSizer **Namespace:** `NT8.Core.Sizing` Implements basic sizing methods. **Methods:** - Fixed contracts - Fixed dollar risk **Constructor:** ```csharp public BasicPositionSizer(ILogger logger) ``` **Example:** ```csharp var sizer = new BasicPositionSizer(logger); // Fixed contracts var fixedConfig = new SizingConfig( Method: SizingMethod.FixedContracts, MinContracts: 1, MaxContracts: 5, RiskPerTrade: 200, MethodParameters: new() { ["contracts"] = 2 } ); var result = sizer.CalculateSize(intent, context, fixedConfig); ``` --- ### AdvancedPositionSizer **Namespace:** `NT8.Core.Sizing` Implements advanced sizing methods. **Methods:** - Optimal-f (Ralph Vince) - Volatility-adjusted (ATR/StdDev) - Dollar-risk override with rounding **Constructor:** ```csharp public AdvancedPositionSizer(ILogger logger) ``` **Example - Optimal-f:** ```csharp var optimalFConfig = new SizingConfig( Method: SizingMethod.OptimalF, MinContracts: 1, MaxContracts: 10, RiskPerTrade: 500, MethodParameters: new() { ["historicalTrades"] = tradeHistory, ["riskOfRuinThreshold"] = 0.01, ["confidenceLevel"] = 0.95 } ); var result = sizer.CalculateSize(intent, context, optimalFConfig); ``` **Example - Volatility-Adjusted:** ```csharp var volConfig = new SizingConfig( Method: SizingMethod.VolatilityAdjusted, MinContracts: 1, MaxContracts: 10, RiskPerTrade: 300, MethodParameters: new() { ["atr"] = 15.5, ["normalATR"] = 12.0, ["volatilityWindow"] = 14, ["regime"] = "Normal" } ); var result = sizer.CalculateSize(intent, context, volConfig); ``` --- ### OptimalFCalculator **Namespace:** `NT8.Core.Sizing` Calculates optimal-f (Ralph Vince method). **Methods:** #### CalculateOptimalF ```csharp public OptimalFResult CalculateOptimalF( List trades, double capital, double riskOfRuinThreshold) ``` **Parameters:** - `trades` - Historical trade results - `capital` - Trading capital - `riskOfRuinThreshold` - Maximum acceptable risk of ruin **Returns:** `OptimalFResult` - Optimal-f calculation result **Example:** ```csharp var calculator = new OptimalFCalculator(logger); var trades = new List { new TradeResult(250, DateTime.Now.AddDays(-10)), new TradeResult(-100, DateTime.Now.AddDays(-9)), new TradeResult(300, DateTime.Now.AddDays(-8)), // ... more trades }; var result = calculator.CalculateOptimalF( trades: trades, capital: 50000, riskOfRuinThreshold: 0.01 ); Console.WriteLine($"Optimal-f: {result.OptimalF}"); Console.WriteLine($"Recommended Contracts: {result.Contracts}"); Console.WriteLine($"Risk of Ruin: {result.RiskOfRuin:P}"); ``` --- ### VolatilityAdjustedSizer **Namespace:** `NT8.Core.Sizing` Calculates volatility-adjusted position sizes. **Methods:** #### CalculateATRSize ```csharp public int CalculateATRSize( double targetRisk, double atr, double normalATR, double tickValue, int minContracts, int maxContracts) ``` **Parameters:** - `targetRisk` - Target risk amount - `atr` - Current ATR - `normalATR` - Historical normal ATR - `tickValue` - Tick value for symbol - `minContracts` - Minimum contracts - `maxContracts` - Maximum contracts **Returns:** `int` - Calculated contracts **Example:** ```csharp var sizer = new VolatilityAdjustedSizer(logger); var contracts = sizer.CalculateATRSize( targetRisk: 300, atr: 18.5, normalATR: 15.0, tickValue: 12.50, minContracts: 1, maxContracts: 10 ); Console.WriteLine($"ATR-Adjusted Size: {contracts} contracts"); ``` --- ## Order Management ### IOrderManager **Namespace:** `NT8.Core.OMS` Manages complete order lifecycle. ```csharp public interface IOrderManager { Task SubmitOrderAsync(OrderRequest request); Task ModifyOrderAsync(string orderId, OrderModification modification); Task CancelOrderAsync(string orderId, string reason); OrderStatus? GetOrderStatus(string orderId); List GetActiveOrders(); Task FlattenPosition(string symbol, string reason); void SubscribeToOrderUpdates(Action callback); void UnsubscribeFromOrderUpdates(Action callback); } ``` **Methods:** #### SubmitOrderAsync Submits new order. **Parameters:** - `request` (`OrderRequest`) - Order details **Returns:** `Task` - Order ID **Example:** ```csharp var request = new OrderRequest( Symbol: "ES", Side: OrderSide.Buy, Quantity: 2, Type: OrderType.Market, LimitPrice: null, StopPrice: null, Tif: TimeInForce.Gtc, StrategyId: "MyStrategy", Metadata: new() ); var orderId = await orderManager.SubmitOrderAsync(request); Console.WriteLine($"Order submitted: {orderId}"); ``` --- #### ModifyOrderAsync Modifies working order. **Parameters:** - `orderId` (`string`) - Order ID - `modification` (`OrderModification`) - Modification details **Returns:** `Task` - Success indicator **Example:** ```csharp var modification = new OrderModification( NewQuantity: 3, NewLimitPrice: 4205.0, NewStopPrice: null, Reason: "Adjust position size" ); var success = await orderManager.ModifyOrderAsync(orderId, modification); ``` --- #### CancelOrderAsync Cancels order. **Parameters:** - `orderId` (`string`) - Order ID - `reason` (`string`) - Cancellation reason **Returns:** `Task` - Success indicator **Example:** ```csharp var success = await orderManager.CancelOrderAsync(orderId, "Market conditions changed"); ``` --- #### GetOrderStatus Retrieves order status. **Parameters:** - `orderId` (`string`) - Order ID **Returns:** `OrderStatus?` - Order status or null **Example:** ```csharp var status = orderManager.GetOrderStatus(orderId); if (status != null) { Console.WriteLine($"State: {status.State}"); Console.WriteLine($"Filled: {status.FilledQuantity}/{status.Quantity}"); if (status.FillPrice.HasValue) { Console.WriteLine($"Fill Price: {status.FillPrice:F2}"); } } ``` --- #### GetActiveOrders Returns all active orders. **Returns:** `List` - Active orders **Example:** ```csharp var activeOrders = orderManager.GetActiveOrders(); Console.WriteLine($"Active Orders: {activeOrders.Count}"); foreach (var order in activeOrders) { Console.WriteLine($"{order.OrderId}: {order.Symbol} {order.Side} {order.Quantity}"); } ``` --- #### FlattenPosition Emergency position flatten. **Parameters:** - `symbol` (`string`) - Symbol to flatten - `reason` (`string`) - Flatten reason **Returns:** `Task` - Flatten order ID **Example:** ```csharp var orderId = await orderManager.FlattenPosition("ES", "Emergency stop"); Console.WriteLine($"Flatten order submitted: {orderId}"); ``` --- #### SubscribeToOrderUpdates / UnsubscribeFromOrderUpdates Subscribe to real-time order updates. **Parameters:** - `callback` (`Action`) - Callback function **Example:** ```csharp void OnOrderUpdate(OrderStatus status) { Console.WriteLine($"Order {status.OrderId} updated: {status.State}"); if (status.State == OrderState.Filled) { Console.WriteLine($"Filled at {status.FillPrice:F2}"); } } // Subscribe orderManager.SubscribeToOrderUpdates(OnOrderUpdate); // Later... unsubscribe orderManager.UnsubscribeFromOrderUpdates(OnOrderUpdate); ``` --- ## Analytics ### TradeRecorder **Namespace:** `NT8.Core.Analytics` Records and queries full trade lifecycle data. **Key Methods:** ```csharp public void RecordEntry(string tradeId, StrategyIntent intent, OrderFill fill, ConfluenceScore score, RiskMode mode) public void RecordExit(string tradeId, OrderFill fill) public void RecordPartialFill(string tradeId, OrderFill fill) public TradeRecord GetTrade(string tradeId) public List GetTrades(DateTime start, DateTime end) public List GetTradesByGrade(TradeGrade grade) public List GetTradesByStrategy(string strategyName) public string ExportToCsv(List trades) public string ExportToJson(List trades) ``` --- ### PerformanceCalculator **Namespace:** `NT8.Core.Analytics` Calculates aggregate performance statistics from trade history. **Key Methods:** ```csharp public PerformanceMetrics Calculate(List trades) public double CalculateWinRate(List trades) public double CalculateProfitFactor(List trades) public double CalculateExpectancy(List trades) public double CalculateSharpeRatio(List trades, double riskFreeRate) public double CalculateSortinoRatio(List trades, double riskFreeRate) public double CalculateMaxDrawdown(List trades) ``` --- ### PnLAttributor **Namespace:** `NT8.Core.Analytics` Builds attribution reports for performance decomposition. **Key Methods:** ```csharp public AttributionReport AttributeByGrade(List trades) public AttributionReport AttributeByRegime(List trades) public AttributionReport AttributeByStrategy(List trades) public AttributionReport AttributeByTimeOfDay(List trades) public AttributionReport AttributeMultiDimensional(List trades, List dimensions) ``` --- ### DrawdownAnalyzer **Namespace:** `NT8.Core.Analytics` Tracks equity drawdowns and recovery behavior. **Key Methods:** ```csharp public DrawdownReport Analyze(List trades) public List IdentifyDrawdowns(List trades) public DrawdownAttribution AttributeDrawdown(DrawdownPeriod period) public double CalculateRecoveryTime(DrawdownPeriod period) ``` --- ### GradePerformanceAnalyzer **Namespace:** `NT8.Core.Analytics` Analyzes edge and expectancy by grade. **Key Methods:** ```csharp public GradePerformanceReport AnalyzeByGrade(List trades) public double CalculateGradeAccuracy(TradeGrade grade, List trades) public TradeGrade FindOptimalThreshold(List trades) public Dictionary GetMetricsByGrade(List trades) ``` --- ### RegimePerformanceAnalyzer **Namespace:** `NT8.Core.Analytics` Evaluates strategy behavior by volatility/trend regime and transitions. **Key Methods:** ```csharp public RegimePerformanceReport AnalyzeByRegime(List trades) public PerformanceMetrics GetPerformance(VolatilityRegime volRegime, TrendRegime trendRegime, List trades) public List AnalyzeTransitions(List trades) ``` --- ### ConfluenceValidator **Namespace:** `NT8.Core.Analytics` Validates confluence factor quality and suggested weighting. **Key Methods:** ```csharp public FactorAnalysisReport AnalyzeFactor(FactorType factor, List trades) public Dictionary CalculateFactorImportance(List trades) public Dictionary RecommendWeights(List trades) public bool ValidateScore(ConfluenceScore score, TradeOutcome outcome) ``` --- ### ReportGenerator **Namespace:** `NT8.Core.Analytics` Generates periodic performance reports and export content. **Key Methods:** ```csharp public DailyReport GenerateDailyReport(DateTime date, List trades) public WeeklyReport GenerateWeeklyReport(DateTime weekStart, List trades) public MonthlyReport GenerateMonthlyReport(DateTime monthStart, List trades) public EquityCurve BuildEquityCurve(List trades) public string ExportToText(Report report) public string ExportToCsv(List trades) public string ExportToJson(Report report) ``` --- ### TradeBlotter **Namespace:** `NT8.Core.Analytics` Provides in-memory filtering, sorting, and query operations over trades. **Key Methods:** ```csharp public void SetTrades(List trades) public void AddOrUpdateTrade(TradeRecord trade) public List FilterByDate(DateTime start, DateTime end) public List FilterBySymbol(string symbol) public List FilterByGrade(TradeGrade grade) public List FilterByPnL(double minPnL, double maxPnL) public List SortBy(string column, SortDirection direction) ``` --- ### ParameterOptimizer **Namespace:** `NT8.Core.Analytics` Performs sensitivity analysis and optimization scaffolding. **Key Methods:** ```csharp public OptimizationResult OptimizeParameter(string paramName, List values, List trades) public GridSearchResult GridSearch(Dictionary> parameters, List trades) public WalkForwardResult WalkForwardTest(StrategyConfig config, List historicalData) ``` --- ### MonteCarloSimulator **Namespace:** `NT8.Core.Analytics` Runs simulation-based distribution and risk-of-ruin analysis. **Key Methods:** ```csharp public MonteCarloResult Simulate(List historicalTrades, int numSimulations, int numTrades) public double CalculateRiskOfRuin(List trades, double drawdownThreshold) public ConfidenceInterval CalculateConfidenceInterval(MonteCarloResult result, double confidenceLevel) ``` --- ### PortfolioOptimizer **Namespace:** `NT8.Core.Analytics` Calculates portfolio allocations and Sharpe-oriented mixes. **Key Methods:** ```csharp public AllocationResult OptimizeAllocation(List strategies) public double CalculatePortfolioSharpe(Dictionary allocation, List strategies) public Dictionary RiskParityAllocation(List strategies) ``` --- ## Data Models ### StrategyIntent **Namespace:** `NT8.Core.Common.Models` Represents a strategy's trading intent. ```csharp public record StrategyIntent( string Symbol, OrderSide Side, OrderType EntryType, double? LimitPrice, int StopTicks, int? TargetTicks, double Confidence, string Reason, Dictionary Metadata ) { public string IntentId { get; init; } public DateTime Timestamp { get; init; } public bool IsValid(); } ``` **Properties:** | Property | Type | Description | |----------|------|-------------| | `Symbol` | `string` | Instrument symbol | | `Side` | `OrderSide` | Buy/Sell/Flat | | `EntryType` | `OrderType` | Market/Limit/Stop/StopLimit | | `LimitPrice` | `double?` | Limit price (null for market) | | `StopTicks` | `int` | Stop loss in ticks | | `TargetTicks` | `int?` | Profit target in ticks | | `Confidence` | `double` | Signal confidence (0.0-1.0) | | `Reason` | `string` | Trade reason (human-readable) | | `Metadata` | `Dictionary` | Additional strategy-specific data | | `IntentId` | `string` | Unique identifier (auto-generated) | | `Timestamp` | `DateTime` | Creation timestamp (auto-generated) | --- ### StrategyContext **Namespace:** `NT8.Core.Common.Models` Context information available to strategies. ```csharp public record StrategyContext( string Symbol, DateTime CurrentTime, Position CurrentPosition, AccountInfo Account, MarketSession Session, Dictionary CustomData ); ``` --- ### RiskDecision **Namespace:** `NT8.Core.Risk` Risk validation result. ```csharp public record RiskDecision( bool Allow, string? RejectReason, StrategyIntent? ModifiedIntent, RiskLevel RiskLevel, Dictionary RiskMetrics ); ``` **Properties:** | Property | Type | Description | |----------|------|-------------| | `Allow` | `bool` | Whether order is allowed | | `RejectReason` | `string?` | Reason if rejected | | `ModifiedIntent` | `StrategyIntent?` | Modified intent (if applicable) | | `RiskLevel` | `RiskLevel` | Risk level classification | | `RiskMetrics` | `Dictionary` | Detailed risk metrics | --- ### SizingResult **Namespace:** `NT8.Core.Sizing` Position sizing calculation result. ```csharp public record SizingResult( int Contracts, double RiskAmount, SizingMethod Method, Dictionary Calculations ); ``` **Properties:** | Property | Type | Description | |----------|------|-------------| | `Contracts` | `int` | Calculated contract quantity | | `RiskAmount` | `double` | Actual risk amount | | `Method` | `SizingMethod` | Sizing method used | | `Calculations` | `Dictionary` | Detailed calculation breakdown | --- ### OrderStatus **Namespace:** `NT8.Core.OMS` Current order status. ```csharp public record OrderStatus( string OrderId, string Symbol, OrderSide Side, int Quantity, int FilledQuantity, OrderState State, DateTime SubmitTime, DateTime? FillTime, double? FillPrice, string? RejectReason, Dictionary Metadata ); ``` **Properties:** | Property | Type | Description | |----------|------|-------------| | `OrderId` | `string` | Unique order identifier | | `Symbol` | `string` | Instrument symbol | | `Side` | `OrderSide` | Buy/Sell | | `Quantity` | `int` | Total quantity | | `FilledQuantity` | `int` | Filled quantity | | `State` | `OrderState` | Current state | | `SubmitTime` | `DateTime` | Submission timestamp | | `FillTime` | `DateTime?` | Fill timestamp (if filled) | | `FillPrice` | `double?` | Fill price (if filled) | | `RejectReason` | `string?` | Rejection reason (if rejected) | | `Metadata` | `Dictionary` | Additional order data | --- ## Enumerations ### OrderSide ```csharp public enum OrderSide { Buy = 1, Sell = -1, Flat = 0 } ``` ### OrderType ```csharp public enum OrderType { Market, Limit, StopMarket, StopLimit } ``` ### OrderState ```csharp public enum OrderState { Pending, Working, PartiallyFilled, Filled, Cancelled, Rejected } ``` ### TimeInForce ```csharp public enum TimeInForce { Gtc, // Good Till Canceled Ioc, // Immediate Or Cancel Fok, // Fill Or Kill Day // Good For Day } ``` ### SizingMethod ```csharp public enum SizingMethod { FixedContracts, FixedDollarRisk, OptimalF, VolatilityAdjusted } ``` ### RiskLevel ```csharp public enum RiskLevel { Low, Medium, High, Critical } ``` ### RoundingMode ```csharp public enum RoundingMode { Floor, Ceiling, Nearest } ``` --- **For more information, see the [main README](README.md) or [examples](../src/NT8.Strategies/Examples/)**