public void Start(string simcontext) { SIMCONTEXT = simcontext; var Prices = GlobalObjects.Points; //for (int rsi = 4; rsi < 30; rsi++) // for (int fastK = 3; fastK < 30; fastK++) // for (int slowK = 3; slowK < 30; slowK++) // for (int slowD = 3; slowD < 30; slowD++) // { var dc = new AlsiSimDataContext(simcontext); var m = dc.tblSequences.Where(x => !x.Started).Count(); var _skip = Utils.RandomNumber(0, m - 1); var _sequence = dc.tblSequences.Where(x => !x.Started).Skip(_skip).First(); var par = _sequence.Sequence.Split(','); //Might cuase duplicates, but chances are slim // _sequence.Started = true; // dc.SubmitChanges(); _Seq = new Seq(_sequence.Sequence); var rsi = _Seq.RSI; var fastK = _Seq.Fast_K; var slowK = _Seq.Slow_K; var slowD = _Seq.Slow_D; //START LOOOP ClearDictionaries(); var RSI = AlsiUtils.Factory_Indicator.createRSI(rsi, Prices); var SS = AlsiUtils.Factory_Indicator.createSlowStochastic(fastK, slowK, slowD, Prices); //CREATE DICTIONARY RSI_DIC = RSI.ToDictionary(x => x.TimeStamp, x => Math.Round(x.RSI, 3)); SS_DIC = SS.ToDictionary(x => x.TimeStamp, x => Math.Round(x.D, 3)); //POPULATE foreach (var p in Prices) { RSI_SS_Price rsp = new RSI_SS_Price() { ClosePrice = p.Close, Volume = p.Volume, Stamp = p.TimeStamp, RSI = 0, SS = 0, }; double r, s; RSI_DIC.TryGetValue(p.TimeStamp, out r); SS_DIC.TryGetValue(p.TimeStamp, out s); if (r != 0 && s != 0) { rsp.RSI = r; rsp.SS = s; RSICC.Add(rsp); } } //RUN CALCS int lookback = Utils.RandomNumber(5, 15); _Seq.Lookback = lookback; SetTriggers_A(lookback); var profit = AddTradeslayer(); Console.WriteLine("{0} {1} {2} {3} {4} LB:{5} H:{6} L:{7}", profit, rsi, fastK, slowK, slowD, _Seq.Lookback, _Seq.Upper, _Seq.Lower); WriteResults(); // WriteResultsToDatabase(dc,_sequence, profit); // Done(this, new EventArgs()); //END LOOP //} }
public void Start(string simcontext) { SIMCONTEXT = simcontext; var Prices = GlobalObjects.Points; //for (int rsi = 4; rsi < 30; rsi++) // for (int fastK = 3; fastK < 30; fastK++) // for (int slowK = 3; slowK < 30; slowK++) // for (int slowD = 3; slowD < 30; slowD++) // { var dc = new AlsiSimDataContext(simcontext); var m = dc.tblSequences.Where(x => !x.Started).Count(); var _skip = Utils.RandomNumber(0, m - 1); var _sequence = dc.tblSequences.Where(x => !x.Started).Skip(_skip).First(); var par = _sequence.Sequence.Split(','); //Might cuase duplicates, but chances are slim // _sequence.Started = true; // dc.SubmitChanges(); _Seq = new Seq(_sequence.Sequence); var rsi = _Seq.RSI; var fastK = _Seq.Fast_K; var slowK = _Seq.Slow_K; var slowD = _Seq.Slow_D; //START LOOOP ClearDictionaries(); var RSI = AlsiUtils.Factory_Indicator.createRSI(rsi, Prices); var SS = AlsiUtils.Factory_Indicator.createSlowStochastic(fastK, slowK, slowD, Prices); //CREATE DICTIONARY RSI_DIC = RSI.ToDictionary(x => x.TimeStamp, x => Math.Round(x.RSI, 3)); SS_DIC = SS.ToDictionary(x => x.TimeStamp, x => Math.Round(x.D , 3)); //POPULATE foreach (var p in Prices) { RSI_SS_Price rsp = new RSI_SS_Price() { ClosePrice = p.Close, Volume = p.Volume, Stamp = p.TimeStamp, RSI = 0, SS = 0, }; double r, s; RSI_DIC.TryGetValue(p.TimeStamp, out r); SS_DIC.TryGetValue(p.TimeStamp, out s); if (r != 0 && s != 0) { rsp.RSI = r; rsp.SS = s; RSICC.Add(rsp); } } //RUN CALCS int lookback = Utils.RandomNumber(5, 15); _Seq.Lookback = lookback; SetTriggers_A(lookback); var profit = AddTradeslayer(); Console.WriteLine("{0} {1} {2} {3} {4} LB:{5} H:{6} L:{7}", profit, rsi, fastK, slowK, slowD,_Seq.Lookback,_Seq.Upper,_Seq.Lower ); WriteResults(); // WriteResultsToDatabase(dc,_sequence, profit); // Done(this, new EventArgs()); //END LOOP //} }