Ejemplo n.º 1
0
        private void AddToIndicatorOutput(LiquidityProvider lp, double bid, double ask, int position = 0)
        {
            switch (lp)
            {
            case LiquidityProvider.SoftFx:
                SoftFxBid[position] = bid;
                SoftFxAsk[position] = ask;
                break;

            case LiquidityProvider.Livecoin:
                LivecoinBid[position] = bid;
                LivecoinAsk[position] = ask;
                break;

            case LiquidityProvider.Tidex:
                TidexBid[position] = bid;
                TidexAsk[position] = ask;
                break;

            case LiquidityProvider.Okex:
                OkexBid[position] = bid;
                OkexAsk[position] = ask;
                break;

            case LiquidityProvider.Binance:
                BinanceBid[position] = bid;
                BinanceAsk[position] = ask;
                break;

            case LiquidityProvider.Bitfinex:
                BitfinexBid[position] = bid;
                BitfinexAsk[position] = ask;
                break;

            case LiquidityProvider.HitBtc:
                HitBtcBid[position] = bid;
                HitBtcAsk[position] = ask;
                break;

            case LiquidityProvider.Kraken:
                KrakenBid[position] = bid;
                KrakenAsk[position] = ask;
                break;

            case LiquidityProvider.Kucoin:
                KucoinBid[position] = bid;
                KucoinAsk[position] = ask;
                break;

            case LiquidityProvider.Huobi:
                HuobiBid[position] = bid;
                HuobiAsk[position] = ask;
                break;
            }
        }
Ejemplo n.º 2
0
        private async Task <double[]> ProcessLps(LiquidityProvider lp, int initBarsCount)
        {
            var tick = await GetTick(lp);

            var bid = GetBid(lp, tick);
            var ask = GetAsk(lp, tick);

            OnMainThread(() => { AddToIndicatorOutput(lp, bid, ask, Bars.Count - initBarsCount); });

            return(new double[] { bid, ask });
        }
Ejemplo n.º 3
0
        private async Task <HttpResponseMessage> GetTick(LiquidityProvider lp)
        {
            _tickerUrl.TryGetValue(lp, out var url);

            try
            {
                if (lp == LiquidityProvider.SoftFx)
                {
                    return(await _softFxClient.GetAsync(url));
                }
                else
                {
                    return(await _defaultClient.GetAsync(url));
                }
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Ejemplo n.º 4
0
        private double GetAsk(LiquidityProvider lp, HttpResponseMessage response)
        {
            try
            {
                dynamic quote = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    return(double.NaN);
                }

                switch (lp)
                {
                case LiquidityProvider.SoftFx:
                    return(quote[0]["BestAsk"]["Price"]);

                case LiquidityProvider.Livecoin:
                    return(quote["best_ask"]);

                case LiquidityProvider.Tidex:
                    return(quote[TidexSymbol]["sell"]);

                case LiquidityProvider.Okex:
                    string okexStr = quote["ticker"]["sell"];
                    return((double.TryParse(okexStr, out double okexAsk)) ? okexAsk : double.NaN);

                case LiquidityProvider.Binance:
                    string binanceStr = quote["askPrice"];
                    return((double.TryParse(binanceStr, out double binanceAsk)) ? binanceAsk : double.NaN);

                case LiquidityProvider.Bitfinex:
                    return(quote[2]);

                case LiquidityProvider.HitBtc:
                    string hitBtcStr = quote["ask"];
                    return((double.TryParse(hitBtcStr, out double hitBtcAsk)) ? hitBtcAsk : double.NaN);

                case LiquidityProvider.Kraken:
                    if (((JArray)quote["error"]).Count != 0)
                    {
                        return(double.NaN);
                    }
                    else
                    {
                        var result     = new JObject(quote["result"]);
                        var enumerator = result.Properties().GetEnumerator();
                        enumerator.MoveNext();
                        var krakenSymbol = enumerator.Current.Name;
                        return(double.Parse((string)result.GetValue(krakenSymbol).Value <JArray>("a")[0]));
                    }

                case LiquidityProvider.Kucoin:
                    return(quote["data"]["sell"]);

                case LiquidityProvider.Huobi:
                    return(quote["tick"]["ask"][0]);

                default:
                    return(double.NaN);
                }
            }
            catch (Exception e)
            {
                return(double.NaN);
            }
        }