public boolean levelNeutralizedByMovement(Level level, List<Bar> barsToCheck) { double minPrice = 0; double maxPrice = 0; for (Bar bar : barsToCheck) { if (bar.openTime() > level.timeAppeared() // || (bar.openTime() == level.timeAppeared() && closeBid() == level.price()) ) { minPrice = Math.min(bar.openBid(), bar.closeBid()); maxPrice = Math.max(bar.openBid(), bar.closeBid()); if (level.price() >= minPrice && level.price() <= maxPrice) { return true; } if (level.direction == 1 && minPrice > level.price()) { return true; } if (level.direction == -1 && maxPrice < level.price()) { return true; } } } return false; }
public long openTime() { if (startBar != null) { return startBar.openTime(); } return time; }