我发现在相关的 futu_gateway.py 文件里,并没有 query_history 的函数,所以每次下载数据都说失败,请问是不支持呢还是说要自己写呢?不知道有没有现成的呢?
谢谢啦!
我发现在相关的 futu_gateway.py 文件里,并没有 query_history 的函数,所以每次下载数据都说失败,请问是不支持呢还是说要自己写呢?不知道有没有现成的呢?
谢谢啦!
futu_gateway没有对接下载数据的功能,需要的话只有自己实现了
谢谢,我已自己实现了!
雲信哥哥 wrote:
谢谢,我已自己实现了!
怎么实现的,介绍一下经验吧
好的,主要就是要在 futu_gaateway.py 文件裏實現一個 query_history 方法,原理我就不多說啦,自己看下應該也很好理解的,具體代碼如下:
def exchange_bond(self, exchange: Exchange):
if exchange.value == "SEHK":
return "HK"
elif exchange.value == "SMART":
return "US"
else:
return exchange.value
def query_history(self, req: HistoryRequest):
""""""
symbol = req.symbol
exchange = req.exchange
interval = req.interval
start = req.start.strftime('%Y-%m-%d')
end = req.end.strftime('%Y-%m-%d')
tcode = self.exchange_bond(exchange) + '.' + f'{symbol}'
#tcode = 'HK.09988'
ret, quotedata, page_req_key = self.quote_ctx.request_history_kline(
tcode, start=start, end=end)
data: List[BarData] = []
if quotedata is not None:
for ix, row in quotedata.iterrows():
#date = datetime.strptime(row.time_key, '%Y-%m-%d %H:%M:%S')
bar = BarData(
symbol=symbol,
exchange=exchange,
interval=interval,
datetime=row.time_key,
open_price=row.open,
high_price=row.high,
low_price=row.low,
close_price=row.close,
volume=row.volume,
gateway_name="FUTU"
)
print(bar)
data.append(bar)
return data
return data
多谢云信哥哥的分享,正好是我想要的,能说详细一些吗?初哥多谢了!
补充一点: HistoryRequest 这个需要在开头进行引入,否则报错
from vnpy.trader.object import (
TickData,
OrderData,
TradeData,
AccountData,
ContractData,
PositionData,
SubscribeRequest,
OrderRequest,
HistoryRequest,
CancelRequest
)
加了代码后还是无法下载数据,无法获取历史数据。
我也没有无法获取历史数据。能不能出个视频教程啊!雲信哥哥
雲信哥哥 wrote:
好的,主要就是要在 futu_gaateway.py 文件裏實現一個 query_history 方法,原理我就不多說啦,自己看下應該也很好理解的,具體代碼如下:
def exchange_bond(self, exchange: Exchange): if exchange.value == "SEHK": return "HK" elif exchange.value == "SMART": return "US" else: return exchange.value def query_history(self, req: HistoryRequest): """""" symbol = req.symbol exchange = req.exchange interval = req.interval start = req.start.strftime('%Y-%m-%d') end = req.end.strftime('%Y-%m-%d') tcode = self.exchange_bond(exchange) + '.' + f'{symbol}' #tcode = 'HK.09988' ret, quotedata, page_req_key = self.quote_ctx.request_history_kline( tcode, start=start, end=end) data: List[BarData] = [] if quotedata is not None: for ix, row in quotedata.iterrows(): #date = datetime.strptime(row.time_key, '%Y-%m-%d %H:%M:%S') bar = BarData( symbol=symbol, exchange=exchange, interval=interval, datetime=row.time_key, open_price=row.open, high_price=row.high, low_price=row.low, close_price=row.close, volume=row.volume, gateway_name="FUTU" ) print(bar) data.append(bar) return data return data
谢谢,按照方法去做,还是无法下载行情,这里还是使用的RQ的接口去下的,并没有使用gateway里的query_history.
希望能获得帮助.
不知道对应接口的contractdata里的history_data是否改为true了,没改的话不会走到去接口拉的逻辑的
xiaohe wrote:
不知道对应接口的contractdata里的history_data是否改为true了,没改的话不会走到去接口拉的逻辑的
我跟踪了一下就是history_data=False. 在哪里改成True?
query_contract创建ContractData的时候
xiaohe wrote:
query_contract创建ContractData的时候
这是哪里创建的
接口文件收到合约查询回报的时候
xiaohe wrote:
接口文件收到合约查询回报的时候
已经看到,谢谢!
xiaohe wrote:
不知道对应接口的contractdata里的history_data是否改为true了,没改的话不会走到去接口拉的逻辑的
我跟踪了一下,发现查不出数据的原因是gateway.query_history(req),查询到基类的query_history,而不是FutuGateway.query_history(req),请问这怎么回事?刚学习Python不久,还请指教。谢谢!
FutuGateway就继承了BaseGateway,如果在FutuGateway这个类下面写了query_history并且接口on_contract里的contract.history_data为True的话,是会调用到的
各位老师,我咋连futu_gateway.py都找不到了呢?30版本。