VeighNa量化社区
你的开源社区量化交易平台
franklili's Avatar
Member
离线
16 帖子
声望: 1

vnpy3.6的安装指南中只有从pip上安装的指引,如果我要修改源代码,如何从本地源代码安装?原来的python setup.py install已经废弃了。

我在win7-Python3.8.10上用源代码安装vnpy库,在安装ta-lib库时警告winerror 5拒绝访问,我的环境能安装成功吗?

当我从2.7更新到2.8时,出错,提示:

Traceback (most recent call last):
File "c:\vnstudio\lib\site-packages\vnstation\ui\update\update_dialog.py", line 119, in on_updater_failed
self.notify(f"更新失败:{u.vi.name}")
File "c:\vnstudio\lib\site-packages\vnstation\ui\update\update_dialog.py", line 104, in notify
self._append_text(text)
File "c:\vnstudio\lib\site-packages\vnstation\ui\update\update_dialog.py", line 88, in _append_text
self.text.append(text)
RuntimeError: wrapped C/C++ object of type QTextEdit has been deleted

怎么办?

我知道原因了,symbol="ethusdt"就成功了。

amplitude_volatility_strategy.py

def on_bars(self, bars: Dict[str, BarData]):
        """"""
    self.cancel_all()
    for vt_symbol, bar in bars.items():
        am: ArrayManager = self.ams[vt_symbol]
        am.update_bar(bar)
        amplitude = (am.high() - am.low()) / am.open()

backtesting.py

show_result(AmplitudeVolatilityStrategy)

2021-09-03 12:59:53.723812 触发异常,回测终止
2021-09-03 12:59:53.725859 Traceback (most recent call last):
File "c:\vnstudio\lib\site-packages\vnpy\app\portfolio_strategy\backtesting.py", line 192, in run_backtesting
self.new_bars(dt)
File "c:\vnstudio\lib\site-packages\vnpy\app\portfolio_strategy\backtesting.py", line 521, in new_bars
self.strategy.on_bars(bars)
File "C:\zwrk\vnpy\dev\amplitude_volatility_strategy.py", line 119, in on_bars
amplitude = (am.high() - am.low()) / am.open()
TypeError: 'numpy.ndarray' object is not callable

ArrayManager中有high函数呀,怎么回事?

from datetime import datetime
from typing import List, Dict, Tuple
from vnpy.trader.engine import BaseEngine, MainEngine, EventEngine
from vnpy.trader.constant import Interval, Exchange
from vnpy.trader.object import BarData, HistoryRequest
from vnpy.trader.database import database_manager, DB_TZ
from vnpy_datamanager import ManagerEngine
from vnpy.gateway.huobi import HuobiGateway
from vnpy.trader.utility import load_json
import pandas as pd
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(HuobiGateway)
# 连接到服务器
setting = load_json("connect_huobi.json")
main_engine.connect(setting, "HUOBI")
manager_engine=ManagerEngine(main_engine, event_engine)
start = datetime(2006,1,1)
symbol = 'ethusdt.HUOBI'
exchange=Exchange.HUOBI
interval=Interval.DAILY
data_length = manager_engine.download_bar_data(
    symbol=symbol,
    exchange=exchange,
    interval=interval,
    start=start,
)
print("finish! symbol=",symbol, "count=", data_length)

finish! symbol= ethusdt.HUOBI count= 0

我连接HUOBI接口了,但是还是没有下载数据呀?怎么回事?

from datetime import datetime
from importlib import reload
import vnpy.app.portfolio_strategy
reload(vnpy.app.portfolio_strategy)
from vnpy.app.portfolio_strategy import BacktestingEngine
from vnpy.trader.constant import Interval
import amplitude_volatility_strategy as avs
reload(avs)
from amplitude_volatility_strategy import AmplitudeVolatilityStrategy
import pandas as pd
def set_ratio(num):
    d = {}
    for i in vt_symbols:
        d[i] = num
    return d
path = 'instruments1.csv'
instruments_df = pd.read_csv(path)
vt_symbols = instruments_df['instrument_full'].to_list()

def show_result(strategy):
    engine = BacktestingEngine()
    rates = set_ratio(0)
    engine.set_parameters(
        vt_symbols=vt_symbols,
        interval=Interval.DAILY,
        start=datetime(2019, 1, 1),
        end=datetime(2021, 7, 8),
        rates=set_ratio(1/1000),
        slippages=set_ratio(0),
        sizes=set_ratio(1),
        priceticks=set_ratio(0.01),
        capital=30_000,
    )

    engine.add_strategy(strategy, {})
    engine.load_data()
    engine.run_backtesting()
    df = engine.calculate_result()
    engine.calculate_statistics()
    engine.show_chart()
