/// <summary> /// This method is used to configure the strategy and is called once before any strategy method is called. /// /// </summary> protected override void Initialize() { int dtbStrength = Iparm1; int swingSize = Iparm2; atrTimes = dparm1; atrPeriod = period1; so = PriceActionSwingOscillator(dtbStrength, swingSize, SwingTypes.Standard); Add(so); atr = ATRTrailing(atrTimes, Period1, Ratched); //Add(atr); SetProfitTarget("", CalculationMode.Ticks, dparm1); SetStopLoss("", CalculationMode.Ticks, dparm2, false); //SetTrailStop("", CalculationMode.Percent, dparm2, false); CalculateOnBarClose = true; ExitOnClose = true; IncludeCommission = true; }
/// <summary> /// PriceActionSwingOscillator shows the trend direction, swing relation or developing swing volume. !!! The volume is repainting. !!! /// </summary> /// <returns></returns> public PriceActionSwingOscillator PriceActionSwingOscillator(Data.IDataSeries input, int dtbStrength, int swingSize, SwingTypes swingType) { if (cachePriceActionSwingOscillator != null) for (int idx = 0; idx < cachePriceActionSwingOscillator.Length; idx++) if (cachePriceActionSwingOscillator[idx].DtbStrength == dtbStrength && cachePriceActionSwingOscillator[idx].SwingSize == swingSize && cachePriceActionSwingOscillator[idx].SwingType == swingType && cachePriceActionSwingOscillator[idx].EqualsInput(input)) return cachePriceActionSwingOscillator[idx]; lock (checkPriceActionSwingOscillator) { checkPriceActionSwingOscillator.DtbStrength = dtbStrength; dtbStrength = checkPriceActionSwingOscillator.DtbStrength; checkPriceActionSwingOscillator.SwingSize = swingSize; swingSize = checkPriceActionSwingOscillator.SwingSize; checkPriceActionSwingOscillator.SwingType = swingType; swingType = checkPriceActionSwingOscillator.SwingType; if (cachePriceActionSwingOscillator != null) for (int idx = 0; idx < cachePriceActionSwingOscillator.Length; idx++) if (cachePriceActionSwingOscillator[idx].DtbStrength == dtbStrength && cachePriceActionSwingOscillator[idx].SwingSize == swingSize && cachePriceActionSwingOscillator[idx].SwingType == swingType && cachePriceActionSwingOscillator[idx].EqualsInput(input)) return cachePriceActionSwingOscillator[idx]; PriceActionSwingOscillator indicator = new PriceActionSwingOscillator(); indicator.BarsRequired = BarsRequired; indicator.CalculateOnBarClose = CalculateOnBarClose; #if NT7 indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256; indicator.MaximumBarsLookBack = MaximumBarsLookBack; #endif indicator.Input = input; indicator.DtbStrength = dtbStrength; indicator.SwingSize = swingSize; indicator.SwingType = swingType; Indicators.Add(indicator); indicator.SetUp(); PriceActionSwingOscillator[] tmp = new PriceActionSwingOscillator[cachePriceActionSwingOscillator == null ? 1 : cachePriceActionSwingOscillator.Length + 1]; if (cachePriceActionSwingOscillator != null) cachePriceActionSwingOscillator.CopyTo(tmp, 0); tmp[tmp.Length - 1] = indicator; cachePriceActionSwingOscillator = tmp; return indicator; } }