Example #1
0
 public List<Level> levelsActualAtTime(long time) {
   List<Level> ret = new LinkedList<Level>();
   List<Level> preRet = levels();
   List<Bar> atomicDeltas = atomicDeltas(time);
   for (Level level : preRet) {
     if (level.timeAppeared() < time) {
       if (!levelNeutralizedByMovement(level, atomicDeltas)) {
         ret.add(level);
       }
     }
   }
   return ret;
 }
Example #2
0
 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;
 }