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