init
This commit is contained in:
@@ -14,7 +14,7 @@ class BuySellChecker:
|
||||
macd = None
|
||||
ichimokuCloud = None
|
||||
|
||||
buy_type = -1
|
||||
BUY_COUNT = None
|
||||
|
||||
def __init__(self):
|
||||
self.common = Common()
|
||||
@@ -23,8 +23,7 @@ class BuySellChecker:
|
||||
self.macd = MACD()
|
||||
self.ichimokuCloud = IchimokuCloud()
|
||||
|
||||
self.buy_type = -1
|
||||
|
||||
self.BUY_COUNT = 0
|
||||
return
|
||||
|
||||
|
||||
@@ -90,10 +89,23 @@ class BuySellChecker:
|
||||
break
|
||||
return inverse_arrangement
|
||||
|
||||
def checkUpDirection(self, data, i):
|
||||
# 0: 무추세, -1: 하락 추세, 1: 상승 추세
|
||||
close = data['close'][i]
|
||||
#up_count = sum([1 if data['high'][c] < close else 0 for c in range(i-20, i)])
|
||||
#down_count = sum([1 if close < data['low'][c] else 0 for c in range(i - 20, i)])
|
||||
|
||||
lagging_change = sum([1 if data['laggingSpan'][c] < data['changeLine'][c] else 0 for c in range(i-20, i)])
|
||||
change_lagging = sum([1 if data['laggingSpan'][c] > data['changeLine'][c] else 0 for c in range(i-20, i)])
|
||||
|
||||
if lagging_change>10:
|
||||
return 1
|
||||
if change_lagging==20:
|
||||
return -1
|
||||
return 0
|
||||
|
||||
def getBuyPriceAndWeight(self, data, i):
|
||||
type = -1
|
||||
buy, weight = min(data["open"][i], data["close"][i]), 1
|
||||
SLOW_K = 60
|
||||
buy, weight, type = -1, -1, -1
|
||||
|
||||
START_TIME_INDEX = 0
|
||||
for c in range(370, len(data.index)):
|
||||
@@ -104,81 +116,44 @@ class BuySellChecker:
|
||||
if i > START_TIME_INDEX:
|
||||
# 매수 분석
|
||||
|
||||
# 이전에 30분 동안 5분내 역배열이 있었던 경우, avg3이 avg20위로 올라온 경우 매수한다.
|
||||
if data['avg3'][i-1] <= data['avg20'][i-1] and data['avg3'][i] > data['avg20'][i]:
|
||||
if self.check_inverse_arrangement_before(data, i, 30, 5):
|
||||
if i > 381 + 70:
|
||||
if data['macdo'][i-1] < data['macdo'][i] and data['macdo'][i] < -10:
|
||||
buy = max(data["open"][i], data["close"][i])
|
||||
weight = 1
|
||||
type = 1
|
||||
return buy, weight, type
|
||||
else:
|
||||
if data['macdo'][i - 1] < data['macdo'][i] and data['macdo'][i] < -10:
|
||||
if -2 < data['macds'][381]:
|
||||
buy = max(data["open"][i], data["close"][i])
|
||||
weight = 1
|
||||
type = 1
|
||||
return buy, weight, type
|
||||
|
||||
if data['changeLine'][i - 1] <= data['baseLine'][i - 1] and data['baseLine'][i] < data['changeLine'][i]:
|
||||
changeLine_count = sum([1 if data['changeLine'][c] <= data['baseLine'][c] else 0 for c in range(i-30, i)])
|
||||
if changeLine_count >= 19 and data['slow_k'][i] < 70:
|
||||
buy = min(data["open"][i], data["close"][i])
|
||||
weight = 1
|
||||
type = 1
|
||||
return buy, weight, type
|
||||
|
||||
# 10시 이후
|
||||
if i > START_TIME_INDEX + 60:
|
||||
if data["macd"][i] < -10 and data["macd"][i - 1] < data["macd"][i]:
|
||||
if data["slow_k"][i] < 5 and data["slow_k"][i-1] < data["slow_k"][i]:
|
||||
if data["slow_k"][i] < 5 and data["slow_k"][i - 1] < data["slow_k"][i]:
|
||||
if data["rsi"][i] < 30 and data["rsi"][i - 1] < data["rsi"][i]:
|
||||
"""
|
||||
if i > 381 + 26:
|
||||
if data['laggingSpan'][i-1] < data['avg3'][i-1] and data['avg3'][i] < data['laggingSpan'][i]:
|
||||
if self.checkUpDirection(data, i) == 1:
|
||||
avg20_line = sum([1 if data['avg20'][c] < data['avg20'][c-1] else 0 for c in range(i - 10, i)])
|
||||
if avg20_line < 10:
|
||||
if data["macd"][i] < 0:
|
||||
buy = min(data["open"][i], data["close"][i])
|
||||
weight = 1
|
||||
type = 1
|
||||
return buy, weight, type
|
||||
|
||||
|
||||
# avg20이 10분동안 상승하고,현재 avg20이 open/close 사이에 있고, slow_k가 60보다 작으면 매수
|
||||
valid = True
|
||||
for c in range(i-9, i+1):
|
||||
if data["avg20"][c-1] > data["avg20"][c]:
|
||||
valid = False
|
||||
if valid:
|
||||
min_value = data["close"][i]
|
||||
max_value = data["open"][i]
|
||||
if data["open"][i] < data["close"][i]:
|
||||
min_value = data["open"][i]
|
||||
max_value = data["close"][i]
|
||||
|
||||
if min_value < data["avg20"][i] < max_value:
|
||||
if data["slow_k"][i] < SLOW_K:
|
||||
if not self.check_12_over_20_for_30(data, i):
|
||||
buy = min_value
|
||||
weight = 1
|
||||
type = 1
|
||||
return buy, weight, type
|
||||
|
||||
# 현재 slow_k가 60보다 작고, 최근 5분 동안 avg20이 다른 avg[3,6,9,12]의 최저값보다 큰 적이 없을 때,
|
||||
if data["slow_k"][i] < SLOW_K:
|
||||
valid = True
|
||||
for c in range(i-4, i+1):
|
||||
if min(data["avg3"][c], data["avg6"][c], data["avg9"][c], data["avg12"][c]) <= data["avg20"][c]:
|
||||
valid = False
|
||||
break
|
||||
if valid:
|
||||
valid = False
|
||||
# 최근 20분 동안 avg20이 다른 avg[3,6,9,12]의 최대값보다 큰 적이 있을 때,
|
||||
for c in range(i-19, i+1):
|
||||
if max(data["avg3"][c], data["avg6"][c], data["avg9"][c], data["avg12"][c]) < data["avg20"][c]:
|
||||
valid = True
|
||||
break
|
||||
if valid:
|
||||
if not self.check_12_over_20_for_30(data, i):
|
||||
buy = min(data["open"][i], data["close"][i])
|
||||
weight = 1
|
||||
type = 1
|
||||
return buy, weight, type
|
||||
|
||||
if (data['macdo'][i] >= 0 or
|
||||
data['avg3'][i-1] > data['avg3'][i] or
|
||||
data['avg3'][i] < max(data['avg6'][i], data['avg9'][i], data['avg12'][i], data['avg20'][i])):
|
||||
buy = -1
|
||||
weight = -1
|
||||
type = 0
|
||||
return buy, weight, type
|
||||
|
||||
|
||||
"""
|
||||
return buy, weight, type
|
||||
|
||||
def getSellPriceAndWeight(self, data, i):
|
||||
sell, weight, type = -1, -1, -1
|
||||
slow_k = 60
|
||||
|
||||
START_TIME_INDEX = 0
|
||||
for c in range(370, len(data.index)):
|
||||
@@ -189,302 +164,16 @@ class BuySellChecker:
|
||||
if i > START_TIME_INDEX:
|
||||
# 매도 분석
|
||||
|
||||
# 3분선이 10분 이상 6분선 위에 있다가 6분선 아래로 내려옴
|
||||
if i >= 381 + 10:
|
||||
vaild = True
|
||||
count = 0
|
||||
for c in range(i-10, i+1):
|
||||
if data["avg3"][c-1] == data["avg20"][c]:
|
||||
count += 1
|
||||
if data["avg3"][c-1] < data["avg20"][c]:
|
||||
vaild = False
|
||||
break
|
||||
if vaild and count < 3:
|
||||
if data["avg3"][i] < data["avg20"][i]:
|
||||
if data["slow_k"][i] > slow_k:
|
||||
sell = int(data["avg3"][i] - data["avg3"][i] % 5)
|
||||
weight = 1
|
||||
type = 1
|
||||
return sell, weight, type
|
||||
|
||||
# 12분선이 5분 이상 20분선 위에 있다가 20분선 아래로 내려옴
|
||||
if i >= 381 + 5:
|
||||
vaild = True
|
||||
for c in range(1, 6):
|
||||
if data["avg12"][i - c] < data["avg20"][i - c]:
|
||||
vaild = False
|
||||
break
|
||||
if vaild:
|
||||
if data["avg12"][i] < data["avg20"][i] and data["avg20"][i-1] < data["avg20"][i]:
|
||||
if data["slow_k"][i] > slow_k:
|
||||
sell = data["close"][i]
|
||||
weight = 1
|
||||
type = 1
|
||||
return sell, weight, type
|
||||
|
||||
if (not (data["avg20"][i-1] > max(data["avg3"][i-1], data["avg6"][i-1], data["avg9"][i-1], data["avg12"][i-1])) and
|
||||
(data["avg20"][i] > max(data["avg3"][i], data["avg6"][i], data["avg9"][i], data["avg12"][i]))):
|
||||
if data["slow_k"][i] > slow_k:
|
||||
sell = data["close"][i]
|
||||
if data['changeLine'][i - 1] >= data['laggingSpan'][i - 1] and data['laggingSpan'][i] < data['changeLine'][i]:
|
||||
changeLine_count = sum([1 if data['changeLine'][c] <= data['laggingSpan'][c] else 0 for c in range(i - 20, i)])
|
||||
if changeLine_count >= 17:
|
||||
sell = min(data["open"][i], data["close"][i])
|
||||
weight = 1
|
||||
type = 1
|
||||
return sell, weight, type
|
||||
|
||||
return sell, weight, type
|
||||
|
||||
|
||||
# 곱버스에 해당함
|
||||
def getBuyPriceAndWeight_252670(self, data, i):
|
||||
buy, weight, type = -1, -1, -1
|
||||
|
||||
START_TIME_INDEX = 0
|
||||
for c in range(370, len(data.index)):
|
||||
if data.index[c].strftime("%H:%M:%S") == "09:01:00":
|
||||
START_TIME_INDEX = c
|
||||
break
|
||||
|
||||
if i > START_TIME_INDEX:
|
||||
# 매수 분석
|
||||
|
||||
param = 1
|
||||
if (data["macd"][i] < -3.110935149 and data["macds"][i] < -2.370579802 and
|
||||
data["diff_avg27"][i] < -0.51457476*param and
|
||||
data["diff_avg3_avg54"][i] < -11.04578189 * param and
|
||||
|
||||
data["diff_avg6_avg27"][i] < -6.53755144 * param and
|
||||
data["diff_avg6_avg54"][i] < -9.518004115*param and
|
||||
|
||||
data["diff_avg9_avg27"][i] < -5.21244856 * param and
|
||||
data["diff_avg9_avg54"][i] < -8.192901235*param and
|
||||
|
||||
data["diff_open_lead1"][i] < -13.26157407*param and
|
||||
data["diff_close_lead1"][i] < -13.71064815*param and
|
||||
data["diff_high_lead1"][i] < -10.08564815*param and
|
||||
data["diff_low_lead1"][i] < -17.8912037*param and
|
||||
|
||||
data["abs_avg_1"][i] > 15.72655178 * param and
|
||||
29.0499289 - 22.02727828/3 < data["diff_upper_lower"][i] < 29.0499289*param + 22.02727828
|
||||
):
|
||||
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return buy, weight, type
|
||||
|
||||
return buy, weight, type
|
||||
|
||||
def getSellPriceAndWeight_252670(self, data, i):
|
||||
sell, weight, type = -1, -1, -1
|
||||
|
||||
START_TIME_INDEX = 0
|
||||
for c in range(370, len(data.index)):
|
||||
if data.index[c].strftime("%H:%M:%S") == "09:01:00":
|
||||
START_TIME_INDEX = c
|
||||
break
|
||||
|
||||
if i > START_TIME_INDEX:
|
||||
# 매도 분석
|
||||
|
||||
# 3분선이 10분 이상 6분선 위에 있다가 5분선 아래로 내려옴
|
||||
if i >= 381 + 10:
|
||||
vaild = True
|
||||
count = 0
|
||||
for c in range(1, 11):
|
||||
if data["avg3"][i - c] == data["avg6"][i - c]:
|
||||
count += 1
|
||||
if data["avg3"][i - c] < data["avg6"][i - c]:
|
||||
vaild = False
|
||||
break
|
||||
if vaild and count < 3:
|
||||
if data["avg3"][i] < data["avg6"][i]:
|
||||
sell = int(data["avg3"][i] - data["avg3"][i] % 5)
|
||||
weight = 1
|
||||
return sell, weight, type
|
||||
|
||||
# 3분선이 5분 이상 12분선 위에 있다가 12분선 아래로 내려옴
|
||||
if i >= 381 + 5:
|
||||
vaild = True
|
||||
for c in range(1, 6):
|
||||
if not (data["avg3"][i - c] >= data["avg6"][i - c] >= data["avg9"][i - c] >= data["avg12"][i - c]):
|
||||
vaild = False
|
||||
break
|
||||
if vaild:
|
||||
if data["avg3"][i] < data["avg12"][i]:
|
||||
sell = data["close"][i]
|
||||
weight = 1
|
||||
return sell, weight, type
|
||||
|
||||
return sell, weight, type
|
||||
|
||||
def getBuyPriceAndWeight_122630(self, data, i):
|
||||
buy, weight, type = -1, -1, -1
|
||||
|
||||
START_TIME_INDEX = 0
|
||||
for c in range(370, len(data.index)):
|
||||
if data.index[c].strftime("%H:%M:%S") == "09:01:00":
|
||||
START_TIME_INDEX = c
|
||||
break
|
||||
|
||||
if i > START_TIME_INDEX:
|
||||
# 매수 분석
|
||||
|
||||
param = 1
|
||||
if (data["macd"][i] < -8.532976905 and data["macds"][i] < -5.679850674 and data["abs_avg_1"][i] > 70.48701299 * param ):
|
||||
"""
|
||||
if (data["diff_avg27"][i] < -1.637205387 * param and
|
||||
|
||||
data["diff_avg3_avg27"][i] < -25.4455267 * param and
|
||||
data["diff_avg3_avg54"][i] < -31.55964406 * param and
|
||||
|
||||
data["diff_avg6_avg27"][i] < -17.45039683 * param and
|
||||
data["diff_avg6_avg54"][i] < -23.56451419 * param and
|
||||
|
||||
data["diff_avg9_avg27"][i] < -13.27020202 * param and
|
||||
data["diff_avg9_avg54"][i] < -19.38431938 * param and
|
||||
|
||||
data["diff_avg12_avg27"][i] < -10.42388167 * param and
|
||||
data["diff_avg12_avg54"][i] < -16.53799904 * param and
|
||||
|
||||
data["diff_change_lead1"][i] < -25.68993506 * param and
|
||||
data["diff_open_lead1"][i] < -37.53246753 * param and
|
||||
data["diff_close_lead1"][i] < -45.1461039 * param and
|
||||
data["diff_high_lead1"][i] < -30.03246753 * param and
|
||||
data["diff_low_lead1"][i] < -53.08441558 * param
|
||||
):
|
||||
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return buy, weight, type
|
||||
"""
|
||||
|
||||
if -30 < data["macd"][i] < -25:
|
||||
valid = True
|
||||
for c in range(1, 20):
|
||||
if data["macd"][i-c] < -30:
|
||||
valid = False
|
||||
break
|
||||
if valid:
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return buy, weight, type
|
||||
|
||||
previous_lowest_close = 99999999
|
||||
for c in range(10, 30):
|
||||
if data["close"][i-c] < previous_lowest_close:
|
||||
previous_lowest_close = data["close"][i-c]
|
||||
|
||||
if data["close"][i] > previous_lowest_close:
|
||||
valid = True
|
||||
for c in range(1, 20):
|
||||
if data["macd"][i-c] < -30:
|
||||
valid = False
|
||||
break
|
||||
if valid:
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return buy, weight, type
|
||||
|
||||
|
||||
if (data["avg54"][i-4] < data["avg54"][i-3] < data["avg54"][i-2] < data["avg54"][i-1] < data["avg54"][i] and
|
||||
data["avg54"][i] < min(data["avg3"][i], data["avg6"][i], data["avg9"][i], data["avg12"][i], data["avg27"][i]) and
|
||||
data["avg54"][i] < data["avg27"][i] < data["avg12"][i] < data["avg9"][i] < data["avg6"][i] < data["avg3"][i] and
|
||||
max(data["avg3"][i], data["avg6"][i], data["avg9"][i], data["avg12"][i], data["avg27"][i]) - min(data["avg3"][i], data["avg6"][i], data["avg9"][i], data["avg12"][i], data["avg27"][i]) < 5
|
||||
):
|
||||
buy = data["close"][i]
|
||||
weight = 1
|
||||
return buy, weight, type
|
||||
|
||||
|
||||
|
||||
if (data["avg54"][i-4] < data["avg54"][i-3] < data["avg54"][i-2] < data["avg54"][i-1] < data["avg54"][i] and
|
||||
data["avg54"][i-7] < data["avg3"][i-7] < data["avg6"][i-7] < data["avg9"][i-7] < data["avg12"][i-7] and
|
||||
data["avg54"][i] < data["avg12"][i] < data["avg9"][i] < data["avg6"][i] < data["avg3"][i]
|
||||
):
|
||||
if data['macd'][i] < -5:
|
||||
buy = data["close"][i]
|
||||
weight = 1
|
||||
return buy, weight, type
|
||||
|
||||
return buy, weight, type
|
||||
|
||||
|
||||
def getSellPriceAndWeight_122630(self, data, i):
|
||||
sell, weight, type = -1, -1, -1
|
||||
|
||||
START_TIME_INDEX = 0
|
||||
for c in range(370, len(data.index)):
|
||||
if data.index[c].strftime("%H:%M:%S") == "09:01:00":
|
||||
START_TIME_INDEX = c
|
||||
break
|
||||
|
||||
if i > START_TIME_INDEX:
|
||||
# 매수 분석
|
||||
|
||||
# 3분선이 10분 이상 6분선 위에 있다가 5분선 아래로 내려옴
|
||||
if i >= 381 + 10:
|
||||
vaild = True
|
||||
count = 0
|
||||
for c in range(1, 11):
|
||||
if data["avg3"][i - c] == data["avg6"][i - c]:
|
||||
count += 1
|
||||
if data["avg3"][i - c] < data["avg6"][i - c]:
|
||||
vaild = False
|
||||
break
|
||||
if vaild and count < 3:
|
||||
if data["avg3"][i] < data["avg6"][i]:
|
||||
sell = int(data["avg3"][i] - data["avg3"][i]%5)
|
||||
weight = 1
|
||||
return sell, weight, type
|
||||
|
||||
# 3분선이 5분 이상 12분선 위에 있다가 12분선 아래로 내려옴
|
||||
if i >= 381 + 5:
|
||||
vaild = True
|
||||
for c in range(1, 6):
|
||||
if not (data["avg3"][i - c] >= data["avg6"][i - c] >= data["avg9"][i - c] >= data["avg12"][i - c]):
|
||||
vaild = False
|
||||
break
|
||||
if vaild:
|
||||
if data["avg3"][i] < data["avg12"][i]:
|
||||
sell = data["close"][i]
|
||||
weight = 1
|
||||
return sell, weight, type
|
||||
|
||||
param = 2
|
||||
if (data["macd"][i] > 11.4590339 and
|
||||
data["diff_avg27"][i] > 2.261904762 * param and
|
||||
data["diff_avg3_avg27"][i] > 28.83730159 * param and
|
||||
data["diff_avg3_avg54"][i] > 40.84391534 * param and
|
||||
|
||||
data["diff_avg6_avg27"][i] > 22.49801587 * param and
|
||||
data["diff_avg6_avg54"][i] > 34.50462963 * param and
|
||||
|
||||
data["diff_avg9_avg27"][i] > 17.6984127 * param and
|
||||
data["diff_avg9_avg54"][i] > 29.70502646 * param and
|
||||
|
||||
data["diff_avg12_avg27"][i] > 13.59920635 * param and
|
||||
data["diff_avg12_avg54"][i] > 25.60582011 * param and
|
||||
|
||||
data["diff_change_lead1"][i] > 40.82142857 * param and
|
||||
data["diff_open_lead1"][i] > 53.48214286 * param and
|
||||
data["diff_close_lead1"][i] > 58.23214286 * param and
|
||||
data["diff_high_lead1"][i] > 63.125 * param and
|
||||
data["diff_low_lead1"][i] > 49.41071429 * param and
|
||||
|
||||
data["diff_upper_lower"][i] < 70.63330362 * param + 124.7189534 / 3 and
|
||||
data["diff_change_base"][i] > 16.73214286 * param and
|
||||
|
||||
data["diff_avg3"][i] > 4.714285714 * param and
|
||||
data["diff_avg6"][i] > 3.857142857 * param and
|
||||
data["diff_avg9"][i] > 3.373015873 * param and
|
||||
data["diff_avg12"][i] > 3.026785714 * param and
|
||||
data["diff_avg27"][i] > 2.261904762 * param and
|
||||
data["diff_avg54"][i] > 1.18452381 * param
|
||||
):
|
||||
sell = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return sell, weight, type
|
||||
|
||||
return sell, weight, type
|
||||
|
||||
def analyze(self, result):
|
||||
# 기본 캔들 정보
|
||||
open = result["open"]
|
||||
@@ -551,6 +240,7 @@ class BuySellChecker:
|
||||
ichimokuCloud_df = ichimokuCloud_df[:len(ichimokuCloud_df) - 51]
|
||||
changeLine = ichimokuCloud_df['changeLine'].values.tolist()
|
||||
baseLine = ichimokuCloud_df['baseLine'].values.tolist()
|
||||
laggingSpan = ichimokuCloud_df['laggingSpan'].values.tolist()
|
||||
leadingSpan1 = ichimokuCloud_df['leadingSpan1'].values.tolist()
|
||||
leadingSpan2 = ichimokuCloud_df['leadingSpan2'].values.tolist()
|
||||
|
||||
@@ -563,7 +253,7 @@ class BuySellChecker:
|
||||
"macd": macd, "macds": macds, "macdo": macdo,
|
||||
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d,
|
||||
"rsi": rsi, "rsis": rsis,
|
||||
"changeLine": changeLine, "baseLine": baseLine, "leadingSpan1": leadingSpan1, "leadingSpan2": leadingSpan2,
|
||||
"changeLine": changeLine, "baseLine": baseLine, "laggingSpan": laggingSpan, "leadingSpan1": leadingSpan1, "leadingSpan2": leadingSpan2,
|
||||
|
||||
"label": label
|
||||
}
|
||||
@@ -982,20 +672,19 @@ class BuySellChecker:
|
||||
buy, buy_weight, buy_type = self.getBuyPriceAndWeight(data, last_index)
|
||||
sell, sell_weight, sell_type = self.getSellPriceAndWeight(data, last_index)
|
||||
|
||||
if buy_type == 1:
|
||||
self.buy_type = 1
|
||||
if buy_type == 0 or sell_type == 1:
|
||||
self.buy_type = -1
|
||||
|
||||
if self.buy_type == 1:
|
||||
bsLine['buy'] = [buy]
|
||||
bsLine['buy_weight'] = [buy_weight]
|
||||
else:
|
||||
bsLine['buy'] = [-1]
|
||||
bsLine['buy_weight'] = [-1]
|
||||
if buy > -1 or self.BUY_COUNT == 1:
|
||||
if buy == -1 or self.BUY_COUNT == 1:
|
||||
buy = min(data['open'][last_index], data['close'][last_index])
|
||||
buy_weight = 1
|
||||
self.BUY_COUNT += 1
|
||||
|
||||
bsLine['buy'] = [buy]
|
||||
bsLine['buy_weight'] = [buy_weight]
|
||||
bsLine['sell'] = [sell]
|
||||
bsLine['sell_weight'] = [sell_weight]
|
||||
|
||||
if self.BUY_COUNT > 1:
|
||||
self.BUY_COUNT = 0
|
||||
else:
|
||||
# Type=False, 시뮬레이션 적용
|
||||
bsLine['buy'] = [-1 for i in range(size)]
|
||||
@@ -1007,21 +696,20 @@ class BuySellChecker:
|
||||
buy, buy_weight, buy_type = self.getBuyPriceAndWeight(data, i)
|
||||
sell, sell_weight, sell_type = self.getSellPriceAndWeight(data, i)
|
||||
|
||||
if buy_type == 1:
|
||||
self.buy_type = 1
|
||||
if buy_type == 0 or sell_type == 1:
|
||||
self.buy_type = -1
|
||||
|
||||
if self.buy_type == 1:
|
||||
bsLine['buy'][i] = buy
|
||||
bsLine['buy_weight'][i] = buy_weight
|
||||
else:
|
||||
bsLine['buy'][i] = -1
|
||||
bsLine['buy_weight'][i] = -1
|
||||
if buy > -1 or self.BUY_COUNT == 1:
|
||||
if buy == -1 or self.BUY_COUNT == 1:
|
||||
buy = data['low'][i]
|
||||
buy_weight = 1
|
||||
self.BUY_COUNT += 1
|
||||
|
||||
bsLine['buy'][i] = buy
|
||||
bsLine['buy_weight'][i] = buy_weight
|
||||
bsLine['sell'][i] = sell
|
||||
bsLine['sell_weight'][i] = sell_weight
|
||||
|
||||
if self.BUY_COUNT > 1:
|
||||
self.BUY_COUNT = 0
|
||||
|
||||
return bsLine, data
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user