diff --git a/hts/BuySellChecker.py b/hts/BuySellChecker.py index ec89e7e..1905ef5 100644 --- a/hts/BuySellChecker.py +++ b/hts/BuySellChecker.py @@ -1006,8 +1006,7 @@ class BuySellChecker: bsLine['buy'][i] = buy bsLine['buy_weight'][i] = 10.0 - if not (data['avg120'][i - 1] < data['avg60'][i - 1] < data['avg20'][i - 1] < data['avg5'][i - 1]) and ( - data['avg120'][i] < data['avg60'][i] < data['avg20'][i] < data['avg5'][i]): + if not (data['avg120'][i - 1] < data['avg60'][i - 1] < data['avg20'][i - 1] < data['avg5'][i - 1]) and (data['avg120'][i] < data['avg60'][i] < data['avg20'][i] < data['avg5'][i]): buy = data['low'][i] data['buy'][i] = buy bsLine['buy'][i] = buy @@ -1116,19 +1115,16 @@ class BuySellChecker: ): check = False break - if check and 99 < sum(data['disparity_avg5'][i - 4:i + 1]) / 5 < 100 and 99 < sum( - data['disparity_avg60'][i - 4:i + 1]) / 5 < 100: - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 3.0 + if check and 99 < sum(data['disparity_avg5'][i - 4:i + 1]) / 5 < 100 and 99 < sum(data['disparity_avg60'][i - 4:i + 1]) / 5 < 100: + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 3.0 check = True for l in range(i - 2, i): - if ( - data['gradients_avg60'][l - 1] > data['gradients_avg60'][l] or - data['gradients_low'][l - 1] > data['gradients_low'][l] - ): + if (data['gradients_avg60'][l - 1] > data['gradients_avg60'][l] or data['gradients_low'][l - 1] > data['gradients_low'][l]): check = False break if ( @@ -1137,10 +1133,11 @@ class BuySellChecker: -0.0012 < data['gradients_avg60'][i] < 0 and 98.90 < data['disparity_avg5'][i] < 101 ): - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 5.0 + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 5.0 check = True for l in range(i - 6, i): @@ -1155,10 +1152,11 @@ class BuySellChecker: check = False break if check and 99 < min(data['disparity_avg5'][i - 6:i]) < max(data['disparity_avg5'][i - 6:i]) < 101: - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 5.0 + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 5.0 check = True for l in range(i - 3, i): @@ -1173,10 +1171,11 @@ class BuySellChecker: check = False break if check: - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 5.0 + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 5.0 if (data['disparity'][i] < 5 and 99.0 < data['disparity_avg60'][i] < 99.1 and -0.009 < data['gradients_avg60'][i] < -0.008 and 0.015 < data['gradients_avg20'][i] < 0.016 and @@ -1191,19 +1190,21 @@ class BuySellChecker: check = False break if check: - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 5.0 - - if data['macd'][i] < -4000: - if data['macd'][i - 1] < data['macd'][i]: - if not self.notBuy(data, i) and data['slow_k'][i] < 30: + if data['slow_k'][i] < 30: buy = data['low'][i] data['buy'][i] = buy bsLine['buy'][i] = buy bsLine['buy_weight'][i] = 5.0 + if data['macd'][i] < -4000: + if data['macd'][i - 1] < data['macd'][i]: + if not self.notBuy(data, i) and data['slow_k'][i] < 30: + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 5.0 + # macd 이전에 없던 바닥인 경우 상승할 찰나 매수 if data['macds'][i - 1] < min(data['macds'][:i - 1]): if data['macds'][i - 1] < data['macds'][i]: @@ -1221,22 +1222,25 @@ class BuySellChecker: data['slow_k'][i] < 11 ): if not self.notBuy(data, i): + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 5.0 + + if data['slow_k'][i] < 20 and data['slow_k'][i - 1] < data['slow_d'][i - 1] and data['slow_d'][i] < data['slow_k'][i]: + if data['slow_k'][i] < 30: buy = data['low'][i] data['buy'][i] = buy bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 5.0 - - if data['slow_k'][i] < 20 and data['slow_k'][i - 1] < data['slow_d'][i - 1] and data['slow_d'][i] < data['slow_k'][i]: - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 7.0 + bsLine['buy_weight'][i] = 7.0 if not (data['avg120'][i - 1] < data['avg60'][i - 1] < data['avg20'][i - 1] < data['avg5'][i - 1]) and (data['avg120'][i] < data['avg60'][i] < data['avg20'][i] < data['avg5'][i]): - buy = data['low'][i] - data['buy'][i] = buy - bsLine['buy'][i] = buy - bsLine['buy_weight'][i] = 10.0 + if data['slow_k'][i] < 30: + buy = data['low'][i] + data['buy'][i] = buy + bsLine['buy'][i] = buy + bsLine['buy_weight'][i] = 10.0 return bsLine, data