Ejemplo n.º 1
0
        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
            //}
        }