init
This commit is contained in:
@@ -109,53 +109,64 @@ class BuySellChecker:
|
||||
return -1
|
||||
return 0
|
||||
|
||||
def getBuyPriceAndWeight(self, data, data_5, data_30, i):
|
||||
def getBuyPriceAndWeight(self, i, data, data_5=None, data_30=None):
|
||||
buy, weight = -1, -1
|
||||
|
||||
if len(data_5['slow_k']) <= i or len(data_30['slow_k']) <= i:
|
||||
return buy, weight
|
||||
if data_5 is not None and data_30 is not None:
|
||||
if len(data_5['slow_k']) <= i or len(data_30['slow_k']) <= i:
|
||||
return buy, weight
|
||||
|
||||
if data_5['slow_k'][i] < 20:
|
||||
if data_5['slow_k'][i - 1] < data_5['slow_d'][i - 1] and data_5['slow_d'][i] < data_5['slow_k'][i]:
|
||||
buy = data['low'][i]
|
||||
weight = 0.3
|
||||
if data_5['slow_k'][i] < 20:
|
||||
if data_5['slow_k'][i - 1] < data_5['slow_d'][i - 1] and data_5['slow_d'][i] < data_5['slow_k'][i]:
|
||||
buy = data['low'][i]
|
||||
weight = 0.3
|
||||
|
||||
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_30['slow_k'][i] < 30:
|
||||
if data_5['slow_k'][i] < 30:
|
||||
if data_5['avg5'][i] < data_5['close'][i]:
|
||||
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.2
|
||||
weight = 0.3
|
||||
|
||||
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_30['slow_k'][i] < 30:
|
||||
if data_5['slow_k'][i] < 30:
|
||||
if data_5['avg5'][i] < data_5['close'][i]:
|
||||
buy = data['close'][i]
|
||||
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]:
|
||||
buy = data['close'][i]
|
||||
weight = 0.3
|
||||
else:
|
||||
if data['avg5'][i-1] < data['avg200'][i-1] and data['avg200'][i] < data['avg5'][i]:
|
||||
if data['avg60'][i]<data['avg20'][i]<data['avg5'][i]:
|
||||
buy = data['close'][i]
|
||||
weight = 0.3
|
||||
|
||||
return buy, weight
|
||||
|
||||
def getSellPriceAndWeight(self, data, data_5, data_30, i):
|
||||
def getSellPriceAndWeight(self, i, data, data_5=None, data_30=None):
|
||||
sell, weight = -1, -1
|
||||
|
||||
if len(data_5['slow_k']) <= i or len(data_30['slow_k']) <= i:
|
||||
return sell, weight
|
||||
if data_5 is not None and data_30 is not None:
|
||||
if len(data_5['slow_k']) <= i or len(data_30['slow_k']) <= i:
|
||||
return sell, weight
|
||||
|
||||
if data_30['slow_k'][i] > 90:
|
||||
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_30['slow_k'][i] > 90:
|
||||
if (data_5['slow_d'][i-1] < data_5['slow_k'][i-1] and data_5['slow_k'][i] < data_5['slow_d'][i]):
|
||||
sell = data['close'][i]
|
||||
weight = 100
|
||||
|
||||
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_30['slow_k'][i] > 98 and data_5['slow_k'][i] > 98:
|
||||
sell = data['close'][i]
|
||||
weight = 100
|
||||
|
||||
if data_5['slow_k'][i] > 95 and data_5['slow_k'][i] < data_5['slow_d'][i]:
|
||||
else:
|
||||
if data['avg200'][i-1] < data['avg5'][i-1] and data['avg5'][i] < data['avg200'][i]:
|
||||
sell = data['close'][i]
|
||||
weight = 100
|
||||
|
||||
if data_30['slow_k'][i] > 98 and data_5['slow_k'][i] > 98:
|
||||
sell = data['close'][i]
|
||||
weight = 100
|
||||
|
||||
return sell, weight
|
||||
|
||||
|
||||
@@ -247,18 +258,20 @@ class BuySellChecker:
|
||||
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]
|
||||
avg200_list = close_df.rolling(window=200).mean().fillna(close[0]).values.tolist()
|
||||
avg200 = [item[0] for item in avg120_list]
|
||||
|
||||
open_df = pd.DataFrame(close)
|
||||
disparity_avg5_list = (open_df / close_df.rolling(window=5).mean()).values.tolist()
|
||||
disparity_avg5 = [item[0] for item in disparity_avg5_list]
|
||||
disparity_avg10_list = (open_df / close_df.rolling(window=10).mean()).values.tolist()
|
||||
disparity_avg10 = [item[0] for item in disparity_avg10_list]
|
||||
disparity_avg20_list = (open_df / close_df.rolling(window=20).mean()).values.tolist()
|
||||
disparity_avg20 = [item[0] for item in disparity_avg20_list]
|
||||
disparity_avg60_list = (open_df / close_df.rolling(window=60).mean()).values.tolist()
|
||||
disparity_avg60 = [item[0] for item in disparity_avg60_list]
|
||||
disparity_avg120_list = (open_df / close_df.rolling(window=120).mean()).values.tolist()
|
||||
disparity_avg120 = [item[0] for item in disparity_avg120_list]
|
||||
disparity_avg200_list = (open_df / close_df.rolling(window=200).mean()).values.tolist()
|
||||
disparity_avg200 = [item[0] for item in disparity_avg200_list]
|
||||
|
||||
# 볼린져 밴드
|
||||
df = pd.DataFrame(close)
|
||||
@@ -280,7 +293,7 @@ class BuySellChecker:
|
||||
STOCK = []
|
||||
for i in range(len(open)):
|
||||
STOCK.append({'volume': vol[i], 'close': close[i], 'open': open[i], 'high': high[i], 'low': low[i],
|
||||
'avg5': avg5[i], 'avg20': avg20[i], 'avg30': avg30[i], 'avg60': avg60[i], 'avg120': avg120[i]})
|
||||
'avg5': avg5[i], 'avg20': avg20[i], 'avg60': avg60[i], 'avg120': avg120[i], 'avg200': avg200[i]})
|
||||
|
||||
# stochastic
|
||||
stochastic_df = self.stochastic.apply(STOCK, n=30, m=5, t=5)
|
||||
@@ -312,9 +325,9 @@ class BuySellChecker:
|
||||
temp = {
|
||||
"date": point_temp,
|
||||
"open": open, "high": high, "low": low, "close": close, "volume": vol,
|
||||
"avg5": avg5, "avg20": avg20, "avg30": avg30, "avg60": avg60, "avg120": avg120,
|
||||
"disparity_avg5": disparity_avg5, "disparity_avg10": disparity_avg10, "disparity_avg20": disparity_avg20,
|
||||
"disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120,
|
||||
"avg5": avg5, "avg20": avg20, "avg60": avg60, "avg120": avg120, "avg200": avg200,
|
||||
"disparity_avg5": disparity_avg5, "disparity_avg20": disparity_avg20,
|
||||
"disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120, "disparity_avg200": disparity_avg200,
|
||||
"upper": upper, "lower": lower,
|
||||
"macd": macd, "macds": macds, "macdo": macdo,
|
||||
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d,
|
||||
@@ -726,7 +739,7 @@ class BuySellChecker:
|
||||
outFp.write(str(df["label"][i]) + "\n")
|
||||
return
|
||||
|
||||
def checkTransaction(self, stock_code, data, data_5, data_30, isRealTime=True):
|
||||
def checkTransaction(self, stock_code, data, data_5=None, data_30=None, isRealTime=True):
|
||||
# 어제 오늘 데이터로 분석
|
||||
bsLine = {}
|
||||
size = len(data["close"])
|
||||
@@ -735,8 +748,8 @@ class BuySellChecker:
|
||||
# isRealTime=True, 실시간 적용
|
||||
last_index = size - 1
|
||||
|
||||
buy, buy_weight = self.getBuyPriceAndWeight(data, data_5, data_30, last_index)
|
||||
sell, sell_weight = self.getSellPriceAndWeight(data, data_5, data_30, last_index)
|
||||
buy, buy_weight = self.getBuyPriceAndWeight(last_index, data, data_5, data_30)
|
||||
sell, sell_weight = self.getSellPriceAndWeight(last_index, data, data_5, data_30)
|
||||
|
||||
bsLine['buy'] = [buy]
|
||||
bsLine['buy_weight'] = [buy_weight]
|
||||
@@ -751,8 +764,8 @@ class BuySellChecker:
|
||||
bsLine['sell_weight'] = [-1 for i in range(size)]
|
||||
|
||||
for i in range(size):
|
||||
buy, buy_weight = self.getBuyPriceAndWeight(data, data_5, data_30, i)
|
||||
sell, sell_weight = self.getSellPriceAndWeight(data, data_5, data_30, i)
|
||||
buy, buy_weight = self.getBuyPriceAndWeight(i, data, data_5, data_30)
|
||||
sell, sell_weight = self.getSellPriceAndWeight(i, data, data_5, data_30)
|
||||
|
||||
bsLine['buy'][i] = buy
|
||||
bsLine['buy_weight'][i] = buy_weight
|
||||
|
||||
Reference in New Issue
Block a user