예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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");
        }