Skip to content

Commit c4f5d49

Browse files
committed
Update alligator.py
1 parent 5c332a7 commit c4f5d49

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

jesse/indicators/alligator.py

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
11
from collections import namedtuple
22
import numpy as np
3-
from scipy.signal import lfilter
3+
from numba import njit
44
from jesse.helpers import get_candle_source, np_shift, slice_candles
55

66
AG = namedtuple('AG', ['jaw', 'teeth', 'lips'])
77

88
def smma(source: np.ndarray, length: int) -> np.ndarray:
9-
alpha = 1 / length
10-
initial_value = np.mean(source[:length])
11-
smma, _ = lfilter([alpha], [1, -(1 - alpha)], source, zi=[initial_value * (1 - alpha)])
12-
return smma
9+
return _smma_numba(source, length)
10+
11+
@njit
12+
def _smma_numba(source, length):
13+
alpha = 1.0 / length
14+
total = 0.0
15+
for i in range(length):
16+
total += source[i]
17+
init_val = total / length
18+
N = len(source)
19+
result = np.empty(N, dtype=np.float64)
20+
result[0] = alpha * source[0] + (init_val * (1 - alpha))
21+
for i in range(1, N):
22+
result[i] = alpha * source[i] + (1 - alpha) * result[i-1]
23+
return result
1324

1425
def alligator(candles: np.ndarray, source_type: str = "hl2", sequential: bool = False) -> AG:
1526
candles = slice_candles(candles, sequential)

0 commit comments

Comments
 (0)