public BacktestTradeEngineTests() { var server = new Server(); var account = new BacktestAccount(1, 1, "Demo", 500, "Tester"); account.AddTransaction(new Transaction(10000, DateTimeOffset.Now, string.Empty)); var barsMock = new Mock <IBars>(); barsMock.SetReturnsDefault <ISeries <DateTimeOffset> >(new Collections.ExpandableSeries <DateTimeOffset>()); barsMock.SetReturnsDefault <ISeries <double> >(new Collections.ExpandableSeries <double>()); _symbol = new OhlcSymbol(barsMock.Object) { Digits = 5, TickSize = 0.00001, TickValue = 1, VolumeStep = 1000, MaxVolume = 100000000, MinVolume = 1000, VolumeUnitValue = 1, Commission = 1, Name = "EURUSD", Slippage = 0.0001 }; _tradeEngine = new BacktestTradeEngine(server, account); }
protected override Task Run() { logger.LogInformation($"Starting backtest from {Config.StartDate} to {Config.EndDate}"); runStopwatch = System.Diagnostics.Stopwatch.StartNew(); BacktestAccount.Run(); runStopwatch.Stop(); OnFinished(); return(Task.CompletedTask); }
public override async Task <bool> Initialize() { if (isInitialized) { return(true); } isInitialized = true; logger = this.GetLogger(); if (await BacktestAccount.Initialize().ConfigureAwait(false) == false) { return(false); } return(await base.Initialize().ConfigureAwait(false)); }
internal _HistoricalTrade(BacktestAccount account, Position position) { this.Balance = account.Balance; //ClosingDealId = ClosingPrice = position.CurrentExitPrice; ClosingTime = account.Server.Time; // REVIEW - use extrapolated time? Comment = position.Comment; Commissions = position.Commissions; EntryPrice = position.EntryPrice; GrossProfit = position.GrossProfit; Label = position.Label; NetProfit = position.NetProfit; Pips = position.Pips; PositionId = position.Id; Quantity = position.Quantity; Swap = position.Swap; SymbolCode = position.SymbolCode; TradeType = position.TradeType; Volume = position.Volume; }