init
This commit is contained in:
@@ -125,7 +125,7 @@ class HTS_252670 (HTS):
|
|||||||
# 미체결 기록을 가져온다.
|
# 미체결 기록을 가져온다.
|
||||||
ORDER_LIST = self.requestOrderList()
|
ORDER_LIST = self.requestOrderList()
|
||||||
# 매도 주문을 기록을 가져온다.
|
# 매도 주문을 기록을 가져온다.
|
||||||
orderListToCancel = self.orderChecker.remove(self.stock_code, OrderType.sell, ORDER_LIST)
|
orderListToCancel = self.orderChecker.delete(self.stock_code, OrderType.sell, ORDER_LIST)
|
||||||
# 매도 미체결을 모두 취소한다.
|
# 매도 미체결을 모두 취소한다.
|
||||||
self.cancelOrderList(orderListToCancel)
|
self.cancelOrderList(orderListToCancel)
|
||||||
|
|
||||||
|
|||||||
@@ -38,9 +38,9 @@ class Simulation (HTS):
|
|||||||
|
|
||||||
# 어제 데이터는 지운다.
|
# 어제 데이터는 지운다.
|
||||||
data = data.loc[pd.DatetimeIndex(data.index).day == int(given_day[6:])]
|
data = data.loc[pd.DatetimeIndex(data.index).day == int(given_day[6:])]
|
||||||
buy_line = bsLine['buy'][381:]
|
buy_line = bsLine['buy'][len(bsLine['buy'])-len(data):]
|
||||||
buy_weight_line = bsLine['buy_weight'][381:]
|
buy_weight_line = bsLine['buy_weight'][len(bsLine['buy'])-len(data):]
|
||||||
sell_line = bsLine['sell'][381:]
|
sell_line = bsLine['sell'][len(bsLine['buy'])-len(data):]
|
||||||
|
|
||||||
# 그래프 설정을 위한 변수를 생성한다.
|
# 그래프 설정을 위한 변수를 생성한다.
|
||||||
data = data.astype({'open': 'int',
|
data = data.astype({'open': 'int',
|
||||||
@@ -48,11 +48,11 @@ class Simulation (HTS):
|
|||||||
'low': 'int',
|
'low': 'int',
|
||||||
'close': 'int',
|
'close': 'int',
|
||||||
'volume': 'int',
|
'volume': 'int',
|
||||||
'avg3': 'float',
|
'avg5': 'float',
|
||||||
'avg6': 'float',
|
|
||||||
'avg9': 'float',
|
|
||||||
'avg12': 'float',
|
|
||||||
'avg20': 'float',
|
'avg20': 'float',
|
||||||
|
'avg30': 'float',
|
||||||
|
'avg60': 'float',
|
||||||
|
'avg120': 'float',
|
||||||
'fast_k': 'float',
|
'fast_k': 'float',
|
||||||
'slow_k': 'float',
|
'slow_k': 'float',
|
||||||
'slow_d': 'float',
|
'slow_d': 'float',
|
||||||
@@ -84,11 +84,11 @@ class Simulation (HTS):
|
|||||||
sell_check = go.Scatter(x=data['date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0))
|
sell_check = go.Scatter(x=data['date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0))
|
||||||
upper = go.Scatter(x=data['date'], y=data["upper"], name="upper", line_color='#000000')
|
upper = go.Scatter(x=data['date'], y=data["upper"], name="upper", line_color='#000000')
|
||||||
lower = go.Scatter(x=data['date'], y=data["lower"], name="lower", line_color='#000000')
|
lower = go.Scatter(x=data['date'], y=data["lower"], name="lower", line_color='#000000')
|
||||||
avg3 = go.Scatter(x=data['date'], y=data["avg3"], name="avg3", line_color='#8F8203')
|
avg5 = go.Scatter(x=data['date'], y=data["avg5"], name="avg5", line_color='#8F8203')
|
||||||
avg6 = go.Scatter(x=data['date'], y=data["avg6"], name="avg6", line_color='#089B5B')
|
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#089B5B')
|
||||||
avg9 = go.Scatter(x=data['date'], y=data["avg9"], name="avg9", line_color='#ff00ff')
|
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#ff00ff')
|
||||||
avg12 = go.Scatter(x=data['date'], y=data["avg12"], name="avg12", line_color='#1469F4')
|
avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#1469F4')
|
||||||
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#000000')
|
avg120 = go.Scatter(x=data['date'], y=data["avg120"], name="avg120", line_color='#000000')
|
||||||
laggingSpan = go.Scatter(x=data['date'], y=data["laggingSpan"], name='laggingSpan', line_color='#B50ABB')
|
laggingSpan = go.Scatter(x=data['date'], y=data["laggingSpan"], name='laggingSpan', line_color='#B50ABB')
|
||||||
changeLine = go.Scatter(x=data['date'], y=data["changeLine"], name='changeLine', line_color='#14A200')
|
changeLine = go.Scatter(x=data['date'], y=data["changeLine"], name='changeLine', line_color='#14A200')
|
||||||
baseLine = go.Scatter(x=data['date'], y=data["baseLine"], name='baseLine', line_color='#CF6E0D')
|
baseLine = go.Scatter(x=data['date'], y=data["baseLine"], name='baseLine', line_color='#CF6E0D')
|
||||||
@@ -114,7 +114,7 @@ class Simulation (HTS):
|
|||||||
rsi_line = go.Scatter(x=data['date'], y=data["rsi"], line=dict(color='red', width=2), name='rsi')
|
rsi_line = go.Scatter(x=data['date'], y=data["rsi"], line=dict(color='red', width=2), name='rsi')
|
||||||
rsis_line = go.Scatter(x=data['date'], y=data["rsis"], line=dict(dash='dashdot', color='black', width=2), name='rsis')
|
rsis_line = go.Scatter(x=data['date'], y=data["rsis"], line=dict(dash='dashdot', color='black', width=2), name='rsis')
|
||||||
|
|
||||||
candle_data = [candle_stick, upper, lower, avg3, avg6, avg9, avg12, avg20, buy_check, sell_check, laggingSpan, changeLine, baseLine]
|
candle_data = [candle_stick, upper, lower, avg5, avg20, avg30, avg60, avg120, buy_check, sell_check, laggingSpan, changeLine, baseLine]
|
||||||
volume_data = [volume_line]
|
volume_data = [volume_line]
|
||||||
disparity_data = [disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120]
|
disparity_data = [disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120]
|
||||||
macd_data = [macd_line, macd_s_line, macd_o_line]
|
macd_data = [macd_line, macd_s_line, macd_o_line]
|
||||||
@@ -174,30 +174,41 @@ class Simulation (HTS):
|
|||||||
"label": []}
|
"label": []}
|
||||||
|
|
||||||
for i in range(mins, len(data['time'])+1):
|
for i in range(mins, len(data['time'])+1):
|
||||||
result["check"].add(data['time'][i])
|
result["check"].add(data['time'][i-1])
|
||||||
result["time"].append(data['time'][i])
|
result["time"].append(data['time'][i-1])
|
||||||
|
|
||||||
result["open"].append(data['open'][i-mins])
|
result["open"].append(data['open'][i-mins])
|
||||||
result["close"].append(data['close'][i-1])
|
result["close"].append(data['close'][i-1])
|
||||||
result["high"].append(max(data['high'][i - 30: i]))
|
result["high"].append(max(data['high'][i - mins: i]))
|
||||||
result["low"].append(min(data['low'][i - 30: i]))
|
result["low"].append(min(data['low'][i - mins: i]))
|
||||||
result["vol"].append(sum(data[i - 30: i]))
|
result["vol"].append(sum(data['vol'][i - mins: i]))
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def simulate(self, stock_codes:dict=None):
|
def simulate(self, stock_codes:dict=None, analyzed_day=1000):
|
||||||
|
|
||||||
if stock_codes is not None:
|
if stock_codes is not None:
|
||||||
for stock_code in stock_codes:
|
for stock_code in stock_codes:
|
||||||
for given_day in stock_codes[stock_code]:
|
for given_day in stock_codes[stock_code]:
|
||||||
LAST_DATA = self.stock2Vector.getLastData(stock_code, given_day)
|
LAST_DATA = self.stock2Vector.getLastData(stock_code, given_day)
|
||||||
result = self.stock2Vector.getRealTime(stock_code, given_day, LAST_DATA)
|
result = self.stock2Vector.getRealTime(stock_code, given_day, LAST_DATA)
|
||||||
result_30 = self.makeTickData(result, min=30)
|
result_5 = self.makeTickData(result, mins=5)
|
||||||
|
result_30 = self.makeTickData(result, mins=30)
|
||||||
|
|
||||||
|
data = self.buySellChecker.analyze(result)
|
||||||
|
data.drop(data.index[:len(data) - analyzed_day], inplace=True)
|
||||||
|
|
||||||
# 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다.
|
# 이동평균, RSI, MACD, 일목균형, 볼린저밴드 상/하단을 계산한다.
|
||||||
data1 = self.buySellChecker.analyze(result)
|
data_5 = self.buySellChecker.analyze(result_5)
|
||||||
|
# 분석일 데이터만 활용한다 (이전 데이터는 제거)
|
||||||
|
data_5.drop(data_5.index[:len(data_5) - analyzed_day], inplace=True)
|
||||||
|
|
||||||
|
data_30 = self.buySellChecker.analyze(result_30)
|
||||||
|
# 분석일 데이터만 활용한다 (이전 데이터는 제거)
|
||||||
|
data_30.drop(data_30.index[:len(data_30) - analyzed_day], inplace=True)
|
||||||
|
|
||||||
# 사야 할 시점과 팔아야 할 시점을 체크한다.
|
# 사야 할 시점과 팔아야 할 시점을 체크한다.
|
||||||
bsLine, data = self.buySellChecker.checkTransaction(data, stock_code, isRealTime=False)
|
bsLine = self.buySellChecker.checkTransaction(stock_code, data, data_5, data_30, isRealTime=False)
|
||||||
|
|
||||||
# 그래프를 그린다.
|
# 그래프를 그린다.
|
||||||
self.draw(stock_code, given_day, data, bsLine)
|
self.draw(stock_code, given_day, data, bsLine)
|
||||||
|
|||||||
@@ -109,73 +109,49 @@ class BuySellChecker:
|
|||||||
return -1
|
return -1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def getBuyPriceAndWeight(self, data, i):
|
def getBuyPriceAndWeight(self, data, data_5, data_30, i):
|
||||||
buy, weight, type = -1, -1, -1
|
buy, weight = -1, -1
|
||||||
|
|
||||||
START_TIME_INDEX = 0
|
if data_5['slow_k'][i] < 20:
|
||||||
for c in range(370, len(data.index)):
|
if data_5['slow_k'][i - 1] < data_5['slow_d'][i - 1] and data_5['slow_d'][i] < data_5['slow_k'][i]:
|
||||||
if data.index[c].strftime("%H:%M:%S") == "09:01:00":
|
buy = data['low'][i]
|
||||||
START_TIME_INDEX = c
|
weight = 0.3
|
||||||
break
|
|
||||||
|
|
||||||
if START_TIME_INDEX + 10 < i < START_TIME_INDEX + 350:
|
if data_30['slow_k'][i] < 30 and data_5['slow_k'][i] < 30:
|
||||||
# 매수 분석
|
if data_5['slow_k'][i - 1] < data_5['slow_d'][i - 1] and data_5['slow_d'][i] < data_30['slow_k'][i]:
|
||||||
|
buy = data['close'][i]
|
||||||
|
weight = 0.3
|
||||||
|
|
||||||
if data['macd'][i] < -7:
|
if data_30['slow_k'][i] < 30:
|
||||||
buy = max(data["open"][i], data["close"][i])
|
if data_5['slow_k'][i] < 30:
|
||||||
weight = 1
|
if data_5['avg5'][i] < data_5['close'][i]:
|
||||||
type = 1
|
buy = data['close'][i]
|
||||||
return buy, weight, type
|
weight = 0.2
|
||||||
|
|
||||||
"""
|
if data_5['slow_k'][i - 1] < data_5['slow_d'][i - 1] and data_5['slow_d'][i] < data_30['slow_k'][i]:
|
||||||
if data['changeLine'][i - 1] <= data['baseLine'][i - 1] and data['baseLine'][i] < data['changeLine'][i]:
|
buy = data['close'][i]
|
||||||
changeLine_count = sum([1 if data['changeLine'][c] <= data['baseLine'][c] else 0 for c in range(i-30, i-10)])
|
weight = 0.3
|
||||||
if changeLine_count >= 15:
|
|
||||||
changeLine_count = sum([1 if data['changeLine'][c] <= data['baseLine'][c] else 0 for c in range(i-10, i)])
|
|
||||||
if changeLine_count >= 7:
|
|
||||||
buy = min(data["open"][i], data["close"][i])
|
|
||||||
weight = 1
|
|
||||||
type = 1
|
|
||||||
return buy, weight, type
|
|
||||||
"""
|
|
||||||
|
|
||||||
"""
|
return buy, weight
|
||||||
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
|
|
||||||
"""
|
|
||||||
return buy, weight, type
|
|
||||||
|
|
||||||
def getSellPriceAndWeight(self, data, i):
|
def getSellPriceAndWeight(self, data, data_5, data_30, i):
|
||||||
sell, weight, type = -1, -1, -1
|
sell, weight = -1, -1
|
||||||
|
|
||||||
START_TIME_INDEX = 0
|
if data_30['slow_k'][i] > 90:
|
||||||
for c in range(370, len(data.index)):
|
if (data_5['slow_d'][i-1] < data_5['slow_k'][i-1] and data_5['slow_k'][i] < data_5['slow_d'][i]):
|
||||||
if data.index[c].strftime("%H:%M:%S") == "09:01:00":
|
sell = data['close'][i]
|
||||||
START_TIME_INDEX = c
|
weight = 100
|
||||||
break
|
|
||||||
|
|
||||||
if i > START_TIME_INDEX:
|
if data_5['slow_k'][i] > 95 and data_5['slow_k'][i] < data_5['slow_d'][i]:
|
||||||
# 매도 분석
|
sell = data['close'][i]
|
||||||
|
weight = 100
|
||||||
|
|
||||||
if data['changeLine'][i - 1] >= data['laggingSpan'][i - 1] and data['laggingSpan'][i] < data['changeLine'][
|
if data_30['slow_k'][i] > 98 and data_5['slow_k'][i] > 98:
|
||||||
i]:
|
sell = data['close'][i]
|
||||||
changeLine_count = sum(
|
weight = 100
|
||||||
[1 if data['changeLine'][c] <= data['laggingSpan'][c] else 0 for c in range(i - 20, i)])
|
|
||||||
if changeLine_count >= 17:
|
return sell, weight
|
||||||
sell = min(data["open"][i], data["close"][i])
|
|
||||||
weight = 1
|
|
||||||
type = 1
|
|
||||||
return sell, weight, type
|
|
||||||
|
|
||||||
return sell, weight, type
|
|
||||||
|
|
||||||
def getBuyPriceAndWeight_122630(self, data, i):
|
def getBuyPriceAndWeight_122630(self, data, i):
|
||||||
buy, weight, type = -1, -1, -1
|
buy, weight, type = -1, -1, -1
|
||||||
@@ -252,20 +228,19 @@ class BuySellChecker:
|
|||||||
high = result["high"]
|
high = result["high"]
|
||||||
low = result["low"]
|
low = result["low"]
|
||||||
vol = result["vol"]
|
vol = result["vol"]
|
||||||
label = result["label"]
|
|
||||||
|
|
||||||
# 이동 평균
|
# 이동 평균
|
||||||
close_df = pd.DataFrame(close)
|
close_df = pd.DataFrame(close)
|
||||||
avg3_list = close_df.rolling(window=3).mean().fillna(close[0]).values.tolist()
|
avg5_list = close_df.rolling(window=5).mean().fillna(close[0]).values.tolist()
|
||||||
avg3 = [item[0] for item in avg3_list]
|
avg5 = [item[0] for item in avg5_list]
|
||||||
avg6_list = close_df.rolling(window=6).mean().fillna(close[0]).values.tolist()
|
|
||||||
avg6 = [item[0] for item in avg6_list]
|
|
||||||
avg9_list = close_df.rolling(window=9).mean().fillna(close[0]).values.tolist()
|
|
||||||
avg9 = [item[0] for item in avg9_list]
|
|
||||||
avg12_list = close_df.rolling(window=12).mean().fillna(close[0]).values.tolist()
|
|
||||||
avg12 = [item[0] for item in avg12_list]
|
|
||||||
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
|
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
|
||||||
avg20 = [item[0] for item in avg20_list]
|
avg20 = [item[0] for item in avg20_list]
|
||||||
|
avg30_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
|
||||||
|
avg30 = [item[0] for item in avg30_list]
|
||||||
|
avg60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
|
||||||
|
avg60 = [item[0] for item in avg60_list]
|
||||||
|
avg120_list = close_df.rolling(window=120).mean().fillna(close[0]).values.tolist()
|
||||||
|
avg120 = [item[0] for item in avg120_list]
|
||||||
|
|
||||||
open_df = pd.DataFrame(close)
|
open_df = pd.DataFrame(close)
|
||||||
disparity_avg5_list = (open_df / close_df.rolling(window=5).mean()).values.tolist()
|
disparity_avg5_list = (open_df / close_df.rolling(window=5).mean()).values.tolist()
|
||||||
@@ -299,7 +274,7 @@ class BuySellChecker:
|
|||||||
STOCK = []
|
STOCK = []
|
||||||
for i in range(len(open)):
|
for i in range(len(open)):
|
||||||
STOCK.append({'volume': vol[i], 'close': close[i], 'open': open[i], 'high': high[i], 'low': low[i],
|
STOCK.append({'volume': vol[i], 'close': close[i], 'open': open[i], 'high': high[i], 'low': low[i],
|
||||||
'avg20': avg20[i]})
|
'avg5': avg5[i], 'avg20': avg20[i], 'avg30': avg30[i], 'avg60': avg60[i], 'avg120': avg120[i]})
|
||||||
|
|
||||||
# stochastic
|
# stochastic
|
||||||
stochastic_df = self.stochastic.apply(STOCK, n=30, m=5, t=5)
|
stochastic_df = self.stochastic.apply(STOCK, n=30, m=5, t=5)
|
||||||
@@ -331,7 +306,7 @@ class BuySellChecker:
|
|||||||
temp = {
|
temp = {
|
||||||
"date": point_temp,
|
"date": point_temp,
|
||||||
"open": open, "high": high, "low": low, "close": close, "volume": vol,
|
"open": open, "high": high, "low": low, "close": close, "volume": vol,
|
||||||
"avg3": avg3, "avg6": avg6, "avg9": avg9, "avg12": avg12, "avg20": avg20,
|
"avg5": avg5, "avg20": avg20, "avg30": avg30, "avg60": avg60, "avg120": avg120,
|
||||||
"disparity_avg5": disparity_avg5, "disparity_avg10": disparity_avg10, "disparity_avg20": disparity_avg20,
|
"disparity_avg5": disparity_avg5, "disparity_avg10": disparity_avg10, "disparity_avg20": disparity_avg20,
|
||||||
"disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120,
|
"disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120,
|
||||||
"upper": upper, "lower": lower,
|
"upper": upper, "lower": lower,
|
||||||
@@ -340,15 +315,13 @@ class BuySellChecker:
|
|||||||
"rsi": rsi, "rsis": rsis,
|
"rsi": rsi, "rsis": rsis,
|
||||||
"changeLine": changeLine, "baseLine": baseLine, "laggingSpan": laggingSpan, "leadingSpan1": leadingSpan1,
|
"changeLine": changeLine, "baseLine": baseLine, "laggingSpan": laggingSpan, "leadingSpan1": leadingSpan1,
|
||||||
"leadingSpan2": leadingSpan2,
|
"leadingSpan2": leadingSpan2,
|
||||||
|
|
||||||
"label": label
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data = pd.DataFrame(temp)
|
data = pd.DataFrame(temp)
|
||||||
df_final_time = pd.DatetimeIndex(point_temp)
|
df_final_time = pd.DatetimeIndex(point_temp)
|
||||||
data.index = df_final_time
|
data.index = df_final_time
|
||||||
|
|
||||||
data = data.fillna(close[0])
|
data = data.fillna(-1)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def analyze1(self, result):
|
def analyze1(self, result):
|
||||||
@@ -747,12 +720,7 @@ class BuySellChecker:
|
|||||||
outFp.write(str(df["label"][i]) + "\n")
|
outFp.write(str(df["label"][i]) + "\n")
|
||||||
return
|
return
|
||||||
|
|
||||||
def checkTransaction(self, data, stock_code, isRealTime=True):
|
def checkTransaction(self, stock_code, data, data_5, data_30, 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 = {}
|
bsLine = {}
|
||||||
size = len(data["close"])
|
size = len(data["close"])
|
||||||
@@ -761,22 +729,14 @@ class BuySellChecker:
|
|||||||
# isRealTime=True, 실시간 적용
|
# isRealTime=True, 실시간 적용
|
||||||
last_index = size - 1
|
last_index = size - 1
|
||||||
|
|
||||||
buy, buy_weight, buy_type = self.getBuyPriceAndWeight(data, last_index)
|
buy, buy_weight = self.getBuyPriceAndWeight(data, data_5, data_30, last_index)
|
||||||
sell, sell_weight, sell_type = self.getSellPriceAndWeight(data, last_index)
|
sell, sell_weight = self.getSellPriceAndWeight(data, data_5, data_30, last_index)
|
||||||
|
|
||||||
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'] = [buy]
|
||||||
bsLine['buy_weight'] = [buy_weight]
|
bsLine['buy_weight'] = [buy_weight]
|
||||||
bsLine['sell'] = [sell]
|
bsLine['sell'] = [sell]
|
||||||
bsLine['sell_weight'] = [sell_weight]
|
bsLine['sell_weight'] = [sell_weight]
|
||||||
|
|
||||||
if self.BUY_COUNT > 1:
|
|
||||||
self.BUY_COUNT = 0
|
|
||||||
else:
|
else:
|
||||||
# Type=False, 시뮬레이션 적용
|
# Type=False, 시뮬레이션 적용
|
||||||
bsLine['buy'] = [-1 for i in range(size)]
|
bsLine['buy'] = [-1 for i in range(size)]
|
||||||
@@ -785,28 +745,15 @@ class BuySellChecker:
|
|||||||
bsLine['sell_weight'] = [-1 for i in range(size)]
|
bsLine['sell_weight'] = [-1 for i in range(size)]
|
||||||
|
|
||||||
for i in range(size):
|
for i in range(size):
|
||||||
if stock_code == "252670":
|
buy, buy_weight = self.getBuyPriceAndWeight(data, data_5, data_30, i)
|
||||||
buy, buy_weight, buy_type = self.getBuyPriceAndWeight(data, i)
|
sell, sell_weight = self.getSellPriceAndWeight(data, data_5, data_30, i)
|
||||||
sell, sell_weight, sell_type = self.getSellPriceAndWeight(data, i)
|
|
||||||
else:
|
|
||||||
buy, buy_weight, buy_type = self.getBuyPriceAndWeight_122630(data, i)
|
|
||||||
sell, sell_weight, sell_type = self.getSellPriceAndWeight_122630(data, i)
|
|
||||||
|
|
||||||
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'][i] = buy
|
||||||
bsLine['buy_weight'][i] = buy_weight
|
bsLine['buy_weight'][i] = buy_weight
|
||||||
bsLine['sell'][i] = sell
|
bsLine['sell'][i] = sell
|
||||||
bsLine['sell_weight'][i] = sell_weight
|
bsLine['sell_weight'][i] = sell_weight
|
||||||
|
|
||||||
if self.BUY_COUNT > 1:
|
return bsLine
|
||||||
self.BUY_COUNT = 0
|
|
||||||
|
|
||||||
return bsLine, data
|
|
||||||
|
|
||||||
def checkTransactionML(self, data, stock_code, predY, isRealTime=True):
|
def checkTransactionML(self, data, stock_code, predY, isRealTime=True):
|
||||||
# 4일치 중에서 앞에 2일은 제거한다.
|
# 4일치 중에서 앞에 2일은 제거한다.
|
||||||
|
|||||||
Reference in New Issue
Block a user