如何正确使用Ibpy的reqMktData?

2024-09-28 21:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨伙计们刚刚开始研究Ibpy算法,我想先用纸上交易来测试它,但我有一点了解如何使用reqMktData来获得最后的价格。我下单没有问题,但这25秒没有任何回报,我认为它只是在交易时间使用,或者可能只是使用它错误的想法?在

from ib.opt import ibConnection, message
from ib.ext.Contract import Contract
from time import sleep

def my_callback_handler(msg):
    inside_mkt_bid = ''
    inside_mkt_ask = ''

    if msg.field == 1:
        inside_mkt_bid = msg.price
        print 'bid', inside_mkt_bid
    elif msg.field == 2:
        inside_mkt_ask = msg.price
        print 'ask', inside_mkt_ask


tws = ibConnection()
tws.register(my_callback_handler, message.tickSize, message.tickPrice)
tws.connect()

c = Contract()
c.m_symbol = "DATA"
c.m_secType = "STK"
c.m_exchange = "SMART"
c.m_currency = "USD"
tws.reqMktData(788,c,"",False)
sleep(25)
print 'All done'

tws.disconnect()

Tags: fromimportmessagemsg交易askibprint
2条回答

我认为这与IB内部的市场数据订阅有关,因为我也有类似的问题。我有一个TWS时间连接。。。在结果中与“市场数据场连接”消息一起返回。 确保已建立连接端口和客户机ID,即:

tws = ibConnection(port=7496,clientId=100)

请注意,7496是一个公共端口,但clientId是您希望指定的任何内容(在“文件->API->设置”下使用的IB帐户中)。在

我以前尝试过IbPy,并成功地获得了数据,但现在我改用Ibapi,这更困难,仍然不能完全交易,但它有一个调整后的历史价格。在

所以这是我的代码,你必须定制你想要的。在

1.获取股票会员表格Excel

from ib.opt import ibConnection, message
from ib.ext.Contract import Contract
from ib.ext.Order import Order
from ib.ext.TickType import TickType as tt
from time import sleep, time, strftime
import datetime
from __future__ import print_function #I'm using 3.x style print
import pandas as pd
import numpy as np
from math import ceil
import re

xls_file = pd.ExcelFile('xxxx\\Interactive_Broker_trading\\SNP2.xlsx')
df = xls_file.parse('Sheet1')
Ticker = df.iloc[:,1]
all_data = pd.DataFrame(Ticker)
all_data.columns = ['ticker']
all_data['type'] = 'STK'
all_data['exchange'] = 'SMART'
all_data['curr'] = 'USD'
all_data['bidPrice'] =0
all_data['askPrice'] =0
all_data['lastPrice'] =0
all_data['HistoryPrice']=0

2.使用for loop获取历史价格,因为我的帐户限制为每秒100个请求,因此我将其分为8个多会话,用于标准普尔505。然后每70只股票重新登录。我能在2分钟内得到505的总数。在

^{pr2}$

相关问题 更多 >