Ejemplo n.º 1
0
//		public StgPairSimple () {
//			VendorLicense("TheTradingBook", "StgPairSimple", "thetradingbook.com", "*****@*****.**",null);
//		}

        protected override void OnStateChange()
        {
            base.OnStateChange();
            if (State == State.SetDefaults)
            {
                Description = "Pair Trading by Spread Ladders";
                Name        = "StgATR3";
                //Account.Name								= "Sim102";
                SlippageRate                 = 0.04;                                                            //percent of the price/100
                Calculate                    = Calculate.OnPriceChange;
                IsFillLimitOnTouch           = false;
                TraceOrders                  = false;
                BarsRequiredToTrade          = 12;
                IsUnmanaged                  = false;
                IncludeCommission            = true;
                OrderFillResolution          = OrderFillResolution.Standard;
                EntriesPerDirection          = 1;
                EntryHandling                = EntryHandling.AllEntries;
                DefaultQuantity              = 100;
                StopTargetHandling           = StopTargetHandling.PerEntryExecution;
                IsExitOnSessionCloseStrategy = false;
                //ExitOnSessionCloseSeconds					= 30;
//				MM_ProfitFactorMax							= 1;
//				MM_ProfitFactorMin							= 0;
//				TG_TradeEndH								= 10;
//				TG_TradeEndM								= 45;
                TG_OpenStartH        = 8;
                TG_OpenStartM        = 30;
                PeriodNear           = 10;
                PeriodMiddle         = 30;
                PeriodFar            = 90;
                MktPosition1         = MarketPosition.Flat;
                MktPosition2         = MarketPosition.Flat;
                SPKLineThresholdLow  = 3;
                SPKLineThresholdMid  = 50;
                SPKLineThresholdHigh = 96;
                TradeCostRate        = 0.3;
                DaysToHoldPos        = 9;
                PrintOut             = 1;
//				IsInstantiatedOnEachOptimizationIteration = false;
            }
            else if (State == State.Configure)
            {
                // Add an MSFT 1 minute Bars object to the strategy
                //AddDataSeries("NQ 06-20", Data.BarsPeriodType.Minute, 13);
                if (ChartMinutes > 0)
                {
                    AddDataSeries(SecondSymbol, BarsPeriodType.Minute, ChartMinutes, MarketDataType.Last);
                }
                else
                {
                    AddDataSeries(SecondSymbol, BarsPeriodType.Day, 1, MarketDataType.Last);
                }
                //AddDataSeries(SecondSymbol, BarsPeriodType.Minute, ChartMinutes);
                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)
            {
                giSpdLadder = GISpdLadder(SecondSymbol, ChartMinutes, PeriodNear, PeriodMiddle, PeriodFar, SPKLineThresholdLow, SPKLineThresholdMid, SPKLineThresholdHigh, 1);                // CapRatio1, CapRatio2, PctChgSpdThresholdEn, PctChgSpdThresholdEx);
                AddChartIndicator(giSpdLadder);

                giSpdLadder.RaiseIndicatorEvent += OnTradeBySpdLadder;
//				giPctSpd.RaiseIndicatorEvent += OnTradeByPctSpd;
//				giPctSpd.TM_ClosingH = TG_TradeEndH;
//				giPctSpd.TM_ClosingM = TG_TradeEndM;
                SetPrintOut(-1);
                CapRatio2 = 1;
                CapRatio1 = Closes[1][0] / Closes[0][0];
                if (!IsInStrategyAnalyzer && PrintOut > 1)
                {
                    Print(String.Format("{0}: IsUnmanaged={1}", this.GetType().Name, IsUnmanaged));
                    Print(String.Format("{0}: DataLoaded...BarsArray.Length={1}", this.GetType().Name, BarsArray.Length));
                }
                ctxPairSpdDaily = giSpdLadder.CtxPairSpreadDaily;
//				if(BarsPeriod.BarsPeriodType == BarsPeriodType.Day) {
//					//SetMarketContext();
//					ctxPairSpd = new Dictionary<string, List<CtxPairSpd>>();
//				}
                if (BarsPeriod.BarsPeriodType != BarsPeriodType.Day)
                {
                    GetMarketContext();
                }
            }
        }
