Ejemplo n.º 1
0
        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);
            }
        }