show_result(AmplitudeVolatilityStrategy)

AttributeError Traceback (most recent call last)

<ipython-input-13-420dd1322ecb> in <module>
5 # "rebalance_days": 1
6 #}
----> 7 show_result(AmplitudeVolatilityStrategy)

<ipython-input-5-ecbf17cc2e5d> in show_result(strategy)
24 )
25
---> 26 engine.add_strategy(strategy, {})
27 engine.load_data()
28 engine.run_backtesting()
c:\vnstudio\lib\site-packages\vnpy\app\portfolio_strategy\backtesting.py in add_strategy(self, strategy_class, setting)
115 """"""
116 self.strategy = strategy_class(
--> 117 self, strategy_class.name, copy(self.vt_symbols), setting
118 )
119
C:\zwrk\vnpy\dev\amplitude_volatility_strategy.py in init(self, strategy_engine, strategy_name, vt_symbols, setting)
64 pass
65 self.bgs[vt_symbol] = BarGenerator(on_bar)
---> 66 self.ams[vt_symbol] = ArrayManager()
67
68 def on_init(self):
c:\vnstudio\lib\enum.py in getattr(cls, name)
346 return cls._membermap[name]
347 except KeyError:
--> 348 raise AttributeError(name) from None
349
350 def getitem(cls, name):
AttributeError: Day

怎么回事呀?

from datetime import datetime
from typing import List, Dict, Tuple
from vnpy.trader.engine import BaseEngine, MainEngine, EventEngine
from vnpy.trader.constant import Interval, Exchange
from vnpy.trader.object import BarData, HistoryRequest
from vnpy.trader.database import database_manager, DB_TZ
from vnpy_datamanager import ManagerEngine
event_engine = EventEngine()
main_engine = MainEngine()
manager_engine=ManagerEngine(main_engine, event_engine)
start = datetime(2006,1,1)
symbol="btcusdt"
exchange=Exchange.HUOBI
interval="d"
data_length = manager_engine.download_bar_data(
    symbol=symbol,
    exchange=exchange,
    interval=interval,
    start=start,
)
print("finish! symbol=",symbol, "count=", data_length)

finish! symbol= btcusdt count= 0

我先在VN Trader中连接成功HUOBI,在数据管理模块中可以下载数据,然后在notebook中运行以上代码,就出现这个提示,是怎么回事呀?

那数据管理中下载数字货币用的是什么函数呀?

from vnpy.app.script_trader import init_cli_trading
from vnpy.gateway.huobi import HuobiGateway
from vnpy.trader.utility import load_json
from vnpy.trader.constant import Interval
setting = load_json("connect_huobi.json")
engine = init_cli_trading([HuobiGateway])
engine.connect_gateway(setting, "HUOBI")

2021-08-27 20:39:48.637940 REST API启动成功
2021-08-27 20:39:49.042906 合约信息查询成功
2021-08-27 20:39:49.127875 行情Websocket API连接成功
2021-08-27 20:39:49.142181 交易Websocket API连接成功
2021-08-27 20:39:49.162548 账户代码139XXXX查询成功
2021-08-27 20:39:49.231638 交易Websocket API登录成功
2021-08-27 20:39:49.282983 委托信息查询成功

start = '20210701'
bars = engine.get_bars(
        vt_symbol="btcusdt.HUOBI",
        start_date=start,
        interval=Interval.DAILY,
        use_df=True)
bars

没有显示结果。为什么呀?

from vnpy.app.script_trader import init_cli_trading
from vnpy.gateway.huobi import HuobiGateway
from vnpy.trader.utility import load_json
from vnpy.trader.constant import Interval
setting = load_json("connect_huobi.json")
engine = init_cli_trading([HuobiGateway])
engine.connect_gateway(setting, "HUOBI")

2021-08-26 13:36:16.781738 REST API启动成功
2021-08-26 13:36:17.191048 合约信息查询成功
2021-08-26 13:36:17.288363 交易Websocket API连接成功
2021-08-26 13:36:17.307716 账户代码139XXXX查询成功
2021-08-26 13:36:17.378768 交易Websocket API登录成功
2021-08-26 13:36:17.401245 行情Websocket API连接成功
2021-08-26 13:36:17.423388 委托信息查询成功

