Ejemplo n.º 1
0
        public async Task StopAsync( )
        {
            if (!IsRunning)
            {
                return;
            }
            IsRunning = false;

            Logger.Info("Stopping Bot");

            FiatConverter.StopMonitor( );
            if (!Cts.IsCancellationRequested)
            {
                Cts.Cancel( );
            }

            var services = Services.ToList( );

            foreach (var service in services)
            {
                await DetachAsync(service).ConfigureAwait(false);
            }

            Terminate?.Invoke(this);
        }
Ejemplo n.º 2
0
        protected override void DeserializeData(dynamic data, string symbol)
        {
            decimal InrToUsd(decimal amount) => FiatConverter.Convert(amount, FiatCurrency.INR, FiatCurrency.USD);

            ExchangeData[symbol].LowestAsk  = InrToUsd(data.lowest_ask);
            ExchangeData[symbol].HighestBid = InrToUsd(data.highest_bid);
            ExchangeData[symbol].Rate       = InrToUsd(data.last_traded_price);
        }
        private static IList <string> BuildCompareTables(
            Dictionary <CryptoExchangeId, Dictionary <CryptoExchangeId, Dictionary <CryptoCoinId, CoinMapModel> > > compare)
        {
            var tables = new List <string> ( );

            foreach (var from in compare)
            {
                var table     = new StringBuilder( );
                var formatter = new TableFormatter( );
                var objects   = new List <IDictionary <string, object> > ( );
                //table.AppendLine ( $"{from.Key}" );

                var coinIds = ExtractSymbols(from.Value.Values);

                foreach (var value in from.Value)
                {
                    foreach (var item in value.Value)
                    {
                        var buyINR        = FiatConverter.Convert(item.Value.Buy, FiatCurrency.USD, FiatCurrency.INR);
                        var sellINR       = FiatConverter.Convert(item.Value.Sell, FiatCurrency.USD, FiatCurrency.INR);
                        var minInvestment = FiatConverter.Convert(item.Value.minInvestment, FiatCurrency.USD, FiatCurrency.INR);

                        table.AppendLine(item.Value.Coin.ToString());
                        table.AppendLine($"{from.Key} Ask {item.Value.Buy:C} / {TOINR(buyINR)}");
                        table.AppendLine($"{value.Key} Bid {item.Value.Sell:C} / {TOINR(sellINR)}");
                        table.AppendLine($"Withdr Fee: {item.Value.WithdrawFee } {item.Value.Coin.ToString()}");
                        table.AppendLine($"Expected profit:    {item.Value.Profit:C} / {TOINR(item.Value.ProfitINR)}");
                        table.AppendLine($"Minimum Investment:  {item.Value.minInvestment:C} / {TOINR(minInvestment)}");
                        table.AppendLine($"{item.Value.ProfitPercentage:P}");
                        table.AppendLine();
                    }

                    //    $"Buy  {best} From: {from.Name,-12} @ {from[best].BuyPrice:C}\n" +
                    //$"Sell {best} To:   {to.Name,-12} @ {to[best].SellPrice:C}\n" +
                    //$"Buy  {leastWorst} From: {to.Name,-12} @ {to[leastWorst].BuyPrice:C}\n" +
                    //$"Sell {leastWorst} To:   {from.Name,-12} @ {from[leastWorst].SellPrice:C}\n" +
                    //$"Expected profit:    {profit:P}\n" +
                    //$"Estimated fees:     {fees:C}\n" +
                    //$"Minimum Investment: {minInvestment:C}";


                    //var dict = new Dictionary<string, object> {["Exchange"] = $"{value.Key}"};
                    //foreach ( var id in coinIds )
                    //	dict[id.ToString ( )] =
                    //		value.Value.ContainsKey ( id )
                    //			? $"{value.Value[id]:P}"
                    //			: "";
                    //objects.Add ( dict );
                }


                table.AppendLine( );
                tables.Add(table.ToString( ));
            }

            return(tables);
        }
Ejemplo n.º 4
0
        protected override void DeserializeData(dynamic data, string symbol)
        {
            var cdc = (CoinDeltaCoin)data;

            decimal InrToUsd(decimal amount) => FiatConverter.Convert(amount, FiatCurrency.INR, FiatCurrency.USD);

            ExchangeData[symbol].LowestAsk  = InrToUsd(cdc.Ask);
            ExchangeData[symbol].HighestBid = InrToUsd(cdc.Bid);
            ExchangeData[symbol].Rate       = InrToUsd(cdc.Last);
        }
