运行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]