断言错误Pyalgotrad

2024-09-30 00:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用一个技术指标(随机),但我得到了一个断言错误:

self.__slow_stoch = stoch.StochasticOscillator(feed[instrument],self.__stoch, 3, self.__slow_d)

我使用pyalgotrade在python中运行一个交易策略。有什么办法解决这个问题吗?我试着为这个错误写了一个Try/Exception,但是没有运气…任何想法都非常感谢!在

^{2}$

代码:

    self.__stoch = stoch.StochasticOscillator(feed[instrument],5, dSMAPeriod=3, maxLen=1)
    slow_k = self.__stoch.getD()
    slow_d = ma.SMA(self.__stoch.getD(), 3)
    self.__slow_stoch = stoch.StochasticOscillator(feed[instrument],slow_k, dSMAPeriod=slow_d, maxLen=1)

错误消息:

Traceback (most recent call last):
  File "algov1.py", line 224, in <module>
    main()
  File "algov1.py", line 220, in main
    run_strategy(inst)
  File "algov1.py", line 212, in run_strategy
    myStrategy = MyStrategy(feed, inst)
  File "algov1.py", line 91, in __init__
    self.__slow_stoch = stoch.StochasticOscillator(feed[instrument],slow_k, dSMAPeriod=slow_d, maxLen=1)
  File "C:\Users\JDOG\Anaconda2\lib\site-packages\pyalgotrade\technical\stoch.py", line 90, in __init__
    technical.EventBasedFilter.__init__(self, barDataSeries, SOEventWindow(period, useAdjustedValues), maxLen)
  File "C:\Users\JDOG\Anaconda2\lib\site-packages\pyalgotrade\technical\stoch.py", line 55, in __init__
    technical.EventWindow.__init__(self, period, dtype=object)
  File "C:\Users\JDOG\Anaconda2\lib\site-packages\pyalgotrade\technical\__init__.py", line 41, in __init__
    assert(isinstance(windowSize, int))
AssertionError

Tags: inpyselfinitfeedlinefileslow
1条回答
网友
1楼 · 发布于 2024-09-30 00:36:41

这是StochasticOscillator的类定义。在

class StochasticOscillator(technical.EventBasedFilter):

    def __init__(self, barDataSeries, period, dSMAPeriod=3, useAdjustedValues=False, maxLen=dataseries.DEFAULT_MAX_LEN):
        assert dSMAPeriod > 1, "dSMAPeriod must be > 1"
        assert isinstance(barDataSeries, bards.BarDataSeries), \
            "barDataSeries must be a dataseries.bards.BarDataSeries instance"

        technical.EventBasedFilter.__init__(self, barDataSeries, SOEventWindow(period, useAdjustedValues), maxLen)
        self.__d = ma.SMA(self, dSMAPeriod, maxLen)

period和dSMAPeriod都是固定整数。在

当调用stochastic振荡器()时,Python将调用StochasticOscillator.__init__,自动创建并传入self,您将以正确的顺序和类型传入左侧参数。在

更新:

参见代码,使用dsmarioid计算D%,即K%的形状记忆合金。当dSMAPeriod为1时,D%等于K%。由于您确实希望将dSMAPeriod设置为1,所以可以传入dSMAPeriod=2,然后使用stoch本身。在

相关问题 更多 >

    热门问题