init
This commit is contained in:
@@ -152,11 +152,16 @@ class Simulation (HTS):
|
||||
else:
|
||||
if method == "ml":
|
||||
LAST_DATA = self.stock2Vector.getLastData(stock_code, today, n=3)
|
||||
data = self.stock2Vector.getRealTime(stock_code, today, LAST_DATA)
|
||||
X, Y = self.stock2Vector.getVectorData(data)
|
||||
result = self.stock2Vector.getRealTime(stock_code, today, LAST_DATA)
|
||||
X, Y = self.stock2Vector.getVectorData(result)
|
||||
|
||||
predY = self.stockPredictor.predict(X, Y)
|
||||
bsLine = None
|
||||
predY = np.argmax(predY, axis=1)
|
||||
|
||||
# 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다.
|
||||
data = self.buySellChecker.analyze(result)
|
||||
# 사야 할 시점과 팔아야 할 시점을 체크한다.
|
||||
bsLine, data = self.buySellChecker.checkTransactionML(data, stock_code, predY, isRealTime=False)
|
||||
else:
|
||||
LAST_DATA = self.stock2Vector.getLastData(stock_code, today)
|
||||
result = self.stock2Vector.getRealTime(stock_code, today, LAST_DATA)
|
||||
|
||||
@@ -904,3 +904,52 @@ class BuySellChecker:
|
||||
bsLine['sell_weight'][i] = sell_weight
|
||||
|
||||
return bsLine, data
|
||||
|
||||
|
||||
def checkTransactionML(self, data, stock_code, predY, isRealTime=True):
|
||||
# 4일치 중에서 앞에 2일은 제거한다.
|
||||
date = data['date'].dt.date.unique().tolist()
|
||||
data = data[data['date'].dt.date != date[0]]
|
||||
data = data[data['date'].dt.date != date[1]]
|
||||
|
||||
# 어제 오늘 데이터로 분석
|
||||
bsLine = {}
|
||||
size = len(data["close"])
|
||||
if isRealTime:
|
||||
# isRealTime=True, 실시간 적용
|
||||
last_index = size - 1
|
||||
|
||||
# Type=False, 시뮬레이션 적용
|
||||
bsLine['buy'] = [-1 for i in range(size)]
|
||||
bsLine['buy_weight'] = [-1 for i in range(size)]
|
||||
bsLine['sell'] = [-1 for i in range(size)]
|
||||
bsLine['sell_weight'] = [-1 for i in range(size)]
|
||||
|
||||
sell, sell_weight, buy, buy_weight = -1, -1, -1, -1
|
||||
if predY[last_index] == 1:
|
||||
sell = int((data["open"][last_index] + data["close"][last_index]) / 2)
|
||||
sell_weight = 1
|
||||
elif predY[last_index] == 2:
|
||||
buy = int((data["open"][last_index] + data["close"][last_index]) / 2)
|
||||
buy_weight = 1
|
||||
|
||||
bsLine['buy'] = [buy]
|
||||
bsLine['buy_weight'] = [buy_weight]
|
||||
bsLine['sell'] = [sell]
|
||||
bsLine['sell_weight'] = [sell_weight]
|
||||
else:
|
||||
# Type=False, 시뮬레이션 적용
|
||||
bsLine['buy'] = [-1 for i in range(size)]
|
||||
bsLine['buy_weight'] = [-1 for i in range(size)]
|
||||
bsLine['sell'] = [-1 for i in range(size)]
|
||||
bsLine['sell_weight'] = [-1 for i in range(size)]
|
||||
|
||||
for i in range(size):
|
||||
if predY[i] == 1:
|
||||
bsLine['sell'][i] = int((data["open"][i] + data["close"][i]) / 2)
|
||||
bsLine['sell_weight'][i] = 1
|
||||
elif predY[i] == 2:
|
||||
bsLine['buy'][i] = int((data["open"][i] + data["close"][i]) / 2)
|
||||
bsLine['buy_weight'][i] = 1
|
||||
|
||||
return bsLine, data
|
||||
Reference in New Issue
Block a user