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

运行CincoStrategy,发现boll_up和boll_down的值始终相等的,加入am.std函数测试发现返回值始终是0。
am.boll调用std函数,但是只传入2个参数,std函数原型里面有3个参数。

def boll(
self,
n: int,
dev: float,
array: bool = False
) -> Union[
Tuple[np.ndarray, np.ndarray],
Tuple[float, float]
]:
"""
Bollinger Channel.
"""
mid = self.sma(n, array)
std = self.std(n,array)

    up = mid + std * dev
    down = mid - std * dev

    return up, down

def std(self, n: int, nbdev: int = 1, array: bool = False) -> Union[float, np.ndarray]:
    """
    Standard deviation.
    """
    result = talib.STDDEV(self.close, n, nbdev)
    if array:
        return result
    return result[-1]

加了这么多put_event 还是不好使,一开仓行情就不调动了。

def on_bar(self, bar: BarData):
    """
    Callback of new bar data update.
    """
    self.cancel_all()

    if self.day_open == 0:
        self.day_open = bar.open_price
    self.range = self.last_high - self.last_low
    self.long_entry = self.day_open + self.k1 * self.range
    self.short_entry = self.day_open - self.k2 * self.range

    if not self.range:
        return

    if bar.datetime.time() < self.exit_time:
        if self.pos == 0:
            if bar.close_price > self.day_open:
                if not self.long_entered:
                    self.buy(self.long_entry, self.fixed_size, stop=True)
            else:
                if not self.short_entered:
                    self.short(self.short_entry,
                               self.fixed_size, stop=True)
        elif self.pos > 0:
            self.long_entered = True

            self.sell(self.short_entry, self.fixed_size, stop=True)

            if not self.short_entered:
                self.short(self.short_entry, self.fixed_size, stop=True)

        elif self.pos < 0:
            self.short_entered = True

            self.cover(self.long_entry, self.fixed_size, stop=True)

            if not self.long_entered:
                self.buy(self.long_entry, self.fixed_size, stop=True)
        self.put_event()

        if self.pos > 0:
            if bar.close_price > self.long_entry * (1+self.stop_win):
                self.sell(bar.close_price-1, self.fixed_size)  # stop win
            if bar.close_price < self.long_entry * (1-self.stop_loss):
                self.sell(bar.close_price-1, self.fixed_size)  # stop loss
        if self.pos < 0:
             if bar.close_price < self.short_entry * (1-self.stop_win):
                self.cover(bar.close_price+1, self.fixed_size)  # stop win
             if bar.close_price > self.short_entry * (1 + self.stop_loss):
                self.cover(bar.close_price+1, self.fixed_size)  # stop win
        self.put_event()

    else: 
        if self.pos > 0:
            self.sell(bar.close_price-1, abs(self.pos))
        elif self.pos < 0:
            self.cover(bar.close_price+1, abs(self.pos))

    self.put_event()

我发现程序开仓之后,cta_strategy_data.json文件中的pos变量会变成1或-1,但是vntrader界面显示还是0,界面上的行情也从此时开始不再跳动,看起来像死机。

删除重启还是遇到同样的情况。

用的CTP借口,联想的笔记本,电信家庭宽带,换了一台台式机也是同样的情况。
description

description

1)每次点击功能->CTA策略都会报错,需要将VN trader启动配置的文件夹删除重建之后才能够正常启动。

2)运行dual thrust 策略,下单成交之后,行情窗口行情停止跳动,好像是不再接收行情了。

self.pos 会读取前一交易日未平掉的仓位吗?

v2.0.2和v2.0.3都出现这样的问题,点击连接CTP,输入账户和前置信息之后,点击连接无反应,再次点击即闪退,多次操作都是这样。

运行from vnpy.app.cta_strategy.backtesting import BacktestingEngine报错:

ImportError Traceback (most recent call last)

<ipython-input-9-79b5173e5e8e> in <module>
----> 1 from vnpy.app.cta_strategy.backtesting import BacktestingEngine

f:\vnconda\lib\site-packages\vnpy\app\cta_strategy\backtesting.py in <module>
7 import numpy as np
8 import matplotlib.pyplot as plt
----> 9 import seaborn as sns
10 from pandas import DataFrame
11

f:\vnconda\lib\site-packages\seaborn__init__.py in <module>
4
5 # Import seaborn objects
----> 6 from .rcmod import
7 from .utils import

8 from .palettes import *

f:\vnconda\lib\site-packages\seaborn\rcmod.py in <module>
3 import functools
4 import matplotlib as mpl
----> 5 from . import palettes, _orig_rc_params
6
7

f:\vnconda\lib\site-packages\seaborn\palettes.py in <module>
10 from .external.six.moves import range
11
---> 12 from .utils import desaturate, set_hls_values, get_color_cycle
13 from .colors import xkcd_rgb, crayons
14

f:\vnconda\lib\site-packages\seaborn\utils.py in <module>
5
6 import numpy as np
----> 7 from scipy import stats
8 import pandas as pd
9 import matplotlib as mpl

f:\vnconda\lib\site-packages\scipy\stats__init.py in <module>
365 from
future__ import division, print_function, absolute_import
366
--> 367 from .stats import
368 from .distributions import

369 from .morestats import *

f:\vnconda\lib\site-packages\scipy\stats\stats.py in <module>
170 from scipy._lib._version import NumpyVersion
171 from scipy._lib._util import _lazywhere
--> 172 import scipy.special as special
173 from . import distributions
174 from . import mstats_basic

f:\vnconda\lib\site-packages\scipy\special__init__.py in <module>
641 from ._ufuncs import
642
--> 643 from .basic import

644 from ._logsumexp import logsumexp, softmax
645 from . import specfun

f:\vnconda\lib\site-packages\scipy\special\basic.py in <module>
16 psi, _zeta, hankel1, hankel2, yv, kv, ndtri,
17 poch, binom, hyp0f1)
---> 18 from . import specfun
19 from . import orthogonal
20 from ._comb import _comb_int

ImportError: DLL load failed: 找不到指定的模块。

请问BarGenerator和 ArrayManager 这两个方法的定义在哪里?找了半天没找到,这两个是不是自动生成K线的方法

哦,要加交易所后缀

连接CTP登陆成功,初始化策略报错:订阅行情失败,找不到合约m1909. 是还需要在什么地方订阅合约行情吗?

description

搞定了,从2.0.1升级成功,之前是从2.0升级报错

就是在VNConda的Scripts目录下运行pip报错

穿透式监管测试是否只需要替换VNConda\Lib\site-packages\vnpy\api\ctp 目录下两个dll文件,然后用期货公司给的账号登陆就可以了?接口头文件需要替换吗?在哪里替换

运行 pip install https://pip.vnpy.com/vnpy/vnpy-2.0.2.tar.gz 报错 no matching distribution found for ibapi(from vnpy = 2.02)

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

沪公网安备 31011502017034号

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