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

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


  }

  @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


  public Void visit(final DDF_EOD_Commodity message, final MarketDo market) {

    market.clearChanges();

    final MarketBarType type = market.ensureBar(message.getTradeDay().tradeDate());
    final MarketDoBar bar = market.loadBar(type.field);

    bar.set(MarketBarField.OPEN, message.getPriceOpen());
    bar.set(MarketBarField.HIGH, message.getPriceHigh());
    bar.set(MarketBarField.LOW, message.getPriceLow());
    /* Note Last =/= Close in some cases */
    bar.set(MarketBarField.CLOSE, message.getPriceLast());

    market.setBar(type, bar);

    return null;

View Full Code Here

  public Void visit(final DDF_EOD_EquityForex message, final MarketDo market) {

    market.clearChanges();

    final MarketBarType type = market.ensureBar(message.getTradeDay().tradeDate());
    final MarketDoBar bar = market.loadBar(type.field);

    bar.set(MarketBarField.OPEN, message.getPriceOpen());
    bar.set(MarketBarField.HIGH, message.getPriceHigh());
    bar.set(MarketBarField.LOW, message.getPriceLow());
    /* Note Last =/= Close in some cases */
    bar.set(MarketBarField.CLOSE, message.getPriceLast());

    bar.set(MarketBarField.VOLUME, message.getSizeVolume());

    market.setBar(type, bar);

    return null;

View Full Code Here

  public Void visit(final DDF_Prior_IndividCmdy message, final MarketDo market) {

    market.clearChanges();

    final MarketBarType type = market.ensureBar(message.getTradeDay().tradeDate());
    final MarketDoBar bar = market.loadBar(type.field);

    bar.set(MarketBarField.VOLUME, message.getSizeVolume());
    bar.set(MarketBarField.INTEREST, message.getSizeOpenInterest());

    market.setBar(type, bar);

    return null;
View Full Code Here

    final MarketBarType type = ensureBar(tradeDate);

    if (type.isNull())
      return;

    final MarketDoBar bar = loadBar(type.field);

    applyBar(bar, MarketBarField.OPEN, open);
    applyBar(bar, MarketBarField.HIGH, high);
    applyBar(bar, MarketBarField.LOW, low);
    applyBar(bar, MarketBarField.CLOSE, close);
    applyBar(bar, MarketBarField.SETTLE, settle);
    applyBar(bar, MarketBarField.CLOSE_PREVIOUS, previousSettle);
    applyBar(bar, MarketBarField.VOLUME, volume);
    applyBar(bar, MarketBarField.INTEREST, interest);
   
    if (isSettled != null)
      bar.set(MarketBarField.IS_SETTLED, isSettled);

    if (barTime != null)
      bar.set(MarketBarField.BAR_TIME, barTime);

    setBar(type, bar);

  }
View Full Code Here

    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

    // Roll session if needed
    final MarketBarType type = market.ensureBar(date);

    final MarketBookTop top = market.get(MarketField.BOOK_TOP);
    final MarketDoBar bar = market.loadBar(type.field);

    switch (param) {

      case TRADE_ASK_PRICE:

        market.setTrade(ddfSession.type, ddfSession.session,
            ddfSession.sequencing, price, size, time, date);

        return null;

      case TRADE_BID_PRICE:

        market.setTrade(ddfSession.type, ddfSession.session,
            ddfSession.sequencing, price, size, time, date);

        return null;

      case TRADE_LAST_PRICE:

        market.setTrade(ddfSession.type, ddfSession.session,
            ddfSession.sequencing, price, size, time, date);

        return null;

      case ASK_LAST:
      case ASK_LAST_PRICE:

        final DefBookEntry topAskPrice = new DefBookEntry(
            MODIFY, Book.Side.ASK,
            Book.Type.DEFAULT, ENTRY_TOP, price, top.side(Book.Side.ASK).sizeValue());
        applyTop(topAskPrice, time, market);

        return null;

      case ASK_LAST_SIZE:

        final DefBookEntry topAskSize = new DefBookEntry(
            MODIFY, Book.Side.ASK,
            Book.Type.DEFAULT, ENTRY_TOP, top.side(Book.Side.ASK).priceValue(), size);
        applyTop(topAskSize, time, market);

        return null;

      case BID_LAST:
      case BID_LAST_PRICE:

        final DefBookEntry topBidPrice = new DefBookEntry(
            MODIFY, Book.Side.BID,
            Book.Type.DEFAULT, ENTRY_TOP, price, top.side(Book.Side.BID).sizeValue());
        applyTop(topBidPrice, time, market);

        return null;

      case BID_LAST_SIZE:

        final DefBookEntry topBidSize = new DefBookEntry(
            MODIFY, Book.Side.BID,
            Book.Type.DEFAULT, ENTRY_TOP, top.side(Book.Side.BID).priceValue(), size);
        applyTop(topBidSize, time, market);

        return null;

      case CLOSE_LAST:
      case CLOSE_2_LAST:
      case CLOSE_ASK_PRICE:
      case CLOSE_BID_PRICE:
      case CLOSE_2_ASK_PRICE:
      case CLOSE_2_BID_PRICE:

        bar.set(MarketBarField.CLOSE, price);
        bar.set(MarketBarField.BAR_TIME, time);
        market.setBar(type, bar);

        return null;

      case HIGH_LAST_PRICE:
      case HIGH_BID_PRICE:
      case YEAR_HIGH_PRICE:

        bar.set(MarketBarField.HIGH, price);
        bar.set(MarketBarField.BAR_TIME, time);
        market.setBar(type, bar);

        return null;

      case LOW_LAST_PRICE:
      case LOW_ASK_PRICE:
      case YEAR_LOW_PRICE:

        bar.set(MarketBarField.LOW, price);
        bar.set(MarketBarField.BAR_TIME, time);
        market.setBar(type, bar);

        return null;

      case VOLUME_PAST_SIZE:

        if (type == CURRENT) {
          final MarketDoBar barPrevious = market.loadBar(PREVIOUS.field);
          barPrevious.set(MarketBarField.VOLUME, size);
          barPrevious.set(MarketBarField.BAR_TIME, time);
          market.setBar(PREVIOUS, barPrevious);
        }

        return null;

      case VOLUME_THIS_SIZE:

        bar.set(MarketBarField.VOLUME, size);
        bar.set(MarketBarField.BAR_TIME, time);
        market.setBar(type, bar);

        return null;

      case OPEN_LAST_PRICE:
      case OPEN_ASK_PRICE:
      case OPEN_BID_PRICE:
      case OPEN_2_LAST_PRICE:
      case OPEN_2_ASK_PRICE:
      case OPEN_2_BID_PRICE:

        bar.set(MarketBarField.OPEN, price);
        bar.set(MarketBarField.HIGH, price);
        bar.set(MarketBarField.LOW, price);
        bar.set(MarketBarField.CLOSE, price);
        bar.set(MarketBarField.INTEREST, size);
        bar.set(MarketBarField.VOLUME, size);
        bar.set(MarketBarField.BAR_TIME, time);
        bar.set(MarketBarField.SETTLE, ValueConst.NULL_PRICE);
        bar.set(MarketBarField.IS_SETTLED, ValueConst.FALSE_BOOLEAN);

        market.setBar(type, bar);

        return null;

      case INTEREST_LAST_SIZE:

        bar.set(MarketBarField.INTEREST, size);
        bar.set(MarketBarField.BAR_TIME, time);
        market.setBar(type, bar);

        return null;

      case INTEREST_PAST_SIZE:

        if (type == CURRENT) {
          final MarketDoBar barPrevious = market.loadBar(PREVIOUS.field);
          barPrevious.set(MarketBarField.INTEREST, size);
          barPrevious.set(MarketBarField.BAR_TIME, time);
          market.setBar(PREVIOUS, barPrevious);
        }

        return null;

      case PREVIOUS_LAST_PRICE:

        if (type == CURRENT) {
          final MarketDoBar barPrevious = market.loadBar(PREVIOUS.field);
          barPrevious.set(MarketBarField.CLOSE, price);
          barPrevious.set(MarketBarField.BAR_TIME, time);
          market.setBar(PREVIOUS, barPrevious);
        }

        return null;
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);

    // XXX this is disabled to force compatibility with ddf2
    // if (bar.get(BAR_TIME).compareTo(time) > 0) {
    // log.error("ignoring past trade");
    // return;
    // }

    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);

      // ### high

      // XXX disable for dd2 compatibility
      // final PriceValue high = bar.get(HIGH);
      // if (price.compareTo(high) > 0 || high.isNull()) {
      // bar.set(HIGH, price);
      // if (type == CURRENT) {
      // // events only for combo
      // eventAdd(NEW_HIGH);
      // }
      // }

      // ### low

      // XXX disable for dd2 compatibility
      // final PriceValue low = bar.get(LOW);
      // if (price.compareTo(low) < 0 || low.isNull()) {
      // bar.set(LOW, price);
      // if (type == CURRENT) {
      // // events only for combo
      // eventAdd(NEW_LOW);
      // }
      // }

    }

    // ### 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

    }

    //

    final MarketBookTop top = market.get(MarketField.BOOK_TOP);
    final MarketDoBar barCurrent = market.loadBar(CURRENT.field);
    final MarketDoBar barPrevious = market.loadBar(PREVIOUS.field);

    //

    switch (param) {

    case TRADE_LAST_PRICE:
      final DDF_Session ddfSession = message.getSession();
      market.setTrade(ddfSession.type, ddfSession.session,
          ddfSession.sequencing, price, size, time, date);
      return null;

    case ASK_LAST_PRICE:
      final DefBookEntry topAskPrice = new DefBookEntry(MODIFY, ASK,
          DEFAULT, ENTRY_TOP, price, top.side(ASK).size());
      applyTop(topAskPrice, time, market);
      return null;

    case ASK_LAST_SIZE:
      final DefBookEntry topAskSize = new DefBookEntry(MODIFY, ASK,
          DEFAULT, ENTRY_TOP, top.side(ASK).price(), size);
      applyTop(topAskSize, time, market);
      return null;

    case BID_LAST_PRICE:
      final DefBookEntry topBidPrice = new DefBookEntry(MODIFY, BID,
          DEFAULT, ENTRY_TOP, price, top.side(BID).size());
      applyTop(topBidPrice, time, market);
      return null;

    case BID_LAST_SIZE:
      final DefBookEntry topBidSize = new DefBookEntry(MODIFY, BID,
          DEFAULT, ENTRY_TOP, top.side(BID).price(), size);
      applyTop(topBidSize, time, market);
      return null;

    case CLOSE_ASK_PRICE:
    case CLOSE_BID_PRICE:
    case CLOSE_2_ASK_PRICE:
    case CLOSE_2_BID_PRICE:
      barCurrent.set(MarketBarField.CLOSE, price);
      barCurrent.set(MarketBarField.BAR_TIME, time);
      market.setBar(CURRENT, barCurrent);
      return null;

    case HIGH_LAST_PRICE:
    case HIGH_BID_PRICE:
    case YEAR_HIGH_PRICE:
      barCurrent.set(MarketBarField.HIGH, price);
      barCurrent.set(MarketBarField.BAR_TIME, time);
      market.setBar(CURRENT, barCurrent);
      return null;

    case LOW_LAST_PRICE:
    case LOW_ASK_PRICE:
    case YEAR_LOW_PRICE:
      barCurrent.set(MarketBarField.LOW, price);
      barCurrent.set(MarketBarField.BAR_TIME, time);
      market.setBar(CURRENT, barCurrent);
      return null;

    case VOLUME_LAST_SIZE:
      // TODO
      break;

    case VOLUME_PAST_SIZE:
      barPrevious.set(MarketBarField.VOLUME, size);
      barPrevious.set(MarketBarField.BAR_TIME, time);
      market.setBar(PREVIOUS, barPrevious);
      return null;

    case VOLUME_THIS_SIZE:
      barCurrent.set(MarketBarField.VOLUME, size);
      barCurrent.set(MarketBarField.BAR_TIME, time);
      market.setBar(CURRENT, barCurrent);
      return null;

    case OPEN_LAST_PRICE:
    case OPEN_ASK_PRICE:
    case OPEN_BID_PRICE:
    case OPEN_2_LAST_PRICE:
    case OPEN_2_ASK_PRICE:
    case OPEN_2_BID_PRICE:
      //
      barCurrent.set(MarketBarField.OPEN, price);
      barCurrent.set(MarketBarField.HIGH, price);
      barCurrent.set(MarketBarField.LOW, price);
      barCurrent.set(MarketBarField.CLOSE, price);
      barCurrent.set(MarketBarField.INTEREST, size);
      barCurrent.set(MarketBarField.VOLUME, size);
      barCurrent.set(MarketBarField.BAR_TIME, time);
      market.setBar(CURRENT, barCurrent);
      //
      market.setState(MarketStateEntry.IS_SETTLED, false);
      //
      return null;

    case INTEREST_LAST_SIZE:
      barCurrent.set(MarketBarField.INTEREST, size);
      barCurrent.set(MarketBarField.BAR_TIME, time);
      market.setBar(CURRENT, barCurrent);
      return null;

    case INTEREST_PAST_SIZE:
      barPrevious.set(MarketBarField.INTEREST, size);
      barPrevious.set(MarketBarField.BAR_TIME, time);
      market.setBar(PREVIOUS, barPrevious);

      return null;

    case PREVIOUS_LAST_PRICE:
      barPrevious.set(MarketBarField.CLOSE, price);
      barPrevious.set(MarketBarField.BAR_TIME, time);
      market.setBar(PREVIOUS, barPrevious);
      return null;

      /** only "final" sets the flag */
    case SETTLE_FINAL_PRICE:
View Full Code Here

  }

  @Override
  public Void visit(final DDF_EOD_Commodity message, final MarketDo market) {

    final MarketDoBar newBar = market.loadBar(MarketField.BAR_PREVIOUS);

    newBar.set(MarketBarField.OPEN, message.getPriceOpen());
    newBar.set(MarketBarField.HIGH, message.getPriceHigh());
    newBar.set(MarketBarField.LOW, message.getPriceLow());
    /* Note Last =/= Close in some cases */
    newBar.set(MarketBarField.CLOSE, message.getPriceLast());

    market.setBar(MarketBarType.PREVIOUS, newBar);

    return null;
  }
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.