fix协议介绍17-查询订单状态报告(QuoteStateReport)

35 篇文章 0 订阅
34 篇文章 16 订阅

FIX.5.0SP2 Message

QuoteStatusReport [type 'AI']

<QuotStatRpt>

The quote status report message is used:

• as the response to a Quote Status Request message

• as a response to a Quote Cancel message

• as a response to a Quote Response message in a negotiation dialog (see Volume 7 – PRODUCT: FIXED INCOME and USER GROUP: EXCHANGES AND MARKETS)


Added  FIX.4.3

Expand Components | Collapse Components

  Field or Component Field Name FIXML name Req'd Comments Depr.
Component StandardHeader BaseHeader

MsgType = AI

 
649 QuoteStatusReqID @StatReqID      
131 QuoteReqID @ReqID  

Required when quote is in response to a Quote Request message

 
117 QuoteID @QID  

Maps to QuoteID(117) of a single Quote(MsgType=S) or QuoteEntryID(299) of a MassQuote(MsgType=i).

 
1166 QuoteMsgID @QtMsgID  

Maps to QuoteMsgID(1166) of a single Quote(MsgType=S) or QuoteID(117) of a MassQuote(MsgType=i).

 
693 QuoteRespID @RspID  

Required when responding to a Quote Response message.

 
537 QuoteType @Typ  

Quote Type

If not specified, the default is an indicative quote

 
298 QuoteCancelType @CxlTyp      
Component Parties Pty  

Insert here the set of "Parties" (firm identification) fields defined in "Common Components of Application Messages"

 
Component TargetParties TgtPty  

Can be populated with the values provided on the associated QuoteStatusRequest(MsgType=A).

 
336 TradingSessionID @SesID      
625 TradingSessionSubID @SesSub      
Component Instrument Instrmt  

Conditionally required when reporting status of a single security quote.

 
Component FinancingDetails FinDetls  

Insert here the set of "FinancingDetails" (symbology) fields defined in "Common Components of Application Messages"

 
Component UndInstrmtGrp Undly  

Number of underlyings

 
54 Side @Side      
Component OrderQtyData OrdQty  

Required for Tradeable quotes of single instruments

 
63 SettlType @SettlTyp      
64 SettlDate @SettlDt  

Can be used with forex quotes to specify a specific "value date"

 
193 SettlDate2 @SettlDt2  

Can be used with OrdType = "Forex - Swap" to specify the "value date" for the future portion of a F/X swap.

FIX.5.0
192 OrderQty2 @Qty2  

Can be used with OrdType = "Forex - Swap" to specify the order quantity for the future portion of a F/X swap.

FIX.5.0
15 Currency @Ccy  

Can be used to specify the currency of the quoted prices. May differ from the 'normal' trading currency of the instrument being quoted

 
Component Stipulations Stip      
1 Account @Acct      
660 AcctIDSource @AcctIDSrc      
581 AccountType @AcctTyp  

Type of account associated with the order (Origin)

 
Component LegQuotStatGrp QuoteStat  

Required for multileg quote status reports

 
Component QuotQualGrp QuotQual      
126 ExpireTime @ExpireTm      
44 Price @Px      
423 PriceType @PxTyp      
Component SpreadOrBenchmarkCurveData SprdBnchmkCurve      
Component YieldData Yield      
132 BidPx @BidPx  

If F/X quote, should be the "all-in" rate (spot rate adjusted for forward points). Note that either BidPx, OfferPx or both must be specified.

 
133 OfferPx @OfrPx  

If F/X quote, should be the "all-in" rate (spot rate adjusted for forward points). Note that either BidPx, OfferPx or both must be specified.

 
645 MktBidPx @MktBidPx  

Can be used by markets that require showing the current best bid and offer

 
646 MktOfferPx @MktOfrPx  

Can be used by markets that require showing the current best bid and offer

 
647 MinBidSize @MinBidSz  

Specifies the minimum bid size. Used for markets that use a minimum and maximum bid size.

 
134 BidSize @BidSz  

Specifies the bid size. If MinBidSize is specified, BidSize is interpreted to contain the maximum bid size.

 
648 MinOfferSize @MinOfrSz  

Specifies the minimum offer size. If MinOfferSize is specified, OfferSize is interpreted to contain the maximum offer size.

 
135 OfferSize @OfrSz  

Specified the offer size. If MinOfferSize is specified, OfferSize is interpreted to contain the maximum offer size.

 
110 MinQty @MinQty      
62 ValidUntilTime @ValidUntilTm      
188 BidSpotRate @BidSpotRt  