Ejemplo n.º 5
0
        protected override void DeserializeData(dynamic data, CryptoCoinId id)
        {
            decimal InrToUsd(dynamic amount) =>
            FiatConverter.Convert((decimal)amount, FiatCurrency.INR, FiatCurrency.USD);

            ExchangeData[id].LowestAsk  = InrToUsd(Convert.ToDecimal(data.Buy));
            ExchangeData[id].HighestBid = InrToUsd(Convert.ToDecimal(data.Sell));
            ExchangeData[id].Rate       = InrToUsd(Convert.ToDecimal(data.Market));

            ExchangeData[id].LowestAskINR  = Convert.ToDecimal(data.Buy);
            ExchangeData[id].HighestBidINR = Convert.ToDecimal(data.Sell);
        }
Ejemplo n.º 6
0
        protected override void DeserializeData(dynamic data, CryptoCoinId id)
        {
            var stats = (CoinStats)data;

            decimal InrToUsd(decimal amount) => FiatConverter.Convert(amount, FiatCurrency.INR, FiatCurrency.USD);

            ExchangeData[id].LowestAsk  = InrToUsd(Convert.ToDecimal(stats.LowestSellBid));
            ExchangeData[id].HighestBid = InrToUsd(Convert.ToDecimal(stats.HighestBuyBid));
            ExchangeData[id].Rate       = InrToUsd(Convert.ToDecimal(stats.LastTradedPrice));

            ExchangeData[id].LowestAskINR  = Convert.ToDecimal(stats.LowestSellBid);
            ExchangeData[id].HighestBidINR = Convert.ToDecimal(stats.HighestBuyBid);
        }
Ejemplo n.º 7
0
        protected override void DeserializeData(dynamic datum, CryptoCoinId id)
        {
            var d = (BinanceTickerDatum)datum;

            ExchangeData[id].LowestAsk  = d.BestAskPrice;
            ExchangeData[id].HighestBid = d.BestBidPrice;
            ExchangeData[id].Rate       = d.WeightedAveragePrice;

            string UsdToInr(decimal amount) => FiatConverter.Convert(amount, FiatCurrency.USD, FiatCurrency.INR).ToString("0.##");

            ExchangeData[id].LowestAskINR  = Convert.ToDecimal(UsdToInr(Convert.ToDecimal(d.BestAskPrice)));
            ExchangeData[id].HighestBidINR = Convert.ToDecimal(UsdToInr(Convert.ToDecimal(d.BestBidPrice)));
        }
Ejemplo n.º 8
0
        protected override void DeserializeData(dynamic datum, CryptoCoinId id)
        {
            var d = (HitbtcCoin)datum;

            string UsdToInr(decimal amount) => FiatConverter.Convert(amount, FiatCurrency.USD, FiatCurrency.INR).ToString("0.##");

            ExchangeData[id].LowestAskINR  = Convert.ToDecimal(UsdToInr(Convert.ToDecimal(d.Ask)));
            ExchangeData[id].HighestBidINR = Convert.ToDecimal(UsdToInr(Convert.ToDecimal(d.Bid)));

            ExchangeData[id].LowestAsk  = Convert.ToDecimal(d.Ask);
            ExchangeData[id].HighestBid = Convert.ToDecimal(d.Bid);
            ExchangeData[id].Rate       = Convert.ToDecimal(d.Last);
            //Console.WriteLine(ExchangeData);
        }
        public void Start([NotNull] CancellationTokenSource cts)
        {
            Logger.Info("Starting Bot");

            Cts         = cts;
            IsRunning   = true;
            fiatMonitor = FiatConverter.StartMonitor( );

            InitExchanges( );

            Task.Run(async( ) =>
            {
                await Task.Delay(int.MaxValue, Cts.Token).ConfigureAwait(false);

                IsRunning = false;
                Close?.Invoke(this);
            }, Cts.Token);
        }
Ejemplo n.º 10
0
        public async Task StartAsync(CancellationTokenSource cts = null,
                                     params CryptoExchangeId[] exchangeIds)
        {
            Logger.Info("Starting Bot");

            StartTime = DateTime.UtcNow;

            Cts       = cts ?? new CancellationTokenSource( );
            IsRunning = true;
            await FiatConverter.StartMonitorAsync( ).ConfigureAwait(false);

            Exchanges = ImmutableDictionary <CryptoExchangeId, ICryptoExchange> .Empty
                        .AddRange(AllExchanges.Where(x => exchangeIds.Contains(x.Key)));

            InitExchanges( );

            Cts.Token.Register(async( ) => await StopAsync( ).ConfigureAwait(false));

            Start?.Invoke(this);
        }
Ejemplo n.º 11
0
        public void Start( )
        {
            IsRunning = true;
            cts       = new CancellationTokenSource( );
            Task.Run(async( ) =>
            {
                fiatMonitor = FiatConverter.StartMonitor( );

                InitExchanges( );

                IsInitialized = true;

                CreateSheetsService( );

                StartAutoSheetsUpdater( );

                await Task.Delay(int.MaxValue, cts.Token);

                IsRunning = false;
            }, cts.Token);
        }