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

杨大鑫 wrote:

大佬,现在最新版的vnpy目录下一直没找到no_ui这个目录啊

在examples目录下的no_ui

David wrote:

DataManager模块讲解的不够细致,csvload导入数据时还是报错,
Traceback (most recent call last):
File "C:\vnpy211_jqdata\vnpy\app\csv_loader\ui\widget.py", line 124, in load_data
datetime_format
File "C:\vnpy211_jqdata\vnpy\app\csv_loader\engine.py", line 138, in load
datetime_format=datetime_format,
File "C:\vnpy211_jqdata\vnpy\app\csv_loader\engine.py", line 80, in load_by_handle
dt = datetime.strptime(item[datetime_head], datetime_format)
KeyError: 'Datetime'

到底是什么问题啊 谢谢

注意表头大小写

用Python的交易员 wrote:

策略on_init函数中要调用load_bar来加载历史数据

版主,tick数据回测应该是调用load_tick()来加载历史数据
另外,可以参考KeKe的帖子:https://www.vnpy.com/forum/topic/1992-vn-pyshe-qu-jing-xuan-8-tickshu-ju-zai-ru-he-ce-lue-hui-ce

truego wrote:

通过
cta_engine.add_strategy(class_name='Test_1', strategy_name='DoubleMaStrategy', vt_symbol='ni2006.SHFE', setting={'class_name':'DoubleMaStrategy', 'fast_window':10,'slow_window':20})
添加策略的时候,提示创建策略失败,找不到策略类,请问策略类是什么?只能通过编辑cta_strategy_setting.json文件来添加策略吗?谢谢

兄弟,你把class_name和strategy_name写反了,策略类class_name是你开发的CTA策略,策略名strategy_name是策略实例可以很多个。
cta_engine.add_strategy(class_name='DoubleMaStrategy', strategy_name='Test_1', vt_symbol='ni2006.SHFE', setting=('fast_window':10,'slow_window':20})
可以参考我写的一篇教程:https://www.vnpy.com/forum/topic/2876-wu-jie-mian-mo-shi-yun-xing-ctace-lue-shi-xian-mo-ni-shi-pan-jiao-yi

Trader_ZCY wrote:

好酷啊,大兄弟。 有个问题想请教一下,假如某个策略在运行中挂掉了,那该咋办啊? 只能将全部策略全部停止,然后再运行 run.py吗?

可以使用这个命令cta_engine.stop_strategy(strategy_name),来停止挂掉的那个策略。

notomorrow wrote:

用Python的交易员 wrote:

notomorrow wrote:

description
我遇到了这个问题

请打开cmd,然后运行这句命令看看报错输出是什么:

c:\vnstudio\python.exe -m pip install --no-index -f C:\vnstudio\pkgs --force-reinstall pip setuptools

PS C:\vnstudio> python -m pip install --no-index -f c:/vnstudio/pkgs --force-reinst
all pip setuptools
Looking in links: c:/vnstudio/pkgs
Collecting pip
Collecting setuptools
Installing collected packages: pip, setuptools
Found existing installation: pip 19.1.1
Uninstalling pip-19.1.1:
Successfully uninstalled pip-19.1.1
Rolling back uninstall of pip
Moving to c:\users\youhongkai\appdata\roaming\python\python37\scripts\pip.exe
from C:\Users\YOUHON~1\AppData\Local\Temp\pip-uninstall-8k23yope\pip.exe
Moving to c:\users\youhongkai\appdata\roaming\python\python37\scripts\pip3.7.exe
from C:\Users\YOUHON~1\AppData\Local\Temp\pip-uninstall-8k23yope\pip3.7.exe
Moving to c:\users\youhongkai\appdata\roaming\python\python37\scripts\pip3.exe
from C:\Users\YOUHON~1\AppData\Local\Temp\pip-uninstall-8k23yope\pip3.exe
Moving to c:\users\youhongkai\appdata\roaming\python\python37\site-packages\pip-19.1.1.dist-info\
from c:\users\youhongkai\appdata\roaming\python\python37\site-packages~ip-19.1.1.dist-info
Moving to c:\users\youhongkai\appdata\roaming\python\python37\site-packages\pip\
from c:\users\youhongkai\appdata\roaming\python\python37\site-packages~ip
ERROR: Exception:
Traceback (most recent call last):
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_internal\cli\base_command.py", line 178, in main
status = self.run(options, args)
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_internal\commands\install.py", line 414, in run
use_user_site=options.use_user_site,
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_internal\req__init__.py", line 58, in install_given_reqs
**kwargs
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_internal\req\req_install.py", line 920, in install
use_user_site=use_user_site, pycompile=pycompile,
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_internal\req\req_install.py", line 448, in move_wheel_files
warn_script_location=warn_script_location,
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_internal\wheel.py", line 544, in move_wheel_files
generated.extend(maker.make(spec))
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_vendor\distlib\scripts.py", line 405, in make
self._make_script(entry, filenames, options=options)
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_vendor\distlib\scripts.py", line 309, in _make_script
self._write_script(scriptnames, shebang, script, filenames, ext)
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_vendor\distlib\scripts.py", line 245, in _write_script
launcher = self._get_launcher('t')
File "C:\Users\youhongkai\AppData\Roaming\Python\Python37\site-packages\pip_vendor\distlib\scripts.py", line 384, in _get_launcher
result = finder(distlib_package).find(name).bytes
AttributeError: 'NoneType' object has no attribute 'bytes'

试试我上面的方法

关掉所有打开的应用,然后点Retry,我昨天就是这么解决的,我的电脑也安装了Anaconda。

牛逼啊

非常感谢楼主分享,我的笔记本屏幕14寸,每次打开界面进行回测就很难正常显示。