May be applicable for F/X quotes

 
190 OfferSpotRate @OfrSpotRt  

May be applicable for F/X quotes

 
189 BidForwardPoints @BidFwdPnts  

May be applicable for F/X quotes

 
191 OfferForwardPoints @OfrFwdPnts  

May be applicable for F/X quotes

 
631 MidPx @MidPx      
632 BidYield @BidYld      
633 MidYield @MidYld      
634 OfferYield @OfrYld      
60 TransactTime @TxnTm      
40 OrdType @OrdTyp  

Can be used to specify the type of order the quote is for

 
642 BidForwardPoints2 @BidFwdPnts2  

Bid F/X forward points of the future portion of a F/X swap quote added to spot rate. May be a negative value

FIX.5.0
643 OfferForwardPoints2 @OfrFwdPnts2  

Offer F/X forward points of the future portion of a F/X swap quote added to spot rate. May be a negative value

FIX.5.0
656 SettlCurrBidFxRate @SettlCurrBidFxRt  

Can be used when the quote is provided in a currency other than the instrument's 'normal' trading currency. Applies to all bid prices contained in this message

 
657 SettlCurrOfferFxRate @SettlCurrOfrFxRt  

Can be used when the quote is provided in a currency other than the instrument's 'normal' trading currency. Applies to all offer prices contained in this message

 
156 SettlCurrFxRateCalc @SettlCurrFxRtCalc  

Can be used when the quote is provided in a currency other than the instruments trading currency.

 
13 CommType @CommTyp  

Can be used to show the counterparty the commission associated with the transaction.

 
12 Commission @Comm  

Can be used to show the counterparty the commission associated with the transaction.

 
582 CustOrderCapacity @CustCpcty  

For Futures Exchanges

 
100 ExDestination @ExDest  

Used when routing quotes to multiple markets

 
1133 ExDestinationIDSource @ExDestIDSrc      
775 BookingType @BkngTyp      
528 OrderCapacity @Cpcty      
529 OrderRestrictions @Rstctions      
297 QuoteStatus @Stat  

Quote Status

 
300 QuoteRejectReason @RejRsn  

Reason Quote was rejected

 
58 Text @Txt      
354 EncodedTextLen @EncTxtLen      
355 EncodedText @EncTxt      
Component StandardTrailer      


消息实现:

package cs.mina.codec.msg;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import cs.mina.exception.InValidDataException;

/*
 *@author(huangxiaoping)
 *@date 2013-12-2
 */
public class QuoteStatusReportMsg extends BaseMsg {
	private Tag parties = new PartiesTag(false);
	private Tag instrument = new InstrumentTag(false);
	private Tag bidID = new Tag("390", "String", false);
	private Tag offerID = new Tag("1867", "String", false);
	private Tag quoteType = new Tag("537", "int", false);
	private Tag quoteCancelType=new Tag("298","int",false);
	private Tag transactTime = new Tag("60", "UTCTimestamp", false);
	private Tag quoteMsgID=new Tag("1166","String",false);
	private Tag quoteStatus=new Tag("297","int",false);
	private Tag quoteRejectReason=new Tag("300","int",false);
	private Tag rejectText=new Tag("1328","String",false);
	
	private Set<String> tagIdsSet = new HashSet<String>();
	
	public QuoteStatusReportMsg(){
		this.getHeadEntity().getMsgType().setTagValue("AI");
		tagIdsSet.add("390");
		tagIdsSet.add("1867");
		tagIdsSet.add("537");
		tagIdsSet.add("298");
		tagIdsSet.add("60");
		tagIdsSet.add("1166");
		tagIdsSet.add("297");
		tagIdsSet.add("300");
		tagIdsSet.add("1328");
		this.bodyEntity.getBodyTagList().add(parties);
		this.bodyEntity.getBodyTagList().add(instrument);
		this.bodyEntity.getBodyTagList().add(bidID);
		this.bodyEntity.getBodyTagList().add(offerID);
		this.bodyEntity.getBodyTagList().add(quoteType);
		this.bodyEntity.getBodyTagList().add(quoteCancelType);
		this.bodyEntity.getBodyTagList().add(transactTime);
		this.bodyEntity.getBodyTagList().add(quoteMsgID);
		this.bodyEntity.getBodyTagList().add(quoteStatus);
		this.bodyEntity.getBodyTagList().add(quoteRejectReason);
		this.bodyEntity.getBodyTagList().add(rejectText);
	}
	
