protected override void OnStateChange() { base.OnStateChange(); if (State == State.SetDefaults) { Description = "Double Pair ES, NQ, and RTY, hedged max spread pair with min spread pair"; Name = "StgSQRSpd"; // This strategy has been designed to take advantage of performance gains in Strategy Analyzer optimizations // See the Help Guide for additional information Calculate = Calculate.OnBarClose; //IsFillLimitOnTouch = false; TraceOrders = false; BarsRequiredToTrade = 128; IsUnmanaged = false; OrderFillResolution = OrderFillResolution.Standard; EntriesPerDirection = 4; DefaultQuantity = 100; StopTargetHandling = StopTargetHandling.PerEntryExecution; RocPeriod = 10; RocScale = 10000; NumStdDevUp = 1.6; NumStdDevDown = 2.6; PTStdDev = 0.5; SLStdDev = 0.5; PTRatio = 0.2; SLRatio = 0.1; ChartMinutes = 8; MM_ProfitFactorMax = 1; MM_ProfitFactorMin = 0; TG_TradeStartH = 11; TG_TradeStartM = 15; TG_TradeEndH = 12; TG_TradeEndM = 45; SpySymbol = "SPY"; 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"; TradeBaseSymbol = 4; BarsToHoldPos = 16; BasePriceType = 0; Slippage = 0.02; PrintOut = 0; //IsInstantiatedOnEachOptimizationIteration = false; } else if (State == State.Configure) { 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); SetOrderQuantity = SetOrderQuantity.Strategy; // calculate orders based off default size // Sets a 20 tick trailing stop for an open position //SetTrailStop(CalculationMode.Ticks, 200); } else if (State == State.DataLoaded) { // giPctSpd = GIPctSpd(8); // giChartTrader = GIChartTrader(this.Input); giSQRSpd = GISQRSpd(RocPeriod, ChartMinutes, SpySymbol, QQQSymbol, IWMSymbol, SpyLnSymbol, SpyLnSymbolRatio, SpyStSymbol, SpyStSymbolRatio, QQQLnSymbol, QQQLnSymbolRatio, QQQStSymbol, QQQStSymbolRatio, IWMLnSymbol, IWMLnSymbolRatio, IWMStSymbol, IWMStSymbolRatio, TradeBaseSymbol, RocScale, NumStdDevUp, NumStdDevDown, PTStdDev, SLStdDev, BasePriceType); // Add RSI and ADX indicators to the chart for display // This only displays the indicators for the primary Bars object (main instrument) on the chart AddChartIndicator(giSQRSpd); giSQRSpd.TM_OpenStartH = TG_TradeStartH; giSQRSpd.TM_OpenStartM = TG_TradeStartM; giSQRSpd.TM_OpenEndH = TG_TradeEndH; giSQRSpd.TM_OpenEndM = TG_TradeEndM; giSQRSpd.RaiseIndicatorEvent += OnTradeBySQRSpd; // giPctSpd.RaiseIndicatorEvent += OnTradeBySQRSpd; // giPctSpd.TM_ClosingH = TG_TradeEndH; // giPctSpd.TM_ClosingM = TG_TradeEndM; // giChartTrader.RaiseIndicatorEvent += OnTradeByChartTrader; SetPrintOut(0); Print(String.Format("{0}: IsUnmanaged={1}, PrintOut={2}", this.GetType().Name, IsUnmanaged, PrintOut)); Print(String.Format("{0}: DataLoaded...BarsArray.Length={1}", this.GetType().Name, BarsArray.Length)); //this.Dispatcher.Invoke(() => // this.Dispatcher.BeginInvoke(new ThreadStart(() => // { // //be.Show(); // })); } }