/// <summary> /// Auxiliary function in order to fill in the FX Market History (including the increasing Frequency feature) /// </summary> /// <param name="fxmh"></param> /// <param name="cpts"></param> /// <param name="startDate"></param> private void FillFXMarketHistory(FXMarketHistory fxmh, CurrencyPairTimeSeries cpts, DateTime startDate) { List <Tuple <DateTime, double> > ts = GetTimeSeries(cpts, isIndex: false, startDate: startDate); if (ts.Count > 0) { foreach (Tuple <DateTime, double> item in ts) { fxmh.AddQuote(item.Item1, new XChangeRate(item.Item2, cpts.CurPair)); } } DateTime firstDate = fxmh.GetFirstDate(cpts.CurPair); if (firstDate > startDate) { CurrencyPairTimeSeries newCpts = (CurrencyPairTimeSeries)cpts.Clone(); newCpts.IncreaseFreq(); if (newCpts.Freq != Frequency.None) { FillFXMarketHistory(fxmh, newCpts, startDate); } } }
/// <summary> /// Create, Update and Save OHLC data (as much as needed) /// </summary> /// <param name="itsk"></param> /// <param name="useLowerFrequencies"></param> public void LoadOHLC(ITimeSeriesKey itsk, bool useLowerFrequencies = false) { if (itsk.GetKeyType() == TimeSeriesKeyType.CurrencyPair) { CurrencyPairTimeSeries cpts = CurrencyPairTimeSeries.RequestIDToCurrencyPairTimeSeries(itsk.GetTimeSeriesKey()); if (!cpts.CurPair.IsIdentity) { if (cpts.Freq == Frequency.None) { cpts.Freq = SavingMinimumFrequency.GetNextFrequency(); } List <Frequency> freqList = (useLowerFrequencies && SaveableFrequency(cpts.Freq)) ? cpts.Freq.GetFrequencyList() : new List <Frequency> { cpts.Freq }; foreach (Frequency item in freqList) { CurrencyPairTimeSeries newCpts = (CurrencyPairTimeSeries)cpts.Clone(); newCpts.Freq = item; LoadOHLCCore(newCpts); } } } }