private ExecutionReport OrderToTrade(Order order) { var id = order.Id; var execTime = order.Timestamp; var execPrice = order.Price; var execVolume = order.ExecutedAmount; var tradeType = BitfinexModelConverter.ConvertTradeType(order.Side); var status = ConvertExecutionStatus(order); var instr = _modelConverter.ExchangeSymbolToLykkeInstrument(order.Symbol); return(new ExecutionReport(instr, execTime, execPrice, execVolume, tradeType, id, status) { ExecType = ExecType.Trade, Success = true, FailureType = OrderStatusUpdateFailureType.None }); }
public override async Task <ExecutionReport> AddOrderAndWaitExecution(TradingSignal signal, TranslatedSignalTableEntity translatedSignal, TimeSpan timeout) { var symbol = _modelConverter.LykkeSymbolToExchangeSymbol(signal.Instrument.Name); var volume = signal.Volume; var orderType = _modelConverter.ConvertOrderType(signal.OrderType); var side = _modelConverter.ConvertTradeType(signal.TradeType); var price = signal.Price == 0 ? 1 : signal.Price ?? 1; var cts = new CancellationTokenSource(timeout); var response = await _exchangeApi.AddOrder(symbol, volume, price, side, orderType, cts.Token); if (response is Error error) { throw new ApiException(error.Message); } var trade = OrderToTrade((Order)response); return(trade); }