对于新手,当然是通过VN Trader的界面操作是最直观和方便的,具体过程我就不做介绍了,入门系列教程讲的很详细。
如果想通过无界面启动模拟交易或者实盘交易,需要找到***\vnpy-2.1.1\examples\no_ui\文件夹下的run.py文件:

  1. 需要配置CTP、XTP或者其他接口的连接信息;
  2. 设置需要运行的CTA策略参数;
  3. run_child()子程序,在main_engine中增加相应接口;
  4. 创建CTA策略引擎;
  5. 创建自己的CTA策略;
  6. 初始化策略;
  7. 启动策略。

具体的示例如下:

import multiprocessing
from time import sleep
from datetime import datetime, time
from logging import INFO

from vnpy.event import EventEngine
from vnpy.trader.setting import SETTINGS
from vnpy.trader.engine import MainEngine

from vnpy.gateway.ctp import CtpGateway
from vnpy.gateway.xtp import XtpGateway
from vnpy.app.cta_strategy import CtaEngine
from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.app.cta_strategy.base import EVENT_CTA_LOG

SETTINGS["log.active"] = True
SETTINGS["log.level"] = INFO
SETTINGS["log.console"] = True

# CTP接口连接设置
ctp_setting = {
    "用户名": "161xxx",
    "密码": "****************",
    "经纪商代码": "9999",
    "交易服务器": "180.168.146.187:10101",
    "行情服务器": "180.168.146.187:10111",
    "产品名称": "simnow_client_test",
    "授权编码": "0000000000000000",
    "产品信息": ""
}

# XTP接口连接设置
xtp_setting = {
    "账号": "53191000xxx",
    "密码": "********",
    "客户号": "1",
    "行情地址": "120.27.164.138",
    "行情端口": "6002",
    "交易地址": "120.27.164.69",
    "交易端口": "6001",
    "行情协议": "TCP",
    "授权码": "*****************************************"
}

# CTA策略信息
class_name = "DemoMaStrategyCTP"
strategy_name = "DM_ru2009"
vt_symbol = "ru2009.SHFE"
"""
class_name = "DemoMaStrategy"
strategy_name = "DM_601990"
vt_symbol = "601990.SSE"
"""
strategy_setting = {
    "fast_window": 5,
    "slow_window": 10
}


def run_child():
    """
    Running in the child process.
    """
    SETTINGS["log.file"] = True

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    main_engine.add_gateway(XtpGateway)
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.write_log("主引擎创建成功")

    log_engine = main_engine.get_engine("log")
    event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)
    main_engine.write_log("注册日志事件监听")

    main_engine.connect(xtp_setting, "XTP")
    main_engine.write_log("连接XTP接口")

    main_engine.connect(ctp_setting, "CTP")
    main_engine.write_log("连接CTP接口")

    sleep(10)

    # 创建CTA策略引擎
    cta_engine = CtaEngine(main_engine, event_engine)

    # 初始化CTA策略引擎, 会依次调用init_rqdata(), load_strategy_class()等函数
    cta_engine.init_engine()

    # 创建属于我们自己的策略,首次创建成功后会将参数写入到C:\Users\Administrator\.vntrader文件夹下的cta_strategy_setting.json文件内
    if strategy_name not in cta_engine.strategies:
        main_engine.write_log(f"创建{strategy_name}策略")
        cta_engine.add_strategy(class_name, strategy_name, vt_symbol, strategy_setting)
    else:
        cta_engine.update_strategy_setting(strategy_name, strategy_setting)

    # 初始化刚创建的策略
    cta_engine.init_strategy(strategy_name)

    # 留有足够的时间来进行策略初始化
    sleep(10)

    # 启动刚创建的策略
    cta_engine.start_strategy(strategy_name)

    # cta_engine.init_all_strategies()

    # sleep(60)
    # main_engine.write_log("CTA策略全部初始化")

    # cta_engine.start_all_strategies()
    # main_engine.write_log("CTA策略全部启动")

    print("正在交易中...")

    while True:
        sleep(1)

我已经成功运行SimNow的CTP接口,采用最简单的双均线策略进行了ru2009的模拟交易测试,下单的情况与策略逻辑一致。
目前vnpy的XTP接口只支持期货期权等具有'开'、'平'、'平今'、'平昨'的买卖操作,暂不支持股票的下单操作,服务器会拒单。原因是股票下单的"开平"应该选择'空',而不是'开'或者其他,询问过版主,XTP接口需要升级后才支持,但是在VN Trader界面操作中可以通过下拉菜单选择'空'进行委托下单。

用Python的交易员 wrote:

我们2.1.2会增加多标的策略回测模块,到时候用这个来做

2.1.2大概什么时候可以正式发布啊?

昨天已经选择了平今,还是平不掉,我今天再试试

我安装的是2.1.1版本,我试着开仓做多rb2005,但是平仓的时候怎么都平不掉,一直是拒单,不知道是怎么回事?通过UI界面操作的。

我的simnow可以打开,顺利申请到账号,可以订阅行情信息的。我安装的是2.1.1版本,我试着开仓做多rb2005,但是平仓的时候怎么都平不掉,一直是拒单,不知道是怎么回事?通过UI界面操作的。

非常感谢,作为一个半路出家的量化交易员,同样经过调研后最后选择了VNPY,有了楼主的分享,我可以少走很多弯路和节省很多时间,再次跪谢!

确实是杀毒软件导致的,我刚刚在安装vnstudio-2.1.1时也出现安装失败,找到这里发现是杀毒软件问题,关闭了本地的火绒,点击Retry,顺利安装成功。

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

沪公网安备 31011502017034号

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