Example #1
0
        public async Task ExitTradeAsync(PositionItem position, OrderStatusChangedMessage message)
        {
            var trade = _trades.SingleOrDefault(x => x.Symbol == message.Symbol);

            if (trade == null || !position.IsOpen)
            {
                Log.Debug("Could not find open trade or position for {0}", message.Symbol);
                return;
            }

            var exit = new Exit {
                Trade = trade
            };

            MapMessageDetails(exit, message);

            await _tradeRepository.AddExitAsync(exit).ConfigureAwait(false);

            if (!AnyRemainingShares(message))
            {
                await CloseOpenTradeAsync(trade, message).ConfigureAwait(false);
            }
        }