From 560ea9b18a16eb46f4721ddbe77ffb3bbb0949f5 Mon Sep 17 00:00:00 2001 From: Federico Rodriguez Date: Tue, 7 Jan 2025 19:07:09 -0300 Subject: [PATCH 1/2] return None when high is equal to low in IBS indicator --- talipp/indicators/IBS.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/talipp/indicators/IBS.py b/talipp/indicators/IBS.py index 24cd330b..0894c7ed 100644 --- a/talipp/indicators/IBS.py +++ b/talipp/indicators/IBS.py @@ -35,4 +35,4 @@ def _calculate_new_value(self) -> Any: return None candle: OHLCV = self.input_values[-1] - return (candle.close - candle.low) / (candle.high - candle.low) + return None if candle.high == candle.low else (candle.close - candle.low) / (candle.high - candle.low) From de9db765d166c3842939967c2e1b6d427ceed483 Mon Sep 17 00:00:00 2001 From: Federico Rodriguez Date: Wed, 8 Jan 2025 18:04:35 -0300 Subject: [PATCH 2/2] return None when divisor is 0 in UO --- talipp/indicators/UO.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/talipp/indicators/UO.py b/talipp/indicators/UO.py index c22bc57c..5816f3a0 100644 --- a/talipp/indicators/UO.py +++ b/talipp/indicators/UO.py @@ -58,8 +58,15 @@ def _calculate_new_value(self) -> Any: if not has_valid_values(self.buy_press, self.slow_period): return None - avg_fast = sum(self.buy_press[-self.fast_period:]) / float(sum(self.true_range[-self.fast_period:])) - avg_mid = sum(self.buy_press[-self.mid_period:]) / float(sum(self.true_range[-self.mid_period:])) - avg_slow = sum(self.buy_press[-self.slow_period:]) / float(sum(self.true_range[-self.slow_period:])) + fast_sum = sum(self.true_range[-self.fast_period:]) + mid_sum = sum(self.true_range[-self.mid_period:]) + slow_sum = sum(self.true_range[-self.slow_period:]) + + if fast_sum == 0 or mid_sum == 0 or slow_sum == 0: + return None + + avg_fast = sum(self.buy_press[-self.fast_period:]) / float(fast_sum) + avg_mid = sum(self.buy_press[-self.mid_period:]) / float(mid_sum) + avg_slow = sum(self.buy_press[-self.slow_period:]) / float(slow_sum) return 100.0 * (4.0 * avg_fast + 2.0 * avg_mid + avg_slow) / 7.0