Skip to content

Commit ba75cda

Browse files
committed
Add test for divergence indicator
1 parent 33b3b81 commit ba75cda

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

tests/indicators/test_divergence.py

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
from unittest import TestCase
2+
from pyindicators import is_divergence
3+
4+
import pandas as pd
5+
6+
class TestDetectDivergence(TestCase):
7+
8+
def test_detect_bearish_divergence_pandas(self):
9+
df = pd.DataFrame({
10+
"RSI_highs": [0, 0, 0, 0, 0, 0, 0, -1, 0, 0],
11+
"Close_highs": [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
12+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
13+
})
14+
15+
# Set index to DateTime
16+
df.set_index("DateTime", inplace=True)
17+
18+
self.assertFalse(is_divergence(df, window_size=2, number_of_data_points=2, column_one="RSI_highs", column_two="Close_highs"))
19+
self.assertTrue(is_divergence(df, window_size=2, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
20+
21+
df = pd.DataFrame({
22+
"RSI_highs": [0, 0, 0, 0, 0, 0, 0, -1, 0, 0],
23+
"Close_highs": [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
24+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
25+
})
26+
27+
# Set index to DateTime
28+
df.set_index("DateTime", inplace=True)
29+
self.assertFalse(is_divergence(df, window_size=10, number_of_data_points=1, column_one="RSI_highs", column_two="Close_highs"))
30+
31+
df = pd.DataFrame({
32+
"RSI_highs": [0, 1, 0, -1, 0, 0, 0, 0, 0, 0],
33+
"Close_highs": [0, 0, -1, 0, 0, 0, 0, 0, 0, 1],
34+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
35+
})
36+
37+
# Set index to DateTime
38+
df.set_index("DateTime", inplace=True)
39+
40+
self.assertFalse(is_divergence(df, window_size=6, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
41+
self.assertTrue(is_divergence(df, window_size=7, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
42+
43+
df = pd.DataFrame({
44+
"RSI_highs": [-1.0],
45+
"Close_highs": [1.0],
46+
"DateTime": pd.date_range("2021-01-01", periods=1, freq="D")
47+
})
48+
49+
# Set index to DateTime
50+
df.set_index("DateTime", inplace=True)
51+
52+
self.assertTrue(is_divergence(df, window_size=1, number_of_data_points=1, column_one="RSI_highs", column_two="Close_highs"))
53+
54+
def test_detect_bearish_sequence_with_wrong_params_pandas(self):
55+
56+
df = pd.DataFrame({
57+
"RSI_highs": [0, 1, 0, -1, 0, 0, 0, 0, -1, 0],
58+
"Close_highs": [0, 0, -1, 0, 0, 0, 0, 1, 0, 1],
59+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
60+
})
61+
62+
# Set index to DateTime
63+
df.set_index("DateTime", inplace=True)
64+
self.assertTrue(is_divergence(df, window_size=8, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
65+
self.assertFalse(is_divergence(df, window_size=8, number_of_data_points=1, column_one="RSI_highs", column_two="Close_highs"))
66+
67+
df = pd.DataFrame({
68+
"RSI_highs": [0, 0, 0, -1, 0, 0, 0, 0, 0, 0],
69+
"Close_highs": [0, 1, -1, 0, 0, 0, 0, 0, 0, 0],
70+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
71+
})
72+
self.assertFalse(is_divergence(df, window_size=6, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
73+
74+
df = pd.DataFrame({
75+
"RSI_highs": [0, 0, 0, -1, 0, 0, 0, 0, 0, 0],
76+
"Close_highs": [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
77+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
78+
})
79+
self.assertFalse(is_divergence(df, window_size=6, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
80+
81+
df = pd.DataFrame({
82+
"RSI_highs": [0, 0, 0, -1, 0, 0, 0, 0, 0, 0],
83+
"Close_highs": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
84+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
85+
})
86+
self.assertTrue(is_divergence(df, window_size=6, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
87+
88+
df = pd.DataFrame({
89+
"RSI_highs": [0, 0, 0, -1, 0, 0, 0, 0, 0, 0],
90+
"Close_highs": [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
91+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
92+
})
93+
self.assertTrue(is_divergence(df, window_size=1, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))
94+
95+
df = pd.DataFrame({
96+
"RSI_highs": [0, 0, 0, -1, 0, 0, 0, 0, 0, 0],
97+
"Close_highs": [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
98+
"DateTime": pd.date_range("2021-01-01", periods=10, freq="D")
99+
})
100+
self.assertFalse(is_divergence(df, window_size=1, number_of_data_points=10, column_one="RSI_highs", column_two="Close_highs"))

0 commit comments

Comments
 (0)