public override async Task <ExecutionReport> AddOrderAndWaitExecution(TradingSignal signal, TranslatedSignalTableEntity translatedSignal, TimeSpan timeout) { var symbol = _converters.LykkeSymbolToExchangeSymbol(signal.Instrument.Name); var orderType = _converters.OrderTypeToGdaxOrderType(signal.OrderType); var side = _converters.TradeTypeToGdaxOrderSide(signal.TradeType); var volume = signal.Volume; var price = (!signal.Price.HasValue || signal.Price == 0) ? 1 : signal.Price.Value; var cts = CreateCancellationTokenSource(timeout); try { var response = await _restApi.AddOrder(symbol, volume, price, side, orderType, cts.Token, (sender, httpRequest) => OnSentHttpRequest(httpRequest, translatedSignal), (sender, httpResponse) => OnReceivedHttpRequest(httpResponse, translatedSignal)); var trade = _converters.OrderToTrade(response); return(trade); } catch (StatusCodeException ex) { throw new ApiException(ex.Message); } }