2

市場データリクエストで繰り返しグループを使用する必要がある理由を誰かに教えてもらえますか?そして、市場データの要求に対してアクセプターからどのような応答/応答を受け取る必要がありますか。アクセプター側でどのように市場データリクエストを受け取ることができるか教えてください。

マーケットデータリクエストの送信

public void sendMarketDataRequest(SessionID sessionId, String request, int ord){ // request new or old
        String bankName = "HBL";
        String mdReqCcyPair = "EURUSD";
        String mkdreqId = "010qwerty";

        SubscriptionRequestType type = new SubscriptionRequestType('1');
        if(request.equals("new")){
            reqId.put(mkdreqId, mkdreqId);
        }else{
            type.setValue('2');
        }

        quickfix.fix44.MarketDataRequest mdRequest = new quickfix.fix44.MarketDataRequest(new MDReqID(mkdreqId), type, new MarketDepth(1));
        mdRequest.setField(new quickfix.field.Symbol(mdReqCcyPair));
        mdRequest.setField(new Product(2));
        mdRequest.setField(new NoRelatedSym(1));
        mdRequest.setField(new MDUpdateType(0));
        mdRequest.setField(new NoMDEntryTypes(3));
        mdRequest.setField(new StringField(582, "1"));

        quickfix.fix44.MarketDataSnapshotFullRefresh.NoMDEntries group = new quickfix.fix44.MarketDataSnapshotFullRefresh.NoMDEntries();
            group.set(new MDEntryType('0'));
            group.set(new MDEntryPx(12.32));
            group.set(new MDEntrySize(10));
            group.set(new OrderID("OrderId"));
            mdRequest.addGroup(group);

            group.set(new MDEntryType('1'));
            group.set(new MDEntryPx(12.32));
            group.set(new MDEntrySize(10));
            group.set(new OrderID("OrderId"));
            mdRequest.addGroup(group);

        qCcyPair.substring(0, 3);
        mdRequest.setField(new Currency(mdReqDealtCcy));
        mdRequest.setField(new NoPartyIDs(1));
        mdRequest.setField(new PartyID(bankName));

        try{
            boolean re = Session.sendToTarget(mdRequest, sessionId);
            System.out.println(mdRequest);
            System.out.println(re);
        }catch(Exception e){e.printStackTrace();}
    }

終了コードの受信

public void onMessage( quickfix.fix44.MarketDataRequest message,  SessionID sessionID )
                  throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue {

                  System.out.println("On Message:   "+message);
}
4

1 に答える 1

4

市場データ要求は通常、単一の商品には使用されません。通常、一連の商品の市場データが必要です。繰り返しグループセットの各グループは、データが必要な機器を表します。応答は、相手方と、最後に市場データを完全に更新したのはいつか(通常は毎日)によって異なります。最初のリクエストで、その後は決まったスケジュールで、完全な市場データ更新メッセージを受け取ります。カウンターパーティが日中更新モデルをサポートしている場合は、部分的なデータ更新であるスナップショット更新メッセージを受信します。スナップショットメッセージは、最後の更新(完全または部分的)以降に変更された市場データのみの更新を提供し、より小さなメッセージであり、したがって、できれば待ち時間を短縮することを目的としています。すべてのカウンターパーティが部分的な更新をサポートしているわけではありません。市場データ要求を受信して​​いるアクセプター側(通常は販売側)の場合は、最初に、要求されたすべての商品の詳細をカバーする完全な市場データの更新を提供する必要があります。増分更新をサポートするかどうかは、ビジネス上の決定です。

于 2012-08-15T08:05:36.240 に答える