psy没有在bt跟talib里,只能自己实现
class Psy(bt.Indicator):
lines = ('psy',)
params = (
('period', 20),
)
def __init__(self):
pass
def next(self):
if len(self.data) < self.p.period + 1:
self.l.psy[0] = 0
return
dif = np.zeros((self.p.period))
for i in range(-self.p.period + 1 , 1, 1):
dif[i] = self.data[i] - self.data[i - 1]
dif_count = np.sum(np.where(dif > 0, 1, 0))
self.l.psy[0] = dif_count / self.p.period * 100
。