	@Override
	public void decodeBody() {
		Set<String> already=new HashSet<String>();
		String input=this.body;
		while(input.length()!=0){
			String firstTagId=input.substring(0, input.indexOf("="));
			if(firstTagId.equals("453")){
				input=this.getParties().decode(input, already);
			}else if(InstrumentTag.tagIdsSet.contains(firstTagId)){
				input=this.instrument.decode(input, already);
			}else{
				List<Tag> tagList=this.bodyEntity.getBodyTagList();
				boolean exist=false;
				for(int j=0;j<tagList.size();j++){
					Tag tag=tagList.get(j);
					if(tag.getTagId().equals(firstTagId)){
						input=tag.decode(input, already);
						exist=true;
						break;
					}
				}
				if(!exist){
					throw new InValidDataException(firstTagId+"不在消息字段中");
				}
			}
			
		}
	}

	@Override
	public void validate() {
		this.headEntity.validate();
		List<Tag> bodyTagList = this.bodyEntity.getBodyTagList();
		for (int i = 0; i < bodyTagList.size(); i++) {
			bodyTagList.get(i).validate();
		}
		this.tailerEntity.validate();
		if (quoteType.getTagValue() != null) {
			if (!(Integer.parseInt(quoteType.getTagValue()) >= 0 && Integer
					.parseInt(quoteType.getTagValue()) <= 3)) {
				throw new InValidDataException("quoteType错误["
						+ quoteType.getTagId() + "=" + quoteType.getTagValue()
						+ "]");
			}
		}
		if(quoteCancelType.getTagValue()!=null){
			if(!(Integer.parseInt(quoteCancelType.getTagValue())>=1&&Integer.parseInt(quoteCancelType.getTagValue())<=8)){
				throw new InValidDataException("quoteCancelType错误["
						+ quoteCancelType.getTagId() + "=" + quoteCancelType.getTagValue()
						+ "]");
			}
		}
		if(quoteStatus.getTagValue()!=null){
			if(!(Integer.parseInt(quoteStatus.getTagValue())>=0&&Integer.parseInt(quoteStatus.getTagValue())<=20)){
				throw new InValidDataException("quoteStatus错误["
						+ quoteStatus.getTagId() + "=" + quoteStatus.getTagValue()
						+ "]");
			}
		}
		if(quoteRejectReason.getTagValue()!=null){
			if(!(Integer.parseInt(quoteRejectReason.getTagValue())>=1&&Integer.parseInt(quoteRejectReason.getTagValue())<=13||Integer.parseInt(quoteRejectReason.getTagValue())==99)){
				throw new InValidDataException("quoteRejectReason错误["
						+ quoteRejectReason.getTagId() + "=" + quoteRejectReason.getTagValue()
						+ "]");
			}
		}
	}

	public Tag getParties() {
		return parties;
	}

	public void setParties(Tag parties) {
		this.parties = parties;
	}

	public Tag getInstrument() {
		return instrument;
	}

	public void setInstrument(Tag instrument) {
		this.instrument = instrument;
	}

	public Tag getBidID() {
		return bidID;
	}

	public void setBidID(Tag bidID) {
		this.bidID = bidID;
	}

	public Tag getOfferID() {
		return offerID;
	}

	public void setOfferID(Tag offerID) {
		this.offerID = offerID;
	}

	public Tag getQuoteType() {
		return quoteType;
	}

	public void setQuoteType(Tag quoteType) {
		this.quoteType = quoteType;
	}

	public Tag getQuoteCancelType() {
		return quoteCancelType;
	}

	public void setQuoteCancelType(Tag quoteCancelType) {
		this.quoteCancelType = quoteCancelType;
	}

	public Tag getTransactTime() {
		return transactTime;
	}

	public void setTransactTime(Tag transactTime) {
		this.transactTime = transactTime;
	}

	public Tag getQuoteMsgID() {
		return quoteMsgID;
	}

	public void setQuoteMsgID(Tag quoteMsgID) {
		this.quoteMsgID = quoteMsgID;
	}

	public Tag getQuoteStatus() {
		return quoteStatus;
	}

	public void setQuoteStatus(Tag quoteStatus) {
		this.quoteStatus = quoteStatus;
	}

	public Tag getQuoteRejectReason() {
		return quoteRejectReason;
	}

	public void setQuoteRejectReason(Tag quoteRejectReason) {
		this.quoteRejectReason = quoteRejectReason;
	}

	public Tag getRejectText() {
		return rejectText;
	}

	public void setRejectText(Tag rejectText) {
		this.rejectText = rejectText;
	}

	public Set<String> getTagIdsSet() {
		return tagIdsSet;
	}

	public void setTagIdsSet(Set<String> tagIdsSet) {
		this.tagIdsSet = tagIdsSet;
	}

}

消息处理:略



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值