Ejemplo n.º 1
0
        private async Task PlayInternalMarketArea()
        {
            /// Initial Data
            var xInfo = await _apiClient.FuturesUsdt.System.GetExchangeInfoAsync();

            if (xInfo.Success)
            {
                ExchangeInfo = xInfo.Data;
            }
            else
            {
                // TODO: NOTIFY ERROR
            }

            /// Streams
            await _socketClient.FuturesUsdt.SubscribeToAllSymbolTickerUpdatesAsync((eventData) =>
            {
                if (!_playing)
                {
                    return;
                }

                if (AllSymbolsTickerEvent.Listened)
                {
                    _eventAggregator.GetEvent <AllSymbolsTickerEvent>().Publish(eventData);
                }

                App.RunUI(() => eventData.ForEach((ticker) => MarketTickers.ReplaceOrAdd(ticker, i => i.Symbol == ticker.Symbol)));
            });

            /// Interval Tasks
            RunTaskRegularly(() =>
            {
                var xTime = _apiClient.FuturesUsdt.System.GetServerTime();
                if (xTime.Success)
                {
                    ExchangeDelay = DateTime.UtcNow - xTime.Data;
                }
                else
                {
                    // TODO: notify data is old
                }
            }, oneMinute);
        }
Ejemplo n.º 2
0
        public void Execute(object parameter)
        {
            decimal       rate          = 1;
            MarketTickers updateTickers = null;
            bool          needConvert   = false;

            switch (parameter.ToString())
            {
            case "BtcToCny":
                rate          = mainViewModel.BtcCny;
                updateTickers = mainViewModel.BtcMarket;
                needConvert   = mainViewModel.IsBtcToCny;
                break;

            case "CnyToUsd":
                rate          = 1 / mainViewModel.UsdCny;
                updateTickers = mainViewModel.CnyMarket;
                needConvert   = mainViewModel.IsCnyToUsd;
                break;

            case "UsdToCny":
                rate          = mainViewModel.UsdCny;
                updateTickers = mainViewModel.UsdMarket;
                needConvert   = mainViewModel.IsUsdToCny;
                break;

            case "LtcToCny":
                rate          = mainViewModel.LtcCny;
                updateTickers = mainViewModel.LtcMarket;
                needConvert   = mainViewModel.IsLtcToCny;
                break;

            case "XpmToCny":
                rate          = mainViewModel.XpmCny;
                updateTickers = mainViewModel.XpmMarket;
                needConvert   = mainViewModel.IsXpmToCny;
                break;
            }


            foreach (TickersByExchange tickers in updateTickers)
            {
                foreach (Ticker ticker in tickers)
                {
                    if (needConvert)
                    {
                        ticker.ConvertRate = rate;
                        // ticker.Exchange.UpdateTicker(ticker.CurrencyPair);
                        // ticker.Convert();
                        // mainViewModel.UpdateQuotaion()
                    }
                    else
                    {
                        ticker.ConvertRate = 1;
                        //   ticker.Exchange.UpdateTicker(ticker.CurrencyPair);
                        //ticker.Exchange.UpdateQuotation(ticker.CurrencyPair);
                        //  mainViewModel.UpdateQuotaion(ticker);
                    }
                }
            }
        }