/// <summary> /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized. /// </summary> public override void Initialize() { // initialize algorithm level parameters SetStartDate(2013, 10, 07); SetEndDate(2013, 10, 11); //SetStartDate(2014, 01, 01); //SetEndDate(2014, 06, 01); SetCash(100000); // leverage tradier $1 traders SetBrokerageModel(BrokerageName.TradierBrokerage); // request high resolution equity data AddSecurity(SecurityType.Equity, symbol, Resolution.Second); // save off our security so we can reference it quickly later Security = Securities[symbol]; // Set our max leverage Security.SetLeverage(MaximumLeverage); // define our longer term indicators ADX14 = ADX(symbol, 28, Resolution.Hour); STD14 = STD(symbol, 14, Resolution.Daily); ATR14 = ATR(symbol, 14, resolution: Resolution.Daily); PSARMin = new ParabolicStopAndReverse(symbol, afStart: 0.0001m, afIncrement: 0.0001m); // smooth our ATR over a week, we'll use this to determine if recent volatilty warrants entrance var oneWeekInMarketHours = (int)(5 * 6.5); SmoothedATR14 = new ExponentialMovingAverage("Smoothed_" + ATR14.Name, oneWeekInMarketHours).Of(ATR14); // smooth our STD over a week as well SmoothedSTD14 = new ExponentialMovingAverage("Smoothed_" + STD14.Name, oneWeekInMarketHours).Of(STD14); // initialize our charts var chart = new Chart(symbol); chart.AddSeries(new Series(ADX14.Name, SeriesType.Line, 0)); chart.AddSeries(new Series("Enter", SeriesType.Scatter, 0)); chart.AddSeries(new Series("Exit", SeriesType.Scatter, 0)); chart.AddSeries(new Series(PSARMin.Name, SeriesType.Scatter, 0)); AddChart(chart); var history = History(symbol, 20, Resolution.Daily); foreach (var bar in history) { ADX14.Update(bar); ATR14.Update(bar); STD14.Update(bar.EndTime, bar.Close); } // schedule an event to run every day at five minutes after our symbol's market open Schedule.Event("MarketOpenSpan") .EveryDay(symbol) .AfterMarketOpen(symbol, minutesAfterOpen: OpeningSpanInMinutes) .Run(MarketOpeningSpanHandler); Schedule.Event("MarketOpen") .EveryDay(symbol) .AfterMarketOpen(symbol, minutesAfterOpen: -1) .Run(() => PSARMin.Reset()); }