您能说出TWS API是否延迟市场数据?

发布于 2025-02-04 06:38:01 字数 147 浏览 1 评论 0 原文

我启用了延迟的市场数据,

  ibClient.ClientSocket.reqMarketDataType(4);

但是我的某些市场数据将被延迟,而有些则不会。 有什么方法可以告诉哪些是延迟的(理想情况下是多少)?

I've enabled delayed market data, using:

  ibClient.ClientSocket.reqMarketDataType(4);

But then some of my market data will be delayed, and some will not be.
Is there any way of telling which are delayed (and ideally by how much)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

财迷小姐 2025-02-11 06:38:01

当您收到tickprice消息时,请注意字段参数,该参数告诉您它是延迟还是实时。同样,注册MarketDatatype事件将为您提供另一条消息作为数据类型的标题。

类似:

public enum TickFields:int
{
    BidPrice = 1,
    AskPrice = 2,
    LastPrice = 4,
    DelayedBid = 66,
    DelayedAsk = 67,
    DelayedLast = 68,
}

public enum MarketDataTypes:int
{
    Unknown = 0,
    Live = 1,
    Frozen = 2,
    Delayed = 3,
    DelayedFrozen = 4,
}

上述常数可在 https://interactivebrokers.github.io/tws -api/tick_types.html

//in constructor
ibClient.TickPrice += Recv_TickPrice;
ibClient.MarketDataType += Recv_MarketDataType;


private void Recv_TickPrice(TickPriceMessage msg)
{
    switch((TickFields)msg.Field)
    {
        case TickFields.AskPrice:
        case TickFields.DelayedAsk:
            // do something with the ask price
            break;
        case TickFields.BidPrice:
        case TickFields.DelayedBid:
            // do something with the bid price
            break;
        default:
            return;
    }
}

private void Recv_MarketDataType(MarketDataTypeMessage msg)
{
    Program.Log(LogLevel.Debug, "> Recv_MktDataType()", $"MarketDataType: {(MarketDataTypes)msg.MarketDataType}");
    switch((MarketDataTypes)msg.MarketDataType)
    {
        case MarketDataTypes.Live:
            break;
        case MarketDataTypes.Frozen:
            break;
        case MarketDataTypes.Delayed:
            break;
        case MarketDataTypes.DelayedFrozen:
            break;
        default:
            return;
    }
}

如果我没记错的话,请在每个tickpricemessages之前发送MarketDatatyPemessage,因此,当TWS升级您的reqmarketDataType(FrozendElayed)时,请延迟(或LIVE-订阅该工具数据, )您应该按照以下方式收到一些东西:

MarketDatatyPemessage(冷冻)

tickpricemessage(多个)

MarketDatatyPemessage(实时/延迟)

tickpricemessage(多个)

当然,您收到的ticktypes当然取决于输入的genertickList字符串,该字符串输入了Reqmktdata。

When you receive the tickprice message take note of the field parameter, that tells you if it is delayed or live. Also register for MarketDataType events will give you another message as a header for the data type.

Something like:

public enum TickFields:int
{
    BidPrice = 1,
    AskPrice = 2,
    LastPrice = 4,
    DelayedBid = 66,
    DelayedAsk = 67,
    DelayedLast = 68,
}

public enum MarketDataTypes:int
{
    Unknown = 0,
    Live = 1,
    Frozen = 2,
    Delayed = 3,
    DelayedFrozen = 4,
}

The above constants are available at https://interactivebrokers.github.io/tws-api/tick_types.html and https://interactivebrokers.github.io/tws-api/market_data_type.html

//in constructor
ibClient.TickPrice += Recv_TickPrice;
ibClient.MarketDataType += Recv_MarketDataType;


private void Recv_TickPrice(TickPriceMessage msg)
{
    switch((TickFields)msg.Field)
    {
        case TickFields.AskPrice:
        case TickFields.DelayedAsk:
            // do something with the ask price
            break;
        case TickFields.BidPrice:
        case TickFields.DelayedBid:
            // do something with the bid price
            break;
        default:
            return;
    }
}

private void Recv_MarketDataType(MarketDataTypeMessage msg)
{
    Program.Log(LogLevel.Debug, "> Recv_MktDataType()", 
quot;MarketDataType: {(MarketDataTypes)msg.MarketDataType}");
    switch((MarketDataTypes)msg.MarketDataType)
    {
        case MarketDataTypes.Live:
            break;
        case MarketDataTypes.Frozen:
            break;
        case MarketDataTypes.Delayed:
            break;
        case MarketDataTypes.DelayedFrozen:
            break;
        default:
            return;
    }
}

If I recall correctly a MarketDataTypeMessage is sent before each block of TickPriceMessages, so when TWS upgrades your reqMarketDataType(FrozenDelayed) to delayed (or live - if you are subscribed to that instruments' data) you should receive something along the lines of:

MarketDataTypeMessage (Frozen)

TickPriceMessage (multiple)

MarketDataTypeMessage (Live/delayed)

TickPriceMessage (multiple)

Of course exactly what ticktypes you receive will depend on the genericTickList string entered into reqMktData.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文