private void ExecuteTransaction(Transaction transaction) { transaction.Succeeded = false; transaction.Error = "No execution"; // notify transaction status _strategy.NotifyTransactionStatus(transaction); }
private bool ExecuteTransaction(Transaction transaction, bool notifyTransactionStatus, bool forcibly = false) { string error; CompletedTransaction completedTransaction; var succeeded = _equityManager.ExecuteTransaction( transaction, _settings.AllowNegativeCapital, out completedTransaction, out error, forcibly); if (!succeeded) { if (transaction.Action == TradingAction.OpenLong) { // HACK: try to adjust volume to reduce money used and make transaction succeeded. var volume = (int)((double)transaction.Volume / 1.1); volume -= volume % 100; if (volume > 0) { transaction.Volume = volume; succeeded = _equityManager.ExecuteTransaction( transaction, _settings.AllowNegativeCapital, out completedTransaction, out error); } } } transaction.Succeeded = succeeded; transaction.Error = error; if (notifyTransactionStatus) { // notify transaction status _strategy.NotifyTransactionStatus(transaction); } // add to history _tradingTracker.AddTransaction(transaction); if (completedTransaction != null) { _tradingTracker.AddCompletedTransaction(completedTransaction); } // log transaction _context.Log(transaction.Print()); return(succeeded); }