Ejemplo n.º 2
0
//		public StgPairSimple () {
//			VendorLicense("TheTradingBook", "StgPairSimple", "thetradingbook.com", "*****@*****.**",null);
//		}

        protected override void OnStateChange()
        {
            base.OnStateChange();
            if (State == State.SetDefaults)
            {
                Description                  = "Pair Trading by Spread Diff or Ratio";
                Name                         = "StgPairSpdRS";
                Calculate                    = Calculate.OnPriceChange;
                IsFillLimitOnTouch           = false;
                TraceOrders                  = false;
                BarsRequiredToTrade          = 128;
                IsUnmanaged                  = false;
                IncludeCommission            = true;
                OrderFillResolution          = OrderFillResolution.Standard;
                EntriesPerDirection          = 2;
                EntryHandling                = EntryHandling.AllEntries;
                DefaultQuantity              = 100;
                StopTargetHandling           = StopTargetHandling.PerEntryExecution;
                IsExitOnSessionCloseStrategy = false;
                //ExitOnSessionCloseSeconds					= 30;
//				MM_ProfitFactorMax							= 1;
//				MM_ProfitFactorMin							= 0;
//				TG_TradeEndH								= 10;
//				TG_TradeEndM								= 45;
                TG_OpenStartH    = 8;
                TG_OpenStartM    = 30;
                MktPosition1     = MarketPosition.Flat;
                MktPosition2     = MarketPosition.Flat;
                NumStdDevUp      = 1.6;
                NumStdDevDown    = 1.6;
                NumStdDevUpMin   = 0.2;
                NumStdDevDownMin = 0.2;
//				IsInstantiatedOnEachOptimizationIteration = false;
            }
            else if (State == State.Configure)
            {
                // Add an MSFT 1 minute Bars object to the strategy
                //AddDataSeries("NQ 06-20", Data.BarsPeriodType.Minute, 13);
                if (ChartMinutes > 0)
                {
                    AddDataSeries(SecondSymbol, BarsPeriodType.Minute, ChartMinutes, MarketDataType.Last);
                }
                else
                {
                    AddDataSeries(SecondSymbol, BarsPeriodType.Day, 1, MarketDataType.Last);
                }
                //AddDataSeries(SecondSymbol, BarsPeriodType.Minute, ChartMinutes);
                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)
            {
                giSpdRs = GISpdRS(NumStdDevUp, NumStdDevDown, NumStdDevUpMin, NumStdDevDownMin, MAPeriod, ATRPeriod, SecondSymbol, ChartMinutes);                // CapRatio1, CapRatio2, PctChgSpdThresholdEn, PctChgSpdThresholdEx);
                AddChartIndicator(giSpdRs);

                giSpdRs.RaiseIndicatorEvent += OnTradeByPairSpdRs;
//				giPctSpd.RaiseIndicatorEvent += OnTradeByPctSpd;
//				giPctSpd.TM_ClosingH = TG_TradeEndH;
//				giPctSpd.TM_ClosingM = TG_TradeEndM;
                SetPrintOut(1);
                CapRatio2 = 1;
                CapRatio1 = Closes[1][0] / Closes[0][0];
                Print(String.Format("{0}: IsUnmanaged={1}", this.GetType().Name, IsUnmanaged));
                Print(String.Format("{0}: DataLoaded...BarsArray.Length={1}", this.GetType().Name, BarsArray.Length));

                ctxPairSpdDaily = giSpdRs.CtxPairSpreadDaily;
//				if(BarsPeriod.BarsPeriodType == BarsPeriodType.Day) {
//					//SetMarketContext();
//					ctxPairSpd = new Dictionary<string, List<CtxPairSpd>>();
//				}
                if (BarsPeriod.BarsPeriodType != BarsPeriodType.Day)
                {
                    GetMarketContext();
                }
            }
        }