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
namespace QuantConnect.Algorithm.CSharp
{
    /// <summary>
    /// This example demonstrates how to add options for a given underlying equity security.
    /// It also shows how you can prefilter contracts easily based on strikes and expirations, and how you
    /// can inspect the option chain to pick a specific option contract to trade.
    /// </summary>
    /// <meta name="tag" content="using data" />
    /// <meta name="tag" content="options" />
    /// <meta name="tag" content="filter selection" />
    public class MyBasicTemplateAlgorithm : QCAlgorithm
    {
        private DateTime StartDay = new DateTime(2017, 6, 29);
        private DateTime EndDay = new DateTime(2017, 7, 29);
        private const string EquityTicker = "GOOG";
        public Security _equity;
        public readonly Symbol _equitySymbol = QuantConnect.Symbol.Create(EquityTicker, SecurityType.Equity, Market.USA);
        private NodaTime.DateTimeZone _equityTZ;
        private TradeBarConsolidator _equityDayConsolidator = new TradeBarConsolidator(TimeSpan.FromDays(1));
        private Chart _equityChart;

        public override void Initialize()
        {
            SetStartDate(StartDay);
            SetEndDate(EndDay);
            SetCash(100000);

            //------ Underlying Equity
            _equity = AddEquity(_equitySymbol.Value, Resolution.Minute); //match options
            _equity.SetDataNormalizationMode(DataNormalizationMode.Raw);

            _equityTZ = _equity.Exchange.TimeZone;

            SubscriptionManager.AddConsolidator(_equity.Symbol, _equityDayConsolidator);

            // chart underlying equity
            _equityChart = new Chart(EquityTicker);
            _equityChart.AddSeries(new Series("Candle", SeriesType.Candle));
            AddChart(_equityChart);

            // Final end of day processing
            Schedule.On(DateRules.EveryDay(_equitySymbol), TimeRules.BeforeMarketClose(_equitySymbol, 0), onFinalMarketClose);
        }

        private void onFinalMarketClose(String name, DateTime utcTime) {
            var t = utcTime.ConvertFromUtc(_equityTZ);
            t += TimeSpan.FromSeconds((double)t.DayOfWeek); //work around bug in QC charting
            var equityBar = _equityDayConsolidator.WorkingData as TradeBar;
            
            // Candle
            _equityChart.Series["Candle"].AddPoint(t + TimeSpan.FromMinutes(1), equityBar.Open);
            _equityChart.Series["Candle"].AddPoint(t + TimeSpan.FromMinutes(2), equityBar.High);
            _equityChart.Series["Candle"].AddPoint(t + TimeSpan.FromMinutes(3), equityBar.Low);
            _equityChart.Series["Candle"].AddPoint(t + TimeSpan.FromMinutes(4), equityBar.Close);
        }
    }
}