public override void Initialize() { SetStartDate(2016, 01, 01); SetEndDate(DateTime.Now); SetCash(10000); AddForex(symbol, Resolution.Minute); _alma = new ArnaudLegouxMovingAverage(50); _psar = new ParabolicStopAndReverse(); var fiveConsolidator = new QuoteBarConsolidator(TimeSpan.FromMinutes(5)); SubscriptionManager.AddConsolidator(symbol, fiveConsolidator); RegisterIndicator(symbol, _alma, fiveConsolidator); RegisterIndicator(symbol, _psar, fiveConsolidator); fiveConsolidator.DataConsolidated += OnFiveMinutes; var history = History(System.TimeSpan.FromMinutes(5 * 50), Resolution.Minute); foreach (var data in history.OrderBy(x => x.Time)) { foreach (var key in data.Keys) { //_alma.Update(key.Time, key.Value); } } }
public IList <BaseIndicatorValue> ComputeParabolicSAR(IList <Candle> candles) { var indicator = new ParabolicStopAndReverse(candles.Select(candle => candle.ToInnerModel())); var innerValues = indicator.Compute(); var outputValues = new List <BaseIndicatorValue>(); outputValues.AddRange(innerValues .Where(value => value.DateTime.HasValue) .Select(value => value.ToOuterModel())); return(outputValues); }
public void ComparesWithExternalData() { var psar = new ParabolicStopAndReverse(); TestHelper.TestIndicator(psar, "spy_parabolic_SAR.txt", "Parabolic SAR 0.02 0.20"); }
/// <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()); }
public void ResetsProperly() { var psar = new ParabolicStopAndReverse(); TestHelper.TestIndicatorReset(psar, "spy_parabolic_SAR.txt"); }