All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tigerbrokers.stock.openapi.client.util.QuoteDataUtil Maven / Gradle / Ivy

package com.tigerbrokers.stock.openapi.client.util;

import com.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteBBOData;
import com.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteBasicData;
import com.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteData;
import com.tigerbrokers.stock.openapi.client.socket.data.pb.SocketCommon;

/**
 * author:bean
 * date:2022/12/02
 */
public class QuoteDataUtil {

  public static QuoteBBOData convertToAskBidData(QuoteData quoteData) {
    if (quoteData == null || quoteData.getType() == null) {
      return null;
    }
    SocketCommon.QuoteType type = quoteData.getType();
    if (SocketCommon.QuoteType.ALL != type && SocketCommon.QuoteType.BBO != type) {
      return null;
    }
    QuoteBBOData.Builder builder = QuoteBBOData.newBuilder();
    builder.setSymbol(quoteData.getSymbol());
    builder.setType(SocketCommon.QuoteType.BBO);
    builder.setTimestamp(quoteData.getTimestamp());
    builder.setAskPrice(quoteData.getAskPrice());
    builder.setAskSize(quoteData.getAskSize());
    builder.setBidPrice(quoteData.getBidPrice());
    builder.setBidSize(quoteData.getBidSize());
    if (quoteData.hasAskTimestamp()) {
      builder.setAskTimestamp(quoteData.getAskTimestamp());
    }
    if (quoteData.hasBidTimestamp()) {
      builder.setBidTimestamp(quoteData.getBidTimestamp());
    }

    return builder.build();
  }

  public static QuoteBasicData convertToBasicData(QuoteData quoteData) {
    if (quoteData == null || quoteData.getType() == null) {
      return null;
    }
    SocketCommon.QuoteType type = quoteData.getType();
    if (SocketCommon.QuoteType.ALL != type && SocketCommon.QuoteType.BASIC != type) {
      return null;
    }
    QuoteBasicData.Builder builder = QuoteBasicData.newBuilder();
    builder.setSymbol(quoteData.getSymbol());
    builder.setType(SocketCommon.QuoteType.BASIC);
    builder.setTimestamp(quoteData.getTimestamp());
    if (quoteData.hasServerTimestamp()) {
      builder.setServerTimestamp(quoteData.getServerTimestamp());
    }
    if (quoteData.hasAvgPrice()) {
      builder.setAvgPrice(quoteData.getAvgPrice());
    }
    builder.setLatestPrice(quoteData.getLatestPrice());
    if (quoteData.hasLatestPriceTimestamp()) {
      builder.setLatestPriceTimestamp(quoteData.getLatestPriceTimestamp());
    }
    builder.setLatestTime(quoteData.getLatestTime());
    builder.setPreClose(quoteData.getPreClose());
    builder.setVolume(quoteData.getVolume());
    if (quoteData.hasAmount()) {
      builder.setAmount(quoteData.getAmount());
    }

    if (quoteData.hasOpen()) {
      builder.setOpen(quoteData.getOpen());
    }
    if (quoteData.hasHigh()) {
      builder.setHigh(quoteData.getHigh());
    }
    if (quoteData.hasLow()) {
      builder.setLow(quoteData.getLow());
    }

    if (quoteData.hasHourTradingTag()) {
      builder.setHourTradingTag(quoteData.getHourTradingTag());
    }
    if (quoteData.hasMarketStatus()) {
      builder.setMarketStatus(quoteData.getMarketStatus());
    }

    // only Options support
    if (quoteData.hasIdentifier()) {
      builder.setIdentifier(quoteData.getIdentifier());
    }
    // open interest, only Options support
    if (quoteData.hasOpenInt()) {
      builder.setOpenInt(quoteData.getOpenInt());
    }
    // latest trad time, only Futures support
    if (quoteData.hasTradeTime()) {
      builder.setTradeTime(quoteData.getTradeTime());
    }
    // previous settlement price, only Futures support
    if (quoteData.hasPreSettlement()) {
      builder.setPreSettlement(quoteData.getPreSettlement());
    }
    // min tick, only Futures support
    if (quoteData.hasMinTick()) {
      builder.setMinTick(quoteData.getMinTick());
    }

    if (quoteData.hasMi()) {
      builder.setMi(quoteData.getMi());
    }

    return builder.build();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy