Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
 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;
 }