I have the code below which produces the following prints:
DMI Swing High
16/12/2019 07:45:00 | Current Bar = 932 | HSwDMI[0] = 0.6842 | HSwDMIbar = 930 | HSwDMIprice[0] = 59.92
-
Last High Swing DMI Found
16/12/2019 07:55:00 | Current Bar = 934 | LastHSwDMI[0] = 0.0000 | lastHSwDMIbar = 930| lastHSwDMIpriceBar = 930 | HSwDMIprice[0] = 59.05
The problem is that, even though in the first print line the values are correct, in the second print, lastHSwDMIbar = 930 and lastHSwDMIpriceBar = 930 are found correctly, but the values LastHSwDMI[0] = 0.0000 and HSwDMIprice[0] = 59.05 are wrong, as the should be as in the first line, 0.6842 and 59.92
Thank you
// Finding DMI swing High
if ((/*FlatIndBar && */DMI1[2] - DMI1[1] > 0.001 && DMI1[2] - DMI1[3] > 0.001)
|| (FlatIndBar && FlatDMI[0] - DMI1[1] > 0.001 && FlatDMI[0] - DMI(Closes[2], Convert.ToInt32(DmiPeriod)).Values[0].GetValueAt(flatDMIbar - 1) > 0.001))
{
HSwDMI[0] = DMI1[2];
HSwDMIbar = CurrentBar - 2;
HSwDMIprice[0] = Highs[2].GetValueAt(HSwDMIbar);
if (PrintDmiSwing)
Print("DMI Swing High \r\n" + Time[0] + " | Current Bar = " + CurrentBar + string.Format(" | HSwDMI[0] = {0:F4}", HSwDMI[0]) +
" | HSwDMIbar = " + HSwDMIbar + " | HSwDMIprice[0] = " + HSwDMIprice[0] + "\r\n-");
}
..................
if (!LastHSwDMIfound)
{
LastHSwDMI[0] = MAX(HSwDMI, 5)[1];
LastHSwDMIfound = true;
}
if (LastHSwDMIfound)
{
lastHSwDMIbar = CurrentBar - HighestBar(DMI(Closes[2], Convert.ToInt32(DmiPeriod)), 5);
lastHSwDMIpriceBar = CurrentBar - HighestBar(Lows[2], 5);
HSwDMIprice[0] = Highs[2][lastHSwDMIpriceBar];
if (PrintDmiSwing)
Print("Last High Swing DMI Found\r\n" + Time[0] + " | Current Bar = " + CurrentBar + string.Format(@" | LastHSwDMI[0] = {0:F4}", LastHSwDMI[0]) +
" | lastHSwDMIbar = " + lastHSwDMIbar + "| lastHSwDMIpriceBar = " + lastHSwDMIpriceBar + " | HSwDMIprice[0] = " + HSwDMIprice[0] + "\r\n-");

Comment