From aff15696112bd58c438deefcd8bf60c82b80697e Mon Sep 17 00:00:00 2001 From: baihou Date: Mon, 5 Aug 2019 20:02:09 +0800 Subject: [PATCH] fix EFI indicator --- finta/finta.py | 3 ++- tests/test_unit.py | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/finta/finta.py b/finta/finta.py index b1fc462..93a883e 100644 --- a/finta/finta.py +++ b/finta/finta.py @@ -1248,7 +1248,8 @@ def EFI(cls, ohlcv: DataFrame, period: int = 13) -> Series: """Elder's Force Index is an indicator that uses price and volume to assess the power behind a move or identify possible turning points.""" - fi = pd.Series((ohlcv["close"] - ohlcv["close"].diff()) * ohlcv["volume"]) + # https://tradingsim.com/blog/elders-force-index/ + fi = pd.Series(ohlcv["close"].diff() * ohlcv["volume"]) return pd.Series( fi.ewm(ignore_na=False, span=period).mean(), name="{0} period Force Index".format(period), diff --git a/tests/test_unit.py b/tests/test_unit.py index 5e7931b..dd6a8ec 100644 --- a/tests/test_unit.py +++ b/tests/test_unit.py @@ -537,7 +537,11 @@ def test_efi(): efi = TA.EFI(ohlc) assert isinstance(efi, series.Series) - assert efi.values[-1] == 6918216.7131493781 + assert efi.values[1] > 0 + assert efi.values[2] > 0 + + assert efi.values[-2] < 0 + assert efi.values[-1] < 0 def test_cfi():