vnpy 查询持仓量_VNPY合成指数合约

该代码实现了通过VNPY查询并合成RB99指数合约的持仓量,通过对多个RB合约的openInterest进行加权平均来计算。同时,代码还涉及对合约的处理,包括过滤非交易合约,以及处理指数合约的时间问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Talk is cheap ,show my code(不要纠结我的代码命名,我就喜欢这么搞,自己看着舒服)

#下面只发修改部分的代码

class CtpMdApi(MdApi):

"""CTP行情API实现"""

#----------------------------------------------------------------------

def __init__(self, gateway):

#指数合约字典

self.RBSymbolDict ={} #RBtick行情字典,用于合成指数合约

#----------------------------------------------------------------------

def roundToPriceTick(self, priceTick, price):

"""取整价格到合约最小价格变动"""

if not priceTick:

return price

newPrice = round(price/priceTick, 0) * priceTick

return newPrice

def onRtnDepthMarketData(self, data):

#先推送tick行情

self.gateway.onTick(tick)

#合成指数合约

RBTick99 = VtTickData()

#过滤合约没有挂单导致指数合约一档价格无穷大

if 'rb' in tick.symbol and 'efp' not in tick.symbol and (tick.bidPrice1 < 9999999 or tick.askPrice1 < 9999999):

self.RBSymbolDict[tick.symbol] = tick

if self.RBSymbolDict:

for X in range(len(list(self.RBSymbolDict.values()))):

TickValue = list(self.RBSymbolDict.values())[X]

RBTick99.openInterest += TickValue.openInterest

if RBTick99.openInterest:

for X in range(len(list(self.RBSymbolDict.values()))):

TickValue = list(self.RBSymbolDict.values())[X]

#指数合约持仓量加权

RBTick99.lastPrice += TickValue.lastPrice * (TickValue.openInterest/RBTick99.openInterest)

RBTick99.volume += TickValue.volume * (TickValue.openInterest/RBTick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值