/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="config">Config</param>
        public FiatProviderBase(Config.FiatProviderConfig config)
        {
            Coin = config.FiatCoin;

            if (Coin != ECoin.EUR && Coin != ECoin.USD)
            {
                throw new ArgumentException(nameof(Coin));
            }

            CacheFile = "marketCache.json";

            if (File.Exists(CacheFile))
            {
                // Load cache

                try
                {
                    var data = JsonConvert.DeserializeObject <Dictionary <ECoin, Dictionary <ECoin, Dictionary <DateTime, decimal> > > >(File.ReadAllText(CacheFile));
                    if (data != null)
                    {
                        _cache = data;
                    }

#if DEBUG
                    Debugger.Log(0, "MarketCache", "Loaded " + data.Values.Sum(u => u.Values.Sum(x => x.Count)) + " entries");
#endif
                }
                catch { }
            }

            if (_cache == null)
            {
                _cache = new Dictionary <ECoin, Dictionary <ECoin, Dictionary <DateTime, decimal> > >();
            }
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config">Config</param>
 public CoinPaprikaPriceProvider(Config.FiatProviderConfig config) : base(config)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config">Config</param>
 public ManualPriceProvider(Config.FiatProviderConfig config) : base(config)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="config">Config</param>
 public CoinLayerDotComPriceProvider(Config.FiatProviderConfig config) : base(config)
 {
     ApiKey = config.ApiKey;
 }