VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 11
声望: 0

日志内容如下:
21:20:47 开始计算逐日盯市盈亏
21:20:47 成交记录为空,无法计算
21:20:47 开始计算策略统计指标
21:20:47 策略统计指标计算完成
21:25:48 ----------------------------------------
21:25:48 开始加载历史数据
21:25:48 加载进度:# [0%]
21:25:48 加载进度:# [10%]
21:25:48 加载进度:## [19%]
21:25:48 加载进度:### [29%]
21:25:48 加载进度:#### [39%]
21:25:48 加载进度:##### [48%]
21:25:48 加载进度:###### [58%]
21:25:48 加载进度:####### [68%]
21:25:48 加载进度:######## [77%]
21:25:48 加载进度:######### [87%]
21:25:48 加载进度:########## [97%]
21:25:48 历史数据加载完成,数据量:3714
21:25:48 触发异常,回测终止
21:25:48 Traceback (most recent call last):
File "c:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 293, in run_backtesting
self.callback(data)
File "C:\Users\Administrator\strategies\课时03CTA策略.py", line 70, in on_bar
fast_ma=am.sma(self,fast_window,array=True)

NameError: name 'sel' is not defined

可是课时03 那个py文件的70行已经改成
fast_ma=am.sma(self.fast_window,array=True) 了 啊 并没有sel

谢谢哈

Member
avatar
加入于:
帖子: 11
声望: 0

on_bar 的代码
def on_bar(self,bar: BarData):
"""K线更新"""
am=self.am
am.update_bar(bar)#推送最新k线
if not am.inited: #如果K线初始化错误,返回
return

    #计算技术指标
    fast_ma=am.sma(self.fast_window,array=True)
    self.fast_ma0=fast_ma[-1]#python下标是从-1开始的 所以最新的均线是 -1
    self.fast_ma1=fast_ma[-2]

    slow_ma=am.sma(self.slow_window,array=True)
    self.slow_ma0=slow_ma[-1]#python下标是从-1开始的 所以最新的均线是 -1
    self.slow_ma1=slow_ma[-2]

    #判断均线交叉
    #金叉
    cross_over=(self.fast_ma0>=self.slow_ma0 and 
                self.fast_ma1<self.slow_ma1)
    #死叉
    cross_below=(self.fast_ma0<=self.slow_ma0 and
                  self.fast_ma1>self.slow_ma1)

    if cross_over:#如果金叉,没有仓位的话需要入场交易,价格为最新价格+5
        price=bar.close_price+5
        if not self.pos:#如果当前没有仓位,需要买
            self.buy(price,1)
        elif self.pos<0:#如果有仓位,而且是空头仓位
            self.cover(price,1)#平掉空头仓位
            self.buy(price,1)#开多头仓位

    elif cross_below:
        price=bar.close_price-5

        if not self.pos:
            self.short(price,1)#如果当前没有持仓 做空
        elif self.pos>0:
            self.sell(price,1)#如果持有多头仓位 需要先平多单
            self.short(price,1)
        #25分12秒  需要听一遍写死叉的注释


    #更新图形界面
    self.put_event()#通知图形界面刷新
    pass
Member
avatar
加入于:
帖子: 420
声望: 177

把策略的文件名称从 “课时03CTA策略.py” 改为英文的名称,如“fast_slow_ma.py"试试。

Member
avatar
加入于:
帖子: 11
声望: 0

谢谢哈

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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