Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
using System.Drawing; // for Color

namespace QuantConnect 
{ 
    public class ExampleStochasticChartingAlgorithm : QCAlgorithm
    {
        TradeBars prices = new TradeBars();
        
        Stochastic sto;
        
        String _symbol = "XIV";
        String _plotter = "Stochastic";
        
        int overBought = 20;
        int overSold = 80;
        
        private DateTime _currentTime;
        private DateTime _LastSampleTime;
        
        
        public override void Initialize()
        {
            SetStartDate(2016, 8, 25);
            SetEndDate(2017, 1, 19);
            
            int KPeriod = 14;
            int DPeriod = 5;

            AddSecurity(SecurityType.Equity, _symbol, Resolution.Daily); 
            
            //https://github.com/QuantConnect/Lean/blob/master/Algorithm/QCAlgorithm.Indicators.cs#L530
            sto = STO(_symbol,14,KPeriod,DPeriod,Resolution.Daily);
            
            //Warmup Time
            SetWarmUp(TimeSpan.FromDays(15));

            
            //Charting in https://github.com/QuantConnect/Lean/blob/master/Common/Charting.cs
            Chart plotter = new Chart(_plotter);
            plotter.AddSeries(new Series("D", SeriesType.Line, " ",Color.Red));
            plotter.AddSeries(new Series("K", SeriesType.Line, " ",Color.Blue));
            plotter.AddSeries(new Series("Over Bought", SeriesType.Line, " ",Color.Black));
            //plotter.AddSeries(new Series("Over Sold", SeriesType.Line, " ",Color.Black));
            AddChart(plotter);
            
            Schedule.On(DateRules.EveryDay(), TimeRules.Every(TimeSpan.FromMinutes(10)), () =>
            {
                Log("STO Values: " + sto.StochD + ", " + sto.StochK);
            }); 
        }
        
        //Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
        public void OnData(TradeBars data) 
        {   
        // Access current tradebar data.
        	TradeBar dataBar = data[_symbol];
			_currentTime = dataBar.Time;
        	
        // If warming up...
            if (IsWarmingUp)
            {

        // Feed the stochastic even on warming up.
			if (_LastSampleTime.Minute != dataBar.Time.Minute)
			{
				Log("WARMUP - Stochastic.Update(): Fired at: " + dataBar.Time);
	           	sto.Update(dataBar);
			}

			// Update Sample TimeStamp			
				_LastSampleTime = dataBar.Time;
			
			// Return until algorithm is ready to execute.
				return;
			}
        	if (sto.IsReady)
        	{
        		Plot(_plotter,"D", sto.StochD);
        		Plot(_plotter,"K", sto.StochK);
        		Plot(_plotter,"Over Bought", overBought);
        		Plot(_plotter,"Over Sold", overSold);
        		Plot(_plotter,"XIV Price", dataBar.Price);
        	}

        }

        
        public override void OnEndOfDay() 
        {
        }
    }
    
}