using System; using NT8.Core.Common.Interfaces; using NT8.Core.Common.Models; using NT8.Core.Risk; using NT8.Core.Sizing; namespace NT8.Adapters.NinjaTrader { /// /// Interface for NinjaTrader 8 integration adapter /// public interface INT8Adapter { /// /// Initialize the adapter with required components /// void Initialize(IRiskManager riskManager, IPositionSizer positionSizer); /// /// Convert NT8 bar data to SDK format /// BarData ConvertToSdkBar(string symbol, DateTime time, double open, double high, double low, double close, long volume, int barSize); /// /// Convert NT8 account data to SDK format /// AccountInfo ConvertToSdkAccount(double equity, double buyingPower, double dailyPnL, double maxDrawdown, DateTime lastUpdate); /// /// Convert NT8 position data to SDK format /// Position ConvertToSdkPosition(string symbol, int quantity, double averagePrice, double unrealizedPnL, double realizedPnL, DateTime lastUpdate); /// /// Execute strategy intent through NT8 /// void ExecuteIntent(StrategyIntent intent, SizingResult sizing); /// /// Handle order updates from NT8 /// void OnOrderUpdate(string orderId, double limitPrice, double stopPrice, int quantity, int filled, double averageFillPrice, string orderState, DateTime time, string errorCode, string nativeError); /// /// Handle execution updates from NT8 /// void OnExecutionUpdate(string executionId, string orderId, double price, int quantity, string marketPosition, DateTime time); } }