Exemple #1
0
        public static void RunProgram()
        {
            var listOfDateString = new List <string> {
                "20/01/2013", "01/01/2020", "N/A", "10/01/2020", "20/01/2019"
            };

            Console.WriteLine($"Sort list date string, input : ");
            listOfDateString.ForEach(x => { Console.WriteLine(x); });
            Console.WriteLine($"Sort by date, output : ");
            listOfDateString.SortByDate().ForEach(x => { Console.WriteLine(x); });

            var listOfDates = new List <DateTime>
            {
                new DateTime(1980, 5, 5),
                new DateTime(1982, 10, 20),
                new DateTime(1984, 1, 4),
                new DateTime(1979, 6, 19)
            };

            Console.WriteLine($"Sort list of dates, input : ");
            listOfDates.ForEach(x => { Console.WriteLine(x); });
            Console.WriteLine($"Sort by ascending result : ");
            listOfDates.SortByDateAsc().ForEach(x => { Console.WriteLine(x); });

            Console.WriteLine($"Sort by desc result : ");
            listOfDates.SortByDateDesc().ForEach(x => { Console.WriteLine(x); });
        }
        public void SortTest()
        {
            var time = DateTime.UtcNow;
            var list = new List <Trade>
            {
                new SellTrade()
                {
                    Date = time.AddMilliseconds(1), FiatFees = 3
                },
                new SellTrade()
                {
                    Date = time, FiatFees = 2
                },
                new BuyTrade()
                {
                    Date = time, FiatFees = 1
                }
            };

            list.SortByDate();

            Assert.AreEqual(1, list[0].FiatFees);
            Assert.AreEqual(2, list[1].FiatFees);
            Assert.AreEqual(3, list[2].FiatFees);
        }
Exemple #3
0
        private List <Item> SortItems(List <Item> items)
        {
            switch (Settings.Current.UserSettings.SortItemsBy)
            {
            case SortBy.Site:
                return(items.SortBySite());

            case SortBy.Date:
            default:
                return(items.SortByDate());
            }
        }
