@@ -49,6 +49,18 @@ def _get_closing_price_list(self, on_date, num_days):
49
49
break
50
50
return closing_price_list
51
51
52
+ def _is_short_term_crossover_below_to_above (self , prev_short_term_ma ,
53
+ prev_long_term_ma ,
54
+ short_term_ma ,
55
+ long_term_ma ):
56
+ return prev_long_term_ma > prev_short_term_ma and long_term_ma < short_term_ma
57
+
58
+ def _is_short_term_crossover_above_to_below (self , prev_short_term_ma ,
59
+ prev_long_term_ma ,
60
+ short_term_ma ,
61
+ long_term_ma ):
62
+ return prev_long_term_ma < prev_short_term_ma and long_term_ma > short_term_ma
63
+
52
64
def get_crossover_signal (self , on_date ):
53
65
NUM_DAYS = self .LONG_TERM_TIMESPAN + 1
54
66
closing_price_list = self ._get_closing_price_list (on_date , NUM_DAYS )
@@ -70,10 +82,12 @@ def get_crossover_signal(self, on_date):
70
82
prev_short_term_ma = sum ([update .price
71
83
for update in prev_short_term_series ])/ self .SHORT_TERM_TIMESPAN
72
84
73
- if prev_long_term_ma > prev_short_term_ma and long_term_ma < short_term_ma :
85
+ if self ._is_short_term_crossover_below_to_above (prev_short_term_ma , prev_long_term_ma ,
86
+ short_term_ma , long_term_ma ):
74
87
return StockSignal .buy
75
88
76
- if prev_long_term_ma < prev_short_term_ma and long_term_ma > short_term_ma :
89
+ if self ._is_short_term_crossover_above_to_below (prev_short_term_ma , prev_long_term_ma ,
90
+ short_term_ma , long_term_ma ):
77
91
return StockSignal .sell
78
92
79
93
return StockSignal .neutral
0 commit comments