# 查询历史行情
start = '2021-07-01'
bars = engine.get_bars(
        vt_symbol="BTCUSDT.HUOBI",
        start_date=start,
        interval=Interval.DAILY,
        use_df=True)
bars

[]
为什么是空呀?

`
from datetime import datetime

from typing import List, Dict, Tuple
from vnpy.trader.engine import BaseEngine, MainEngine, EventEngine
from vnpy.trader.constant import Interval, Exchange
from vnpy.trader.object import BarData, HistoryRequest
from vnpy.trader.database import database_manager
from vnpy.gateway.huobi import HuobiGateway
event_engine = EventEngine()
gateway = HuobiGateway(event_engine)
start = datetime(2006,1,1)
req = HistoryRequest(
symbol="btcusdt",#symbol,
exchange=Exchange.HUOBI,#exchange,
interval=Interval.DAILY,
start=start,
end=datetime.now()
)
data = gateway.query_history(req)
database_manager.save_bar_data(data)
print("finish! symbol=",symbol, "count=", len(data))
`

MissingSchema Traceback (most recent call last)
<ipython-input-6-3efca4eaf576> in <module>
14
15 #data = rqdata_client.query_history(req)
---> 16 data = gateway.query_history(req)#main_engine., "HUOBI"
17 database_manager.save_bar_data(data)
18
c:\vnstudio\lib\site-packages\vnpy\gateway\huobi\huobi_gateway.py in query_history(self, req)
149 def query_history(self, req: HistoryRequest):
150 """"""
--> 151 return self.rest_api.query_history(req)
152
153 def close(self) -> None:
c:\vnstudio\lib\site-packages\vnpy\gateway\huobi\huobi_gateway.py in query_history(self, req)
274 "GET",
275 "/market/history/kline",
--> 276 params=params
277 )
278
c:\vnstudio\lib\site-packages\vnpy\api\rest\rest_client.py in request(self, method, path, params, data, headers)
329 params=request.params,
330 data=request.data,
--> 331 proxies=self.proxies,
332 )
333 return response
c:\vnstudio\lib\site-packages\requests\api.py in request(method, url, kwargs)
59 # cases, and look like a memory leak in others.
60 with sessions.Session() as session:
---> 61 return session.request(method=method, url=url,
kwargs)
62
63
c:\vnstudio\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
526 hooks=hooks,
527 )
--> 528 prep = self.prepare_request(req)
529
530 proxies = proxies or {}
c:\vnstudio\lib\site-packages\requests\sessions.py in prepare_request(self, request)
464 auth=merge_setting(auth, self.auth),
465 cookies=merged_cookies,
--> 466 hooks=merge_hooks(request.hooks, self.hooks),
467 )
468 return p
c:\vnstudio\lib\site-packages\requests\models.py in prepare(self, method, url, headers, files, data, params, auth, cookies, hooks, json)
314
315 self.prepare_method(method)
--> 316 self.prepare_url(url, params)
317 self.prepare_headers(headers)
318 self.prepare_cookies(cookies)
c:\vnstudio\lib\site-packages\requests\models.py in prepare_url(self, url, params)
388 error = error.format(to_native_string(url, 'utf8'))
389
--> 390 raise MissingSchema(error)
391
392 if not host:
MissingSchema: Invalid URL '/market/history/kline': No schema supplied. Perhaps you meant http:///market/history/kline?

难道有bug?URL写错了吗?

谢谢,我试一下。

执行C:\Users\user\AppData\Local\Temp>pip-uninstall-f4_8p3um\vnstation.exe --user,再更新就成功了。

win10 vn station 2.4.8更新提示“部分包更新失败”,“更新失败:vnstation
b"ERROR: Could not install packages due to an OSError: [WinError 5] \xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3: 'C:\\Users\\user\\AppData\\Local\\Temp\\pip-uninstall-f4_8p3um\\vnstation.exe'\r\nConsider using the --user option or check the permissions.\r\n\r\n"” 怎么办?
description

谢谢,原因是分辨率设置为放大150%了,我改成125%就看到了。

win10 vn station 2.4.8更新看不到“更新”按钮,怎么办?
description

用Python的交易员 wrote:

  1. 你这个提示信息已经载入成功了
  2. 如果还有错误数据,那是因为你之前载入的数据不会自动消失
  3. 手动删除C:\users\administrator.vntrader\database.db试试吧
    我已经删除了database.db,再导入,也有导入成功的提示,但是在SQLite里查询,日期时间还是上面的错误。怎么回事呀?

我导入后提示信息是成功的呀。
enter image description here

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】