Exemple #4
0
        static void Main()
        {
            Console.ForegroundColor = ConsoleColor.Gray;
            var cfg      = Config.FromFile("config.json");
            var provider = new GoogleSheetsProvider(cfg);
            var parsers  = new ITradeParser[]
            {
                new KrakenLedgerParser(), // Kraken Ledger before Trades ALWAYS
                new KrakenTradesParser(),
                new BittrexParser(),
                new BinanceParser()
            };
            var priceProvider = new CoinPaprikaPriceProvider(cfg.FiatProvider);

            // Parser trades

            var trades     = new List <Trade>();
            var dataSource = new TradeDataSource()
            {
                Data = provider.GetData().ToArray()
            };

            foreach (var parser in parsers)
            {
                foreach (var data in dataSource.Data)
                {
                    if (data.Parsed || !parser.IsThis(data))
                    {
                        continue;
                    }

                    trades.AddRange(parser.GetTrades(dataSource, data));
                    data.Parsed = true;
                }
            }

            // Sort trades by date

            trades.SortByDate();

            // Compute fiat values

            trades.ComputeFiatValues(priceProvider);

            // Compute fifo

            var profits = new Dictionary <int, YearProfit>();

            trades.ComputeFifo(out var fifo,
                               (trade, fee) =>
            {
                if (!profits.TryGetValue(trade.Date.Year, out var profit))
                {
                    profit = new YearProfit()
                    {
                        Year = trade.Date.Year
                    };

                    profits.Add(profit.Year, profit);
                }

                profit.Fee += fee;
            },
                               (trade, buyPrice, sellPrice, amount) =>
            {
                if (buyPrice <= 0)
                {
                    //Console.WriteLine("Buy not found for: " + trade.ToString());
                }

                if (!profits.TryGetValue(trade.Date.Year, out var profit))
                {
                    profit = new YearProfit()
                    {
                        Year = trade.Date.Year
                    };

                    profits.Add(profit.Year, profit);
                }

                profit.Buyed  += (amount * buyPrice);
                profit.Sold   += (amount * sellPrice);
                profit.Profit += (amount * sellPrice) - (amount * buyPrice);
            }
                               );

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(JsonConvert.SerializeObject(profits, Formatting.Indented));
            Console.ForegroundColor = ConsoleColor.Gray;
        }
        private void ShowFirstItem()
        {
            if (Settings.Current.UserSettings.ImagesEnabled)
            {
                BackgroundDownloadImages();
            }

            _itemsForSelectedCategories = new List <Item>();

            // Use local variables to avoid repeated calls
            var allItems       = Repository.Default.ListItems();
            var lastCategories = Settings.Current.LastCategories;

            foreach (Item currentitem in allItems)
            {
                if (lastCategories.Contains(currentitem.Feed.Category))
                {
                    _itemsForSelectedCategories.Add(currentitem);
                }
            }

            // Filter out read items, if it's enabled.
            if (Settings.Current.UserSettings.IgnoreReadItems)
            {
                _itemsForSelectedCategories = _itemsForSelectedCategories.Where(i => !i.IsRead).ToList();
            }

            // Nothing to work with, show the empty message
            if (_itemsForSelectedCategories.Count == 0)
            {
                Settings.Current.LastItemId = "";
                _webView.LoadHtmlString(HtmlTemplate.EmptyHtml(), new NSUrl("/"));
                return;
            }
            else
            {
                switch (Settings.Current.UserSettings.SortItemsBy)
                {
                case SortBy.Site:
                    _itemsForSelectedCategories = _itemsForSelectedCategories.SortBySite();
                    break;

                case SortBy.Date:
                default:
                    _itemsForSelectedCategories = _itemsForSelectedCategories.SortByDate();
                    break;
                }

                UpdateArrowButtons();

                // Show the first item
                _currentItemIndex = 0;

                // Use the last item that was viewed, if it exists
                Item item = null;
                if (!string.IsNullOrEmpty(Settings.Current.LastItemId))
                {
                    try
                    {
                        Guid guid = new Guid(Settings.Current.LastItemId);
                        item = _itemsForSelectedCategories.FirstOrDefault(i => i.Id == guid);
                    }
                    catch (FormatException)
                    {
                    }
                }

                if (item != null)
                {
                    // Put it at the start of the list, and remove it from wherever it is
                    _itemsForSelectedCategories.Remove(item);
                    _itemsForSelectedCategories.Insert(0, item);
                }
                else
                {
                    // No saved item, use the first
                    item = _itemsForSelectedCategories[0];
                }

                Settings.Current.LastItemId = item.Id.ToString();
                _webView.LoadHtmlString(HtmlTemplate.HtmlForItem(item), new NSUrl("/"));
            }
        }
        private List<Item> SortItems(List<Item> items)
        {
            switch (Settings.Current.UserSettings.SortItemsBy)
            {
                case SortBy.Site:
                    return items.SortBySite();

                case SortBy.Date:
                default:
                    return items.SortByDate();
            }
        }
        private void ShowFirstItem()
        {
            if (Settings.Current.UserSettings.ImagesEnabled)
            {
                BackgroundDownloadImages();
            }

            _itemsForSelectedCategories = new List<Item>();

            // Use local variables to avoid repeated calls
            var allItems = Repository.Default.ListItems();
            var lastCategories = Settings.Current.LastCategories;
            foreach (Item currentitem in allItems)
            {
                if (lastCategories.Contains(currentitem.Feed.Category))
                    _itemsForSelectedCategories.Add(currentitem);
            }

            // Filter out read items, if it's enabled.
            if (Settings.Current.UserSettings.IgnoreReadItems)
                _itemsForSelectedCategories = _itemsForSelectedCategories.Where(i => !i.IsRead).ToList();

            // Nothing to work with, show the empty message
            if (_itemsForSelectedCategories.Count == 0)
            {
                Settings.Current.LastItemId = "";
                _webView.LoadHtmlString(HtmlTemplate.EmptyHtml(), new NSUrl("/"));
                return;
            }
            else
            {
                switch (Settings.Current.UserSettings.SortItemsBy)
                {
                    case SortBy.Site:
                        _itemsForSelectedCategories = _itemsForSelectedCategories.SortBySite();
                        break;

                    case SortBy.Date:
                    default:
                        _itemsForSelectedCategories = _itemsForSelectedCategories.SortByDate();
                        break;
                }

                UpdateArrowButtons();

                // Show the first item
                _currentItemIndex = 0;

                // Use the last item that was viewed, if it exists
                Item item = null;
                if (!string.IsNullOrEmpty(Settings.Current.LastItemId))
                {
                    try
                    {
                        Guid guid = new Guid(Settings.Current.LastItemId);
                        item = _itemsForSelectedCategories.FirstOrDefault(i => i.Id == guid);
                    }
                    catch (FormatException)
                    {
                    }
                }

                if (item != null)
                {
                    // Put it at the start of the list, and remove it from wherever it is
                    _itemsForSelectedCategories.Remove(item);
                    _itemsForSelectedCategories.Insert(0, item);
                }
                else
                {
                    // No saved item, use the first
                    item = _itemsForSelectedCategories[0];
                }

                Settings.Current.LastItemId = item.Id.ToString();
                _webView.LoadHtmlString(HtmlTemplate.HtmlForItem(item), new NSUrl("/"));
            }
        }