private void SetOpenPrice() { if (BarsArray[BarsInProgress].IsFirstBarOfSession) { // CoVarHiLoSpreadMax = double.MinValue; // CoVarHiLoSpreadMin = double.MaxValue; if (BarsInProgress == BipIWM) { this.listRocHiLoMaxMin.Add(CoVarHiLoSpdMaxMin); CoVarHiLoSpdMaxMin = new DailyMaxMin(); } switch (BarsInProgress) { case BipSpy: // OpenSpy = Opens[BarsInProgress][0]; break; case BipQQQ: // OpenQQQ = Opens[BarsInProgress][0]; break; case BipIWM: // OpenIWM = Opens[BarsInProgress][0]; break; case BipSpyLn: // OpenLnSpy = Opens[BarsInProgress][0]; break; case BipSpySt: // OpenStSpy = Opens[BarsInProgress][0]; break; case BipQQQLn: // OpenLnQQQ = Opens[BarsInProgress][0]; break; case BipQQQSt: // OpenStQQQ = Opens[BarsInProgress][0]; break; case BipIWMLn: // OpenLnIWM = Opens[BarsInProgress][0]; break; case BipIWMSt: // OpenStIWM = Opens[BarsInProgress][0]; break; default: break; } } }
private void SetBasePrice() { if (BarsArray[BarsInProgress].IsFirstBarOfSession) { // RocHiLoSpreadMax = double.MinValue; // RocHiLoSpreadMin = double.MaxValue; if (BarsInProgress == BipIWM) { this.listRocHiLoMaxMin.Add(RocHiLoSpdMaxMin); RocHiLoSpdMaxMin = new DailyMaxMin(); } switch (BarsInProgress) { case BipSpy: BaseSpy = BasePriceType == 1? Opens[BarsInProgress][0] : SmaSpy[0]; break; case BipQQQ: BaseQQQ = BasePriceType == 1? Opens[BarsInProgress][0] : SmaQQQ[0]; break; case BipIWM: BaseIWM = BasePriceType == 1? Opens[BarsInProgress][0] : SmaIWM[0]; break; case BipSpyLn: //Can only use open for quantity calculation, so en=ex for quantity; BaseLnSpy = Opens[BarsInProgress][0]; break; case BipSpySt: BaseStSpy = Opens[BarsInProgress][0]; break; case BipQQQLn: BaseLnQQQ = Opens[BarsInProgress][0]; break; case BipQQQSt: BaseStQQQ = Opens[BarsInProgress][0]; break; case BipIWMLn: BaseLnIWM = Opens[BarsInProgress][0]; break; case BipIWMSt: BaseStIWM = Opens[BarsInProgress][0]; break; default: break; } } }
protected override void OnStateChange() { if (State == State.SetDefaults) { Description = @"SPY, QQQ and IWM Pair scalper using CV as price"; Name = "GISQRCVSpd"; Calculate = Calculate.OnPriceChange; IsOverlay = false; DisplayInDataBox = true; DrawOnPricePanel = false; DrawHorizontalGridLines = true; DrawVerticalGridLines = false; PaintPriceMarkers = true; ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right; //Disable this property if your indicator requires custom values that cumulate with each new market data event. //See Help Guide for additional information. IsSuspendedWhileInactive = true; CoVarPeriod = 5; CoVarScale = 10000; // CoVarHighBip = -1; // CoVarMidBip = -1; // CoVarLowBip = -1; NumStdDevUp = 1.6; NumStdDevDown = 2.6; NumStdDevUpMin = 0.5; NumStdDevDownMin = 0.5; ChartMinutes = 4; TM_OpenStartH = 11; TM_OpenStartM = 15; TM_OpenEndH = 12; TM_OpenEndM = 45; TM_ClosingH = 13; TM_ClosingM = 15; //PctChgMaxBip = -1; //PctChgMinBip = -1; BarsRequiredToPlot = 128; MaximumBarsLookBack = MaximumBarsLookBack.Infinite; QQQSymbol = "QQQ"; IWMSymbol = "IWM"; SpyLnSymbol = "SPXL"; SpyStSymbol = "SH"; QQQLnSymbol = "QLD"; QQQStSymbol = "SQQQ"; IWMLnSymbol = "TNA"; IWMStSymbol = "TZA"; SpyLnSymbolRatio = 3; //"SPXL"; SpyStSymbolRatio = 1; //"SH"; QQQLnSymbolRatio = 2; //"QLD"; QQQStSymbolRatio = 3; //"SQQQ"; IWMLnSymbolRatio = 3; //"TNA"; IWMStSymbolRatio = 3; //"TZA"; AddPlot(new Stroke(Brushes.Black), PlotStyle.Dot, "SPY"); AddPlot(new Stroke(Brushes.Orange), PlotStyle.Dot, "QQQ"); AddPlot(new Stroke(Brushes.LightSkyBlue), PlotStyle.Dot, "IWM"); AddPlot(new Stroke(Brushes.Magenta), PlotStyle.Dot, "MxMiSpread"); AddPlot(Brushes.Gray, "Mean"); AddPlot(Brushes.Red, "UpperBB"); AddPlot(Brushes.Green, "LowerBB"); //AddLine(Brushes.Blue, 0, "IWM"); } else if (State == State.Configure) { //AddDataSeries("NQ 06-20", Data.BarsPeriodType.Minute, 13, Data.MarketDataType.Last); //AddDataSeries("RTY 06-20", Data.BarsPeriodType.Minute, 13, Data.MarketDataType.Last); //AddDataSeries("NRGU", Data.BarsPeriodType.Minute, 1, Data.MarketDataType.Last); AddDataSeries(QQQSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(IWMSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(SpyLnSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(SpyStSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(QQQLnSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(QQQStSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(IWMLnSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); AddDataSeries(IWMStSymbol, Data.BarsPeriodType.Minute, ChartMinutes, Data.MarketDataType.Last); CoVarHighBip = new Series <int>(this); CoVarMidBip = new Series <int>(this); CoVarLowBip = new Series <int>(this); //bol = Bollinger(CoVarHiLoSpread, 1.6, CoVarPeriod); } else if (State == State.DataLoaded) { // RocChg = new Series<double>(this); Print(String.Format("{0}: DataLoaded...BarsArray.Length={1}", this.GetType().Name, BarsArray.Length)); SmaSpy = SMA(BarsArray[BipSpy], CoVarPeriod); StdDevSpy = StdDev(BarsArray[BipSpy], CoVarPeriod); //CoVarSpy = StdDevSpy/SmaSpy; SmaQQQ = SMA(BarsArray[BipQQQ], CoVarPeriod); StdDevQQQ = StdDev(BarsArray[BipQQQ], CoVarPeriod); SmaIWM = SMA(BarsArray[BipIWM], CoVarPeriod); StdDevIWM = StdDev(BarsArray[BipIWM], CoVarPeriod); sma = SMA(CoVarHiLoSpread, CoVarPeriod); stdDev = StdDev(CoVarHiLoSpread, CoVarPeriod); CoVarHiLoSpdMaxMin = new DailyMaxMin(); listRocHiLoMaxMin = new List <DailyMaxMin>(); DailyCoVarHiLoMidCross = new DailyCross <int>(); // CoVarHiLoSpreadMax = double.MinValue; // CoVarHiLoSpreadMin = double.MaxValue; // smaClose1 = SMA(Closes[0], 5); // smaClose2 = SMA(Closes[1], 5); // smaPctChgRatio = SMA(RocChg, 50); //stdDev = StdDev(PlotPctSpd, 7); //AddChartIndicator(stdDev); } }