init
This commit is contained in:
@@ -38,9 +38,8 @@ 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'][381:]
|
||||||
|
buy_weight_line = bsLine['buy_weight'][381:]
|
||||||
sell_line = bsLine['sell'][381:]
|
sell_line = bsLine['sell'][381:]
|
||||||
#buy_line = bsLine['buy']
|
|
||||||
#sell_line = bsLine['sell']
|
|
||||||
|
|
||||||
# 그래프 설정을 위한 변수를 생성한다.
|
# 그래프 설정을 위한 변수를 생성한다.
|
||||||
data = data.astype({'open': 'int',
|
data = data.astype({'open': 'int',
|
||||||
@@ -61,13 +60,17 @@ class Simulation (HTS):
|
|||||||
'rsis': 'float'
|
'rsis': 'float'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
buy_size = []
|
||||||
buy_colors = []
|
buy_colors = []
|
||||||
for i in range(len(buy_line)):
|
for i in range(len(buy_line)):
|
||||||
if buy_line[i] < 0:
|
if buy_line[i] < 0:
|
||||||
buy_colors.append("#ffffff")
|
buy_colors.append("#ffffff")
|
||||||
buy_line[i] = nan
|
buy_line[i] = nan
|
||||||
|
buy_size.append(0)
|
||||||
else:
|
else:
|
||||||
buy_colors.append("#ff00ff")
|
buy_colors.append("#DA8913")
|
||||||
|
buy_size.append(10 + (5 * buy_weight_line[i]))
|
||||||
|
|
||||||
sell_colors = []
|
sell_colors = []
|
||||||
for i in range(len(sell_line)):
|
for i in range(len(sell_line)):
|
||||||
if sell_line[i] < 0:
|
if sell_line[i] < 0:
|
||||||
@@ -77,7 +80,7 @@ class Simulation (HTS):
|
|||||||
sell_colors.append("#00ced1")
|
sell_colors.append("#00ced1")
|
||||||
|
|
||||||
# 그래프를 설정한다.
|
# 그래프를 설정한다.
|
||||||
buy_check = go.Scatter(x=data['date'], y=buy_line, mode='markers', name="buy", marker=dict(size=14, color=buy_colors, line_width=0))
|
buy_check = go.Scatter(x=data['date'], y=buy_line, mode='markers', name="buy", marker=dict(size=buy_size, color=buy_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))
|
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')
|
||||||
@@ -175,8 +178,8 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# to check bying
|
# to check bying
|
||||||
stock_codes = {
|
stock_codes = {
|
||||||
"122630": ['20220801', '20220802', '20220803', '20220804', '20220805'],
|
"252670": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811'],
|
||||||
"252670": ['20220801', '20220802', '20220803', '20220804', '20220805'],
|
#"122630": ['20220810'],
|
||||||
}
|
}
|
||||||
|
|
||||||
method = "rule" # "rule", "ml", "answer"
|
method = "rule" # "rule", "ml", "answer"
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ class BuySellChecker:
|
|||||||
# "15:00" 까지만 매수
|
# "15:00" 까지만 매수
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if data["macd"][i] < -25:
|
if i > 380 + 30 and data["macd"][i] < -25:
|
||||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||||
buy = data["high"][i]
|
buy = data["high"][i]
|
||||||
if i < 381 + 30:
|
if i < 381 + 30:
|
||||||
@@ -208,13 +208,13 @@ class BuySellChecker:
|
|||||||
weight = 5
|
weight = 5
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if data["macd"][i] < -5 and data["rsi"][i] < 30:
|
if i > 380 + 30 and data["macd"][i] < -5 and data["rsi"][i] < 30:
|
||||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
weight = 2
|
weight = 2
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if data["slow_k"][i] < 10 and data["rsi"][i] < 30:
|
if i > 380 + 30 and data["slow_k"][i] < 10 and data["rsi"][i] < 30:
|
||||||
if data["slow_k"][i - 1] < min(data["slow_k"][i - 2], data["slow_k"][i]):
|
if data["slow_k"][i - 1] < min(data["slow_k"][i - 2], data["slow_k"][i]):
|
||||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
@@ -223,16 +223,19 @@ class BuySellChecker:
|
|||||||
|
|
||||||
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
||||||
if data["avg3"][i - 1] < data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
if data["avg3"][i - 1] < data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
||||||
|
max_avg3 = 0
|
||||||
p_avg3 = 999999
|
p_avg3 = 999999
|
||||||
for c in range(1, 50):
|
for c in range(1, 50):
|
||||||
|
if max_avg3 < data["avg5"][i - c]:
|
||||||
|
max_avg3 = data["avg5"][i - c]
|
||||||
if data["avg3"][i-c-1] < data["avg5"][i-c-1] and data["avg3"][i-c] > data["avg5"][i-c]:
|
if data["avg3"][i-c-1] < data["avg5"][i-c-1] and data["avg3"][i-c] > data["avg5"][i-c]:
|
||||||
p_avg3 = data["avg3"][i-c]
|
p_avg3 = data["avg3"][i-c]
|
||||||
break
|
break
|
||||||
if data["avg3"][i] > p_avg3:
|
if data["avg3"][i] > p_avg3 and max_avg3 < data["avg3"][i]:
|
||||||
|
if max(data["avg3"][i-3], data["avg3"][i-2], data["avg3"][i-1]) - min(data["avg3"][i-3], data["avg3"][i-2], data["avg3"][i-1]) > 1:
|
||||||
if i == 382 or i == 383:
|
if i == 382 or i == 383:
|
||||||
if data["close"][i] != data["high"][i]:
|
if data["close"][i] != data["high"][i]:
|
||||||
return -1, -1
|
return -1, -1
|
||||||
if data["slow_k"][i] < 30 or i < 381 + 10:
|
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
weight = 1
|
weight = 1
|
||||||
return buy, weight
|
return buy, weight
|
||||||
@@ -548,7 +551,7 @@ class BuySellChecker:
|
|||||||
# "15:00" 까지만 매수
|
# "15:00" 까지만 매수
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if data["macd"][i] < -25:
|
if i > 380 + 30 and data["macd"][i] < -25:
|
||||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||||
buy = data["high"][i]
|
buy = data["high"][i]
|
||||||
if i < 381 + 30:
|
if i < 381 + 30:
|
||||||
@@ -557,13 +560,13 @@ class BuySellChecker:
|
|||||||
weight = 5
|
weight = 5
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if data["macd"][i] < -5 and data["rsi"][i] < 30:
|
if i > 380 + 30 and data["macd"][i] < -5 and data["rsi"][i] < 30:
|
||||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
weight = 2
|
weight = 2
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if data["slow_k"][i] < 10 and data["rsi"][i] < 30:
|
if i > 380 + 30 and data["slow_k"][i] < 10 and data["rsi"][i] < 30:
|
||||||
if data["slow_k"][i - 1] < min(data["slow_k"][i - 2], data["slow_k"][i]):
|
if data["slow_k"][i - 1] < min(data["slow_k"][i - 2], data["slow_k"][i]):
|
||||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
|
|||||||
Reference in New Issue
Block a user