When I try to run a back test it doesn't work. Can you tell me what is wrong with my code. To me it should work.
// See the Help Guide for additional information IsInstantiatedOnEachOptimizationIteration = true; AddPlot(Brushes.Orange, "PLOTA"); AddPlot(Brushes.Green, "PLOTB"); } else if (State == State.Configure) { //SetProfitTarget(CalculationMode.Currency, 5000); //SetStopLoss(CalculationMode.Currency, 1500); AddDataSeries(BarsPeriodType.Month, 1); AddDataSeries(BarsPeriodType.Day, 1); } else if (State == State.DataLoaded) { midbb = Bollinger(Close, 2, 20); SMAmonth = SMA(BarsArray[1], 5); DMI = DM(Close, 14); ATRdaily = ATR(Close, 14); ADXweek = ADX(BarsArray[2], 14); StoConfirmWeek = Stochastics(5, 15, 3); StoConfirmMonth = Stochastics(BarsArray[1], 5, 15, 3); RSIweek = RSI(Close, 5, 3); RSIdaily = RSI(BarsArray[2], 5, 3); } } protected override void OnBarUpdate() { if (CurrentBars[0] < 5 || CurrentBars[1] < 5) return; Values[0][0] = midbb.Middle[0]; Values[1][0] = SMAmonth[0]; if (holdValue == 0 && (Highs[0][4] < Highs[0][3]) && (Lows[0][4] > midbb.Middle[4]) && (Lows[0][3] > midbb.Middle[3]) && (Lows[0][2] > midbb.Middle[2]) && (Lows[0][1] > midbb.Middle[1]) && (Highs[0][3] > Highs[0][2]) && (Highs[0][3] > Highs[0][1])) { holdValue = Highs[0][3]; } if (holdValue != 0 && Lows[0][0] < midbb.Middle[0]) { holdValue = 0; Print("Reset of holdValue " + holdValue); } if (holdValue != 0) { Print("High price at last condition was " + holdValue); } if ((holdValue > midbb.Middle[0]) && (Lows[1][2] >= SMAmonth[2]) && (Lows[1][1] >= SMAmonth[1]) && (Lows[1][0] >= SMAmonth[0]) && (holdValue != 0) //&& (ATRdaily[0] >= .75) && (RSIweek[0] >= 75) //&& (RSIdaily[0] >= 75) //&& (Slope(DMI.DiPlus, 1, 0) > 1) //&& (Slope(DMI.DiMinus, 1, 0) < -1) //&& (DMI.DiPlus[0] >= 50) //&& (StoConfirmWeek.K[0] > StoConfirmWeek.D[0]) //&& (StoConfirmMonth.K[0] > StoConfirmMonth.D[0]) && (Highs[0][0] > holdValue)) { int myQuantity = (int) ((1200)/(holdValue - midbb.Middle[0])); EnterLong(1, @""); holdValue = 0; } else if (holdValue != 0 && Highs[0][0] > holdValue + .02) { holdValue = 0; Print("Reset of holdValue" + holdValue); } if (Lows[0][0] < SMAmonth[0]) { ExitLong(); } if (holdValueShort == 0 && (Lows[0][4] > Lows[0][3]) && (Highs[0][4] < midbb.Middle[4]) && (Highs[0][3] < midbb.Middle[3]) && (Highs[0][2] < midbb.Middle[2]) && (Highs[0][1] < midbb.Middle[1]) && (Lows[0][3] < Lows[0][2]) && (Lows[0][3] < Lows[0][1])) { holdValueShort = Lows[0][3]; } if (holdValueShort != 0 && Highs[0][0] > midbb.Middle[0]) { holdValueShort = 0; Print("Reset of holdValueShort " + holdValueShort); } if (holdValueShort != 0) { Print("Low price at last condition was " + holdValueShort); } if ((holdValueShort < midbb.Middle[0]) && (Highs[1][2] <= SMAmonth[2]) && (Highs[1][1] <= SMAmonth[1]) && (Highs[1][0] <= SMAmonth[0]) && (holdValueShort != 0) //&& (ATRdaily[0] >= .75) && (RSIweek[0] <= 25) //&& (RSIdaily[0] <= 25) //&& (Slope(DMI.DiPlus, 1, 0) < -1) //&& (Slope(DMI.DiMinus, 1, 0) > 1) //&& (DMI.DiMinus[0] >= 50) //&& (StoConfirmWeek.K[0] < StoConfirmWeek.D[0]) //&& (StoConfirmMonth.K[0] < StoConfirmMonth.D[0]) && (Lows[0][0] < holdValueShort)) { int myQuantity = (int) ((1200)/(midbb.Middle[0]) - holdValue); EnterShort(1, @""); holdValueShort = 0; } else if (holdValueShort != 0 && Lows[0][0] < holdValueShort - .02) { holdValueShort = 0; Print("Reset of holdValueShort" + holdValueShort); } if (Highs[0][0] > SMAmonth[0]) { ExitShort(); } } } }
Comment