public CapitalGainPlotter(CurrentFiat currentFiat, LoggerFactory loggerFactory,
                           WindowHelper windowHelper, TaxMethodology taxMethodology, IFiatConversion fiatConversion)
 {
     _currentFiat    = currentFiat;
     _windowHelper   = windowHelper;
     _taxMethodology = taxMethodology;
     _fiatConversion = fiatConversion;
 }
 public InputOutputLogger(IFiatConversion fiatConversion, CurrentFiat currentFiat,
                          LocalDataRetrieverComposite dataRetriever, LoggerFactory loggerFactory)
 {
     _fiatConversion = fiatConversion;
     _currentFiat    = currentFiat;
     _dataRetriever  = dataRetriever;
     _logger         = loggerFactory.GetLogger();
 }
 public UnrealizedCapitalGainLogger(Portfolio portfolioExact,
                                    IFiatConversion fiatConversion, CurrentFiat currentFiat,
                                    LoggerFactory loggerFactory)
 {
     _portfolioExact = portfolioExact;
     _fiatConversion = fiatConversion;
     _currentFiat    = currentFiat;
     _logger         = loggerFactory.GetLogger();
 }
 public PortfolioBreachesLogger(Portfolio portfolioExact,
                                IFiatConversion fiatConversion, CurrentFiat currentFiat,
                                LoggerFactory loggerFactory)
 {
     _portfolioExact = portfolioExact;
     _fiatConversion = fiatConversion;
     _currentFiat    = currentFiat;
     _logger         = loggerFactory.GetLogger();
 }
 public BalanceDifferencesPortfolioLogger(Portfolio portfolioAcrossTime,
                                          LocalDataRetrieverComposite dataRetriever,
                                          IFiatConversion fiatConversion, CurrentFiat currentFiat, LoggerFactory loggerFactory)
 {
     _portfolioAcrossTime = portfolioAcrossTime;
     _dataRetriever       = dataRetriever;
     _fiatConversion      = fiatConversion;
     _currentFiat         = currentFiat;
     _logger = loggerFactory.GetLogger();
 }
        public static decimal GetExactPriceInFiat(this IFiatConversion fiatConversion, string asset, long time)
        {
            var tryGetExactPriceInFiat = fiatConversion.TryGetExactPriceInFiat(asset, time);

            if (!tryGetExactPriceInFiat.HasValue)
            {
                throw new Exception($"No exact {fiatConversion.Name} price can be given for {asset} @{time.ToTimeReadable():g} - {time}");
            }

            return(tryGetExactPriceInFiat.Value);
        }
        public static decimal GetExactPriceInFiatWithBtcFallbackEnable(this IFiatConversion fiatConversion, string asset, long time)
        {
            var exactPrice = fiatConversion.TryGetExactPriceInFiat(asset, time);

            if (exactPrice.HasValue)
            {
                return(exactPrice.Value);
            }

            var exactBtcPrice        = fiatConversion.GetExactPriceInFiat("BTC", time);
            var exactAssetPriceInBtc = fiatConversion.GetExactPriceInBtc(asset, time);

            return(exactBtcPrice * exactAssetPriceInBtc);
        }
Esempio n. 8
0
        public EndOfFinancialYearPortfolioLogger(PortfolioAcrossTime portfolioAcrossTime,
                                                 Portfolio portfolio, Config config, LoggerFactory loggerFactory, IFiatConversion fiatConversion, CurrentFiat currentFiat)
        {
            _portfolio      = portfolio;
            _fiatConversion = fiatConversion;
            _currentFiat    = currentFiat;
            portfolioAcrossTime.BeforeProcessing += OnBeforeProcessing;

            _financialYearStart = new DateTime(1,
                                               int.Parse(config.StartOfFinancialYear.Split('/')[1]),
                                               int.Parse(config.StartOfFinancialYear.Split('/')[0]),
                                               0, 0, 0);

            _logger = loggerFactory.GetLogger();
        }
Esempio n. 9
0
        private static IFiatConversion GetFiatConversionPrivate(IUnityContainer unityContainer)
        {
            IFiatConversion toReturn = unityContainer.Resolve <UsdFiatConversion>();

            if (unityContainer.Resolve <CurrentFiat>().Name == "AUD")
            {
                toReturn = unityContainer.Resolve <AudFiatConversion>(new DependencyOverride <UsdFiatConversion>(toReturn));
            }

            var config = unityContainer.Resolve <IPortfolioAcrossTimeConfig>();

            if (config.IsNewTaxCitizenStartDateApplies)
            {
                toReturn = new FiatConversionWithMinDate(toReturn, config);
            }

            return(toReturn);
        }
Esempio n. 10
0
 public Portfolio(IFiatConversion fiatConversion, Func <AssetName, Asset> assetFactory)
 {
     _fiatConversion = fiatConversion;
     _assetFactory   = assetFactory;
 }
        public static decimal GetProceed(this IFiatConversion fiatConversion, ITrade trade)
        {
            if (trade is LaunchpadTrade)
            {
                // we go through BNB
                var bnbValue = fiatConversion.TryGetExactPriceInFiat(trade.Quote, trade.Time);
                if (bnbValue.HasValue)
                {
                    return(trade.GetQuoteQuantity() * bnbValue.Value);
                }
            }

            if (trade.IsBuyer)
            {
                // we are buying baseCcy
                var result = fiatConversion.TryGetExactPriceInFiat(trade.Base, trade.Time);
                if (result.HasValue)
                {
                    return(trade.Quantity * result.Value);
                }
            }

            var tryGetExactPriceInFiat = fiatConversion.TryGetExactPriceInFiat(trade.Quote, trade.Time);

            if (tryGetExactPriceInFiat.HasValue)
            {
                return(trade.GetQuoteQuantity() * tryGetExactPriceInFiat.Value);
            }

            if (trade is DelistingTrade)
            {
                // for delisting trade we are trying up to 7 days after
                for (int i = 1; i <= 7; i++)
                {
                    var resultViaBase = fiatConversion.TryGetExactPriceInFiat(trade.Base, trade.Time.AddDays(i));
                    if (resultViaBase.HasValue)
                    {
                        return(trade.Quantity * resultViaBase.Value);
                    }

                    var resultViaQuote = fiatConversion.TryGetExactPriceInFiat(trade.Quote, trade.Time.AddDays(i));

                    if (resultViaQuote.HasValue)
                    {
                        return(trade.GetQuoteQuantity() * resultViaQuote.Value);
                    }

                    var baseViaBtc = fiatConversion.TryGetExactPriceInBtc(trade.Base, trade.Time.AddDays(i));
                    if (baseViaBtc.HasValue)
                    {
                        return(trade.Quantity * baseViaBtc.Value * fiatConversion.GetExactPriceInFiat("BTC", trade.Time.AddDays(i)));
                    }

                    var quoteViaBtc = fiatConversion.TryGetExactPriceInBtc(trade.Quote, trade.Time.AddDays(i));
                    if (quoteViaBtc.HasValue)
                    {
                        return(trade.GetQuoteQuantity() * quoteViaBtc.Value * fiatConversion.GetExactPriceInFiat("BTC", trade.Time.AddDays(i)));
                    }
                }
            }

            throw new Exception($"Unable to price {trade.GetSymbol()} for date {trade.Time} {trade.GetTimeReadable():dd/MM/yyyy}");
        }
Esempio n. 12
0
 public FiatConversionWithMinDate(IFiatConversion fiatConversion, IPortfolioAcrossTimeConfig config)
 {
     _fiatConversion  = fiatConversion;
     _taxStartingDate = config.GetNewTaxCitizenStartDateAsLong();
 }