Package com.barchart.feed.base.bar.api

Examples of com.barchart.feed.base.bar.api.MarketDoBar


    MarketBarType barType = ensureBar(date);
    if (session == EXTENDED && barType == CURRENT)
      barType = CURRENT_EXT;

    final MarketDoBar bar = loadBar(barType.field);

    eventAdd(barType.event);

    final SizeValue volumeOld = bar.get(VOLUME);

    if (volumeOld.isNull()) {
      bar.set(VOLUME, size);
    } else {
      final SizeValue volumeNew = volumeOld.add(size);
      bar.set(VOLUME, volumeNew);
    }

    eventAdd(NEW_VOLUME);

    if (sequencing != MarketTradeSequencing.UNSEQUENCED_VOLUME) {

      // Only update last price for normal in-sequence trades unless null
      if (sequencing == NORMAL || bar.get(CLOSE).isNull()) {

        if (price.isNull()) {

          log.warn("null or zero price on trade message, not applying to bar");

        } else {

          // Set open if first trade
          if (bar.get(OPEN).isNull())
            bar.set(OPEN, price);

          bar.set(CLOSE, price);

          if (session == DEFAULT) {
            // events only for combo
            eventAdd(NEW_CLOSE);
          }

          // Update time
          bar.set(BAR_TIME, time);

        }

      }

      // Update high/low for sequential and non-sequential trades
      if (!price.isNull() && !price.isZero()) {

        final PriceValue high = bar.get(HIGH);
        if (high.isNull())
          bar.set(HIGH, price);
        else if (high.compareTo(price) < 0)
          bar.set(HIGH, price);

        final PriceValue low = bar.get(LOW);
        if (low.isNull())
          bar.set(LOW, price);
        else if (low.compareTo(price) > 0)
          bar.set(LOW, price);

      }

    }
View Full Code Here


  }

  @Override
  public MarketBarType ensureBar(final TimeValue date) {

    final MarketDoBar bar = loadBar(MarketBarType.CURRENT.field);

    final TimeValue currDate = bar.get(MarketBarField.TRADE_DATE);

    if (currDate.equals(date)) {
      return MarketBarType.CURRENT;
    }

    final MarketDoBar prev = loadBar(MarketBarType.PREVIOUS.field);

    // Check for new trading session
    if (currDate.asMillisUTC() < date.asMillisUTC()) {

      log.debug("New session: old=" + currDate + "; new=" + date);

      // Roll values to previous
      prev.copy(bar);

      // Reset current
      bar.clear();
      bar.set(MarketBarField.TRADE_DATE, date);
      // Copy last updated time from previous session for continuity
      bar.set(MarketBarField.BAR_TIME, prev.get(MarketBarField.BAR_TIME));

      // Reset extended
      loadBar(MarketBarType.CURRENT_EXT.field).copy(bar);

      // Notify change tracking
      setBar(MarketBarType.PREVIOUS, prev);
      setBar(MarketBarType.CURRENT, bar);

      return MarketBarType.CURRENT;

    }

    // Check previous bar
    final TimeValue prevDate = prev.get(MarketBarField.TRADE_DATE);

    if (prevDate.isNull()) {
      prev.set(MarketBarField.TRADE_DATE, date);
      return MarketBarType.PREVIOUS;
    } else if (prevDate.equals(date)) {
      return MarketBarType.PREVIOUS;
    }
View Full Code Here

      final MarketTradeSequencing sequencing, final PriceValue price,
      final SizeValue size, final TimeValue time, final TimeValue date) {

    final MarketBarType barType = session == EXTENDED ? CURRENT_EXT
        : CURRENT;
    final MarketDoBar bar = loadBar(barType.field);

    eventAdd(barType.event);

    // Reset current bar if session day changes
    final TimeValue prevDate = bar.get(TRADE_DATE);

    if (session == DEFAULT && !prevDate.isNull() && !date.equals(prevDate)) {

      log.debug("New day code: old=" + prevDate + "; new=" + date);

      bar.set(MarketBarField.OPEN, price);
      bar.set(MarketBarField.HIGH, price);
      bar.set(MarketBarField.LOW, price);
      bar.set(MarketBarField.INTEREST, size);
      bar.set(MarketBarField.VOLUME, size);

      setState(MarketStateEntry.IS_SETTLED, false);

    } else {

      // ### volume

      final SizeValue volumeOld = bar.get(VOLUME);
      final SizeValue volumeNew = volumeOld.add(size);
      bar.set(VOLUME, volumeNew);
      eventAdd(NEW_VOLUME);

    }

    // ### last

    // Only update last for normal in-sequence trades
    if (sequencing == NORMAL) {
      if (price.isNull()) {
        log.warn("null or zero price on trade message, not applying to bar");
      } else {
        bar.set(CLOSE, price);
        if (session == DEFAULT) {
          // events only for combo
          eventAdd(NEW_CLOSE);
        }
        // ### time
        bar.set(BAR_TIME, time);
      }
    } else {
      // XXX: Update high / low, or just wait for refresh?
    }

    bar.set(MarketBarField.TRADE_DATE, date);

  }
View Full Code Here

TOP

Related Classes of com.barchart.feed.base.bar.api.MarketDoBar

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.