/// <summary> /// performs adjustment to the original data based on exogenous time series, /// so that we can use the original likelihood function /// </summary> /// <returns></returns> protected TimeSeries ComputeAdjustedValues() { if (values == null) return null; if (exogenous == null) return values; for (int i=0 ; i<numExogenous ; ++i) if (exogenous[i] == null || exogenous[i].Count != values.Count) return values; var adjustments = new TimeSeries(); adjustments.Add(values.TimeStamp(0), 0, false); for (int t=1 ; t<values.Count ; ++t) { double tx = 0; for (int i=0 ; i<numExogenous ; ++i) tx += exogenous[i][t - 1]*GetGamma(i); for (int i = 0; i < AROrder; ++i) tx += t - i - 1 >= 0 ? ARCoeff(i)*adjustments[t - i - 1] : 0; adjustments.Add(values.TimeStamp(t), tx, false); } var adjusted = new TimeSeries(); for (int t=0 ; t<values.Count ; ++t) adjusted.Add(adjustments.TimeStamp(t), values[t] - adjustments[t], false); return adjusted; }
public override double Calculate(int index) { int i = index - length + 1; if (i == 0) { // 将前一天初始化为50 DateTime dt1 = Input.GetDateTime(index - 1); K.Add(dt1, 50); D.Add(dt1, 50); } else if (i < 0) { return(double.NaN); } double KValue = K[i]; double DValue = D[i]; KValue = (2.0 * KValue + rsv[i]) / 3.0; DValue = (2.0 * DValue + KValue) / 3.0; DateTime dt = Input.GetDateTime(index); K.Add(dt, KValue); D.Add(dt, DValue); return(3 * KValue - 2 * DValue); }
protected override TimeSeries _BuildOutput(TimeSeries simulatedData, object userState = null) { int predictFuture = 0; double[] fstar; double[] Vfsar; double logpyX; double[] targets = GetDataArray(simulatedData); Predict(targets, predictFuture, mSigma0, mLambda, mSigmaN, out fstar, out Vfsar, out logpyX); TimeSeries ft = new TimeSeries(); for (int i = 0; i < targets.Length; ++i) { if (mBuildOutputType == BuildOutputType.Mean) { ft.Add(simulatedData.TimeStamp(i), fstar[i], true); } else { ft.Add(simulatedData.TimeStamp(i), Vfsar[i], true); } } return(ft); }
//public override Icon GetIcon() //{ // var x = Images.ResourceManager.GetObject("ThresholdIcon") as Icon; // return x; //} public override void Recompute() { var ins = GetInputBundle(); outputs = new List <TimeSeries>(); foreach (var ts in ins) { var ots = new TimeSeries() { Title = ts.Title }; for (int t = 0; t < ts.Count; ++t) { if (ts[t] > Maximum) { ots.Add(ts.TimeStamp(t), Maximum, false); } else if (ts[t] < Minimum) { ots.Add(ts.TimeStamp(t), Minimum, false); } else { ots.Add(ts.TimeStamp(t), ts[t], false); } } outputs.Add(ots); } IsValid = true; }
private TimeSeries DoUnivariateSampling(TimeSeries ofTS) { var retval = new TimeSeries(); retval.Title = ofTS.Title; if (SamplingInterval.Ticks == 0) { int i0, i1; bool gotHit; i0 = ofTS.IndexAtOrBefore(StartTime, out gotHit); if (!gotHit) { ++i0; } i1 = ofTS.IndexAtOrBefore(EndTime, out gotHit); ++i1; if (i1 > ofTS.Count) { i1 = ofTS.Count; } for (int t = i0; t < i1; ++t) { retval.Add(ofTS.TimeStamp(t), ofTS[t], false); } } else { for (var current = new DateTime(StartTime.Ticks); current < EndTime; current = new DateTime((current + SamplingInterval).Ticks)) { foreach (var sampleOffset in SamplingBaseOffsets) { var adjusted = current + sampleOffset; bool skipping = false; if (SkipWeekends) { if (adjusted.DayOfWeek == DayOfWeek.Saturday || adjusted.DayOfWeek == DayOfWeek.Sunday) { skipping = true; } } if (IsWithinSkipIntervals(adjusted)) { skipping = true; } if (!skipping) { double sampled = ofTS.ValueAtTime(adjusted); retval.Add(adjusted, sampled, false); } } } } return(retval); }
//public override Icon GetIcon() //{ // return null; //} public override void Recompute() { IsValid = false; var tsList = GetInputBundle(); if (tsList != null) { outputs = new List <TimeSeries>(tsList.Count); foreach (var ts in tsList) { var stripped = new TimeSeries() { Title = ts.Title }; for (int t = 0; t < ts.Count; ++t) { if (!(ts[t] < LowerValue || ts[t] > UpperValue)) { stripped.Add(ts.TimeStamp(t), ts[t], true); } } outputs.Add(stripped); } if (outputs.Count > 0) { IsValid = true; } } }
private static void Creating() { #region creating TimeSeries <Quarter, decimal> timeSeriesFromConstructor1 = new TimeSeries <Quarter, decimal>( Quarter.CreateQuarter1(2020), new [] { 21.3M, 42.4M, 42.5M }); Console.WriteLine(timeSeriesFromConstructor1); Console.WriteLine(); var timeSeriesFromConstructor2 = new TimeSeries <Day, double>( new [] { new Day(2019, 9, 17), new Day(2019, 9, 18), new Day(2019, 9, 19) }, new [] { 242.4, 224.42, 262.04 }); Console.WriteLine(timeSeriesFromConstructor2); Console.WriteLine(); var builder = new TimeSeries <Month, int> .Builder { { Month.CreateJanuary(2019), 1 }, { Month.CreateFebruary(2019), 2 }, { Month.CreateMarch(2019), 3 } }; builder.Add(Month.CreateApril(2019), 4); TimeSeries <Month, int> timeSeriesFromBuilder = builder.Build(); Console.WriteLine(timeSeriesFromBuilder); Console.WriteLine(); TimeSeries <Day, string> emptyTimeSeries = TimeSeries <Day, String> .Empty; Console.WriteLine(emptyTimeSeries); #endregion }
public TimeSeries <string> historySeries(DateTime sDate, DateTime eDate) { TimeSeries <string> hist = new TimeSeries <string>(); INDEX_DATA_Table_DAOManager dao_m = new INDEX_DATA_Table_DAOManager(); dao_m.INDEX_CODE_ = this.Code_; dao_m.selectInterval(DataBaseConnectManager.ConnectionFactory("myDB"), sDate, eDate); foreach (var item in dao_m.DAOList_) { string date = item.INDEX_DATE_; int year = Convert.ToInt32(date.Substring(0, 4)); int month = Convert.ToInt32(date.Substring(4, 2)); int day = Convert.ToInt32(date.Substring(6, 2)); string value = item.INDEX_VALUE_; hist.Add(new Date(new DateTime(year, month, day)), value); } return(hist); }
public TimeSeries <string> historyCurveSeriesMRO(DateTime sDate, DateTime eDate) { TimeSeries <string> hist = new TimeSeries <string>(); IRCurveMarketDataLoader irCurveLoader = IRCurveMarketDataLoader.CreateMarketDataLoader("MRO"); ObservableCollection <Excel_irCurveDataViewModel> e_ircdvmList = new ObservableCollection <Excel_irCurveDataViewModel>(); irCurveLoader.loadInterval(sDate, eDate, this.LinkedCurveCode_, e_ircdvmList); //TD_MRSTOCKFACTOR_Table_DAOManager dao_m = new TD_MRSTOCKFACTOR_Table_DAOManager(); //dao_m.STOCK_ID_ = this.Code_; //dao_m.selectInterval(DataBaseConnectManager.ConnectionFactory("MRO"), sDate, eDate); int tenorIndex = e_ircdvmList[0].getTenorIndex(this.Tenor_); if (tenorIndex != -1) { foreach (var item in e_ircdvmList) { string value = item.Excel_rateDataViewModelList_[tenorIndex].Value_; hist.Add(new Date(item.ReferenceDate_), value); } } return(hist); }
public TimeSeries <string> historySeriesMRO(DateTime sDate, DateTime eDate) { TimeSeries <string> hist = new TimeSeries <string>(); TD_MRSTOCKFACTOR_Table_DAOManager dao_m = new TD_MRSTOCKFACTOR_Table_DAOManager(); dao_m.STOCK_ID_ = this.Code_; dao_m.selectInterval(DataBaseConnectManager.ConnectionFactory("MRO"), sDate, eDate); foreach (var item in dao_m.DAOList_) { string date = item.STD_DATE_; int year = Convert.ToInt32(date.Substring(0, 4)); int month = Convert.ToInt32(date.Substring(4, 2)); int day = Convert.ToInt32(date.Substring(6, 2)); string value = item.CURR_PRICE_; hist.Add(new Date(new DateTime(year, month, day)), value); } return(hist); }
public double SharpeRatio(double RiskFreeRate) { int Days = Solution.Performance.PnLSeries.Count; TimeSeries ReturnSeries = new TimeSeries(); double Portfolio0 = Solution.Cash; double Portfolio1; for (int t = 0; t < Days; ++t) { DateTime date = Solution.Performance.PnLSeries.GetDateTime(t); Portfolio1 = Solution.Performance.PnLSeries[t] + Portfolio0; double DailyReturn = Portfolio1 / Portfolio0 - 1; Portfolio0 = Portfolio1; ReturnSeries.Add(date, DailyReturn); } double Mean = ReturnSeries.GetMean(0, Days - 1); double Std = ReturnSeries.GetStdDev(0, Days - 1); //年化收益均值、波动率 Mean = Mean * 250; Std = Std * Math.Sqrt(250); double SR = (Mean - RiskFreeRate) / Std; return(SR); }
//public override Icon GetIcon() //{ // return null; //} public override void Recompute() { IsValid = false; if (GetInputType(-1) != InputType.UnivariateTS) { return; } var series = GetInputBundle(); if (series.Count != 1) { return; // something wrong! } var input = series[0]; var agg = new TimeSeries(); double accumulated = 0; for (int t = 0; t < input.Count; ++t) { accumulated += input[t]; if (t % Period == Period - 1) { agg.Add(input.TimeStamp(t), accumulated, false); accumulated = 0; } } outputs = new List <TimeSeries>(); outputs.Add(agg); IsValid = true; }
public override void OnBarSlice(long size) { if (Instrument1 == Instrument) { return; } if (BarSeries1.Count < 1 || BarSeries2.Count < 1) { return; } DateTime dt = BarSeries1.Last.DateTime; if (dt.CompareTo(BarSeries2.Last.DateTime) < 0) { dt = BarSeries2.Last.DateTime; } spreadSeries.Add(dt, Calculate(BarSeries1.Last, BarSeries2.Last)); if (sma.Count < 1) { return; } //操作 //Sell(Instrument2,Qty2,"O|卖开"); //Buy(Instrument1,Qty1,"O|买开"); }
public void TestEMA() { long ticks = 1000; var data = new double[] { 20, 40, 22, 35, 33, 78, 21, 45, 33, 5, 67, 22, 98, 22, 34, 54 }; var input = new TimeSeries(); var ema = new EMA(input, 10); foreach (var d in data) { input.Add(new DateTime().AddTicks(ticks++), d); } for (var i = 0; i < ema.Count; i++) { output.WriteLine(ema[i].ToString()); } Assert.Equal(ema[0], 20, precision); Assert.Equal(ema[1], 23.6363636363636, precision); Assert.Equal(ema[2], 23.3388429752066, precision); Assert.Equal(ema[3], 25.4590533433509, precision); Assert.Equal(ema[4], 26.8301345536507, precision); Assert.Equal(ema[5], 36.1337464529869, precision); Assert.Equal(ema[6], 33.3821561888075, precision); Assert.Equal(ema[7], 35.4944914272061, precision); Assert.Equal(ema[8], 35.0409475313505, precision); Assert.Equal(ema[9], 29.5789570711049, precision); Assert.Equal(ema[10], 36.3827830581768, precision); Assert.Equal(ema[11], 33.7677315930537, precision); Assert.Equal(ema[12], 45.4463258488621, precision); Assert.Equal(ema[13], 41.1833575127054, precision); Assert.Equal(ema[14], 39.8772925103953, precision); Assert.Equal(ema[15], 42.4450575085053, precision); }
public void TestEMA() { long ticks = 1000; var data = new double[] { 20, 40, 22, 35, 33, 78, 21, 45, 33, 5, 67, 22, 98, 22, 34, 54 }; var input = new TimeSeries(); var ema = new EMA(input, 10); foreach (var d in data) input.Add(new DateTime().AddTicks(ticks++), d); for (var i = 0; i < ema.Count; i++) output.WriteLine(ema[i].ToString()); Assert.Equal(ema[0], 20, precision); Assert.Equal(ema[1], 23.6363636363636, precision); Assert.Equal(ema[2], 23.3388429752066, precision); Assert.Equal(ema[3], 25.4590533433509, precision); Assert.Equal(ema[4], 26.8301345536507, precision); Assert.Equal(ema[5], 36.1337464529869, precision); Assert.Equal(ema[6], 33.3821561888075, precision); Assert.Equal(ema[7], 35.4944914272061, precision); Assert.Equal(ema[8], 35.0409475313505, precision); Assert.Equal(ema[9], 29.5789570711049, precision); Assert.Equal(ema[10], 36.3827830581768, precision); Assert.Equal(ema[11], 33.7677315930537, precision); Assert.Equal(ema[12], 45.4463258488621, precision); Assert.Equal(ema[13], 41.1833575127054, precision); Assert.Equal(ema[14], 39.8772925103953, precision); Assert.Equal(ema[15], 42.4450575085053, precision); }
public override void Recompute() { IsValid = false; var inputs = GetInputBundle(); outputs = new List <TimeSeries>(inputs.Count); bool failure = false; for (int i = 0; i < inputs.Count; ++i) { var lrs = new TimeSeries(); for (int t = 1; t < inputs[i].Count; ++t) { double x1 = inputs[i][t - 1]; double x2 = inputs[i][t]; if (x1 > 0 && x2 > 0) { lrs.Add(inputs[i].TimeStamp(t), Math.Log(x2) - Math.Log(x1), false); } else { failure = true; } } lrs.Title = inputs[i].Title; outputs.Add(lrs); } multivariateOutputPrefix = "LR"; IsValid = true; if (failure) { MessageBox.Show("One or more values was non-positive, corresponding log-returns were left out.", "Warning"); } }
public static TimeSeries <T> Hourly(Func <T> empty, T initialValue) { var ts = new TimeSeries <T>(60, empty); ts.Add(initialValue); return(ts); }
public TimeSeries Predict(SupportVectorMachine network, NormalizeArray norm, TimeSeries simulatedData) { double[] data = GenerateData(simulatedData); int data_count = simulatedData.Count; TimeSeries ts = new TimeSeries(); double input_val = 0; for (int idx = 0; idx < data_count; ++idx) { var input = new BasicMLData(WindowSize); for (var i = 0; i < WindowSize; i++) { int idx2 = (idx - WindowSize) + i; if (idx2 < 0) { input_val = 0; } else { input_val = norm.Stats.Normalize(data[idx2]); } input[i] = input_val; } IMLData output = network.Compute(input); double prediction = norm.Stats.DeNormalize(output[0]); ts.Add(simulatedData.TimeStamp(idx), prediction, false); } return(ts); }
public override object SimulateData(object inputs, int simSeed) { var times = inputs as List <DateTime>; if (times == null) { return(null); // inputs should be a list of DateTimes } int n = times.Count; var simulated = new TimeSeries(); var randomSource = new Palf(simSeed); var stdnormal = new Normal(); stdnormal.RandomSource = randomSource; double mVar = GetVariance(Parameters); Vector <double> ss = Vector <double> .Build.Dense(n); for (int i = 0; i < n; ++i) { double variance = GetConditionalSig2(i, simulated, ss, Parameters, mVar); double simLR = stdnormal.RandomSource.NextDouble() * Math.Sqrt(variance); simulated.Add(times[i], simLR, false); } simulated.Title = "Simulation"; simulated.Description = "Simulation from " + Description; return(simulated); }
public TimeSeries BuildForecasts(List <DateTime> x_values, List <double> y_values, int day_interval, int future_count) { TimeSeries simulatedData = new TimeSeries(); int used_data_count = x_values.Count; //Create the data for (int t = 0; t < used_data_count; ++t) { double s1 = y_values[t]; DateTime current = x_values[t]; simulatedData.Add(current, s1, false); } var nextTime = simulatedData.GetLastTime(); var futureTimes = new List <DateTime>(); for (int t = 0; t < future_count; ++t) // go eight days into the future beyond the end of the data we have { nextTime = nextTime.AddDays(day_interval); futureTimes.Add(nextTime); } return(BuildForecasts(simulatedData, futureTimes)); }
public List <double> BuildForecasts(List <double> data, int future_count) { TimeSeries simulatedData = new TimeSeries(); DateTime current = DateTime.UtcNow; //Create the data for (int t = 0; t < data.Count; ++t) { double s1 = data[t]; simulatedData.Add(current, s1, false); current = current.AddDays(1); } var nextTime = simulatedData.GetLastTime(); var futureTimes = new List <DateTime>(); for (int t = 0; t < future_count; ++t) // go eight days into the future beyond the end of the data we have { nextTime = nextTime.AddDays(1); futureTimes.Add(nextTime); } TimeSeries preds1 = BuildForecasts(simulatedData, futureTimes); List <double> preds2 = new List <double>(); for (int i = 0; i < future_count; ++i) { preds2.Add(preds1[i]); } return(preds2); }
public void TimeSeriesBasics() { TimeSeries series = new TimeSeries(); Assert.IsTrue(series.Count == 0); series.Add(3.0, 2.0, 1.0); Assert.IsTrue(series[0] == 3.0); Assert.IsTrue(series[1] == 2.0); Assert.IsTrue(series[2] == 1.0); Assert.IsTrue(series.Count == 3); Assert.IsFalse(series.Contains(0.0)); Assert.IsTrue(series.Contains(1.0)); Assert.IsTrue(series.IndexOf(0.0) == -1); Assert.IsTrue(series.IndexOf(1.0) == 2); Assert.IsTrue(TestUtilities.IsNearlyEqual(series.Mean, 2.0)); series[2] = 0.0; Assert.IsTrue(series.Count == 3); Assert.IsTrue(series.Contains(0.0)); Assert.IsFalse(series.Contains(1.0)); Assert.IsTrue(series.IndexOf(0.0) == 2); Assert.IsTrue(series.IndexOf(1.0) == -1); Assert.IsTrue(TestUtilities.IsNearlyEqual(series.Mean, 5.0 / 3.0)); series.Clear(); Assert.IsTrue(series.Count == 0); Assert.IsFalse(series.Contains(0.0)); Assert.IsTrue(series.IndexOf(0.0) == -1); }
protected override TimeSeries _BuildOutput(TimeSeries simulatedData, object userState = null) { if (mModel == null) { mModel = BuildModel(simulatedData, out mScaleFactor); } TimeSeries preds = new TimeSeries(); for (int i = 0; i < simulatedData.Count; ++i) { double[] input = new double[mWindowSize]; for (int j = 0; j < mWindowSize; ++j) { int index = i - (mWindowSize - j); if (index >= 0) { input[j] = simulatedData[index] / mScaleFactor; } } double[] output = new double[1]; mModel.Compute(input, output); preds.Add(simulatedData.TimeStamp(i), output[0] * mScaleFactor, false); } return(preds); }
public override void OnBar(Bar bar) { if (bar.DateTime.Day != day) { day = bar.DateTime.Day; ts.Add(bar.DateTime, bar.High + 1); } }
public override void OnBar(Bar bar) { DateTime time = Clock.Now; int dateTime = time.Hour * 10000 + time.Minute * 100 + time.Second; if (dateTime > closeTime) { ClosePosition("T|尾盘平仓"); return; } if (86400 == bar.Size) { return; } if (double.IsNaN(UpLine)) { return; } UpSeries.Add(bar.DateTime, UpLine); DownSeries.Add(bar.DateTime, DownLine); RangeSeries.Add(bar.DateTime, Range); if (Mode == StrategyMode.Simulation) { // 从模拟切换实盘时用 //return; } if (HasPosition) { if (Position.Amount < 0 && bar.Close > UpLine) { ClosePosition("T|反手"); Buy(Qty, "O|"); } if (Position.Amount > 0 && bar.Close < DownLine) { ClosePosition("T|反手"); Sell(Qty, "O|"); } } else { if (bar.Close > UpLine) { Buy(Qty, "O|"); } else if (bar.Close < DownLine) { Sell(Qty, "O|"); } } }
public void TestAdd() { object obj1 = new Object(); DateTime dt = new DateTime(2014, 1, 1, 8, 8, 8); ts.Add(dt, obj1); Assert.AreSame(obj1, ts[dt]); Assert.AreSame(obj1, ts[0]); }
public void TimeSeriesAutocovariance() { TimeSeries series1 = new TimeSeries(); series1.Add(0.0, -1.0, 2.0, -3.0); double[] acv1 = series1.Autocovariance(); TestAutocovariance(acv1); }
public static void Load(this TimeSeries s, Stream stream) { using (var reader = new BinaryReader(stream)) { while (reader.PeekChar() != -1) { s.Add(new DateTime(reader.ReadInt64()), reader.ReadDouble()); } } }
//public override Icon GetIcon() //{ // return null; //} private TimeSeries ApplyFilterTo(TimeSeries ts) { var retval = new TimeSeries(); int maOrder = maCoeffs.Length; int arOrder = arCoeffs.Length; double arSum = 0; for (int i = 1; i < arOrder; ++i) { arSum += arCoeffs[i]; } double maSum = 0; for (int i = 0; i < maOrder; ++i) { maSum += maCoeffs[i]; } // now go through and apply filter for (int t = 0; t < ts.Count; ++t) { double tx = 0.0; if (TimeInterval.Ticks == 0) // apply the filter to successive data points { // get MA part for (int i = 0; i < maOrder; ++i) { tx += t >= i ? maCoeffs[i] * ts[t - i] : ts[0]; } // get AR part for (int i = 1; i < arOrder; ++i) { tx += t >= i ? arCoeffs[i] * retval[t - i] : ts[0]; } tx /= (arSum + maSum); } else // apply the filter to data points at specified sampling interval { // get MA part for (int i = 0; i < maOrder; ++i) { tx += maCoeffs[i] * ts.ValueAtTime(ts.TimeStamp(t) - new TimeSpan(i * TimeInterval.Ticks)); } // get AR part for (int i = 1; i < arOrder; ++i) { tx += arCoeffs[i] * retval.ValueAtTime(ts.TimeStamp(t) - new TimeSpan(i * TimeInterval.Ticks)); } tx /= (arSum + maSum); } retval.Add(ts.TimeStamp(t), tx, false); } return(retval); }
public void addFixings(List<Date> d, List<double> v, bool forceOverwrite) { if ((d.Count != v.Count) || d.Count == 0) throw new ArgumentException("Wrong collection dimensions when creating index fixings"); TimeSeries<double> t = new TimeSeries<double>(); for(int i=0; i<d.Count; i++) t.Add(d[i], v[i]); addFixings(t, forceOverwrite); }
void UpdateAtBar_RBreaker(Bar bar) { ssetup.Add(bar.DateTime, _ssetup); bsetup.Add(bar.DateTime, _bsetup); senter.Add(bar.DateTime, _senter); benter.Add(bar.DateTime, _benter); bbreak.Add(bar.DateTime, _bbreak); sbreak.Add(bar.DateTime, _sbreak); }
public override void OnBar(Bar bar) { // 这个地方是关键 lengths.Add(bar.DateTime, 5); // 别的就自己写吧 }
public static double Value(ISeries input, int index, int length1, int length2) { if (index >= length1 - 1 && index >= length2 - 1) { var ts = new TimeSeries(); for (var i = index - Math.Max(length1, length2) + 1; i <= index; i++) ts.Add(input.GetDateTime(i), input[i, BarData.Volume]); return SMA.Value(ts, length1 - 1, length1) - SMA.Value(ts, length2 - 1, length2); } return double.NaN; }
public EstimationResult Estimate(IEnumerable<IDateValue> dateValues) { var series = new TimeSeries(); dateValues.ForEach(x => series.Add(x.Date, x.Value, true)); armaModel.SetInput(0, series, null); armaModel.FitByMLE(200, 100, 0, null); armaModel.ComputeResidualsAndOutputs(); var result = armaModel.GetOutput(3) as TimeSeries; return EstimationResult.Create(result[0], this); }
public static double Value(ISeries input, int index, int length1, int length2) { if (index >= length2 - 1) { var ts = new TimeSeries(); for (var i = 0; i <= index; i++) ts.Add(input.GetDateTime(i), input[i, BarData.High] - input[i, BarData.Low]); var ema = new EMA(ts, length1); return (ema[index] - ema[index - length2 + 1])/ema[index - length2 + 1]*100; } return double.NaN; }
public static double Value(ISeries input, int index, int length, int order) { if (index >= length - 1) { var ts = new TimeSeries(); for (int i = 0; i <= index; i++) ts.Add(input.GetDateTime(i), input[i, BarData.High] - input[i, BarData.Low]); var ema = new EMA(ts, order); var ema_ema = new EMA(ema, order); return Enumerable.Range(index - length + 1, length).Reverse().Sum(i => ema[i]/ema_ema[i]); } return double.NaN; }
public static double Value(ISeries input, int index, int length1, int length2) { if (index >= length1 - 1 && index >= length2 - 1) { TimeSeries timeSeries = new TimeSeries(); for (int i = index - Math.Max(length1, length2) + 1; i <= index; i++) { timeSeries.Add(input.GetDateTime(i), input[i, BarData.Volume]); } double num = SMA.Value(timeSeries, length1 - 1, length1, BarData.Close); double num2 = SMA.Value(timeSeries, length2 - 1, length2, BarData.Close); return num - num2; } return double.NaN; }
public void TestWMA() { long ticks = 1000; var data = new double[] { 20, 40, 22, 35, 33, 78, 21, 45, 33, 5, 67, 22, 98, 22, 34, 54 }; var input = new TimeSeries(); var wma = new WMA(input, 10); foreach (var d in data) input.Add(new DateTime().AddTicks(ticks++), d); Assert.Equal(wma[0], 32.6, precision); Assert.Equal(wma[1], 38.7454545454545, precision); Assert.Equal(wma[2], 35.8545454545455, precision); Assert.Equal(wma[3], 47.1090909090909, precision); Assert.Equal(wma[4], 43.1636363636364, precision); Assert.Equal(wma[5], 41.6363636363636, precision); Assert.Equal(wma[6], 43.7272727272727, precision); }
public static double Value(ISeries input, int index, int length, BarData barData = BarData.Close) { if (index >= 1) { TimeSeries timeSeries = new TimeSeries(); for (int i = 0; i <= index; i++) { timeSeries.Add(input.GetDateTime(i), input[i, barData]); } EMA input2 = new EMA(timeSeries, length, barData); EMA input3 = new EMA(input2, length, barData); EMA eMA = new EMA(input3, length, barData); return (eMA[index] - eMA[index - 1]) / eMA[index - 1] * 100.0; } return double.NaN; }
public TimeSeries<string> historyCurveSeriesMRO(DateTime sDate, DateTime eDate) { TimeSeries<string> hist = new TimeSeries<string>(); IRCurveMarketDataLoader irCurveLoader = IRCurveMarketDataLoader.CreateMarketDataLoader("MRO"); ObservableCollection<Excel_irCurveDataViewModel> e_ircdvmList = new ObservableCollection<Excel_irCurveDataViewModel>(); irCurveLoader.loadInterval(sDate, eDate, this.LinkedCurveCode_, e_ircdvmList); //TD_MRSTOCKFACTOR_Table_DAOManager dao_m = new TD_MRSTOCKFACTOR_Table_DAOManager(); //dao_m.STOCK_ID_ = this.Code_; //dao_m.selectInterval(DataBaseConnectManager.ConnectionFactory("MRO"), sDate, eDate); int tenorIndex = e_ircdvmList[0].getTenorIndex(this.Tenor_); if (tenorIndex != -1) { foreach (var item in e_ircdvmList) { string value = item.Excel_rateDataViewModelList_[tenorIndex].Value_; hist.Add(new Date(item.ReferenceDate_), value); } } return hist; }
public TimeSeries<string> historySeries(DateTime sDate, DateTime eDate ) { TimeSeries<string> hist = new TimeSeries<string>(); INDEX_DATA_Table_DAOManager dao_m = new INDEX_DATA_Table_DAOManager(); dao_m.INDEX_CODE_ = this.Code_; dao_m.selectInterval(DataBaseConnectManager.ConnectionFactory("myDB"),sDate,eDate); foreach (var item in dao_m.DAOList_) { string date = item.INDEX_DATE_; int year = Convert.ToInt32(date.Substring(0, 4)); int month = Convert.ToInt32(date.Substring(4, 2)); int day = Convert.ToInt32(date.Substring(6, 2)); string value = item.INDEX_VALUE_; hist.Add(new Date(new DateTime(year,month, day)), value); } return hist; }
public TimeSeries<string> historySeriesMRO(DateTime sDate, DateTime eDate) { TimeSeries<string> hist = new TimeSeries<string>(); TD_MRSTOCKFACTOR_Table_DAOManager dao_m = new TD_MRSTOCKFACTOR_Table_DAOManager(); dao_m.STOCK_ID_ = this.Code_; dao_m.selectInterval(DataBaseConnectManager.ConnectionFactory("MRO"), sDate, eDate); foreach (var item in dao_m.DAOList_) { string date = item.STD_DATE_; int year = Convert.ToInt32(date.Substring(0, 4)); int month = Convert.ToInt32(date.Substring(4, 2)); int day = Convert.ToInt32(date.Substring(6, 2)); string value = item.CURR_PRICE_; hist.Add(new Date(new DateTime(year, month, day)), value); } return hist; }
public static double Value(ISeries input, int index, int length1, int length2) { if (index >= length2 - 1) { TimeSeries timeSeries = new TimeSeries(); for (int i = 0; i <= index; i++) { timeSeries.Add(input.GetDateTime(i), input[i, BarData.High] - input[i, BarData.Low]); } EMA eMA = new EMA(timeSeries, length1, BarData.Close); return (eMA[index] - eMA[index - length2 + 1]) / eMA[index - length2 + 1] * 100.0; } return double.NaN; }
public static double Value(ISeries input, int index, int length, int order) { if (index >= length - 1) { TimeSeries timeSeries = new TimeSeries(); for (int i = 0; i <= index; i++) { timeSeries.Add(input.GetDateTime(i), input[i, BarData.High] - input[i, BarData.Low]); } EMA eMA = new EMA(timeSeries, order, BarData.Close); EMA eMA2 = new EMA(eMA, order, BarData.Close); double num = 0.0; for (int j = index; j > index - length; j--) { num += eMA[j] / eMA2[j]; } return num; } return double.NaN; }