This commit is contained in:
dsyoon
2022-08-10 23:35:49 +09:00
parent 05102f6845
commit e117b108fc
2 changed files with 44 additions and 7 deletions

View File

@@ -86,7 +86,7 @@ class Simulation (HTS):
avg10 = go.Scatter(x=data['date'], y=data["avg10"], name="avg10", line_color='#ff00ff')
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#1469F4')
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#000000')
#avg60 = go.Scatter(x=hts['date'], y=hts["avg60"], name="avg60", line_color='#008000')
avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#008000')
candle_stick = go.Candlestick(x=data['date'], open=data['open'], high=data['high'], low=data['low'], close=data['close'], increasing_line_color='red', decreasing_line_color='blue')
volume_line = go.Scatter(x=data['date'], y=data["volume"], mode='lines', name='volume')
@@ -102,7 +102,7 @@ class Simulation (HTS):
rsi_line = go.Scatter(x=data['date'], y=data["rsi"], mode='lines', name='rsi')
rsis_line = go.Scatter(x=data['date'], y=data["rsis"], mode='lines', name='rsis')
candle_data = [candle_stick, upper, lower, avg3, avg5, avg10, avg20, avg30, buy_check, sell_check]
candle_data = [candle_stick, upper, lower, avg3, avg5, avg10, avg20, avg30, avg60, buy_check, sell_check]
volume_data = [volume_line]
macd_data = [macd_line, macd_s_line, macd_o_line]
stochastic_data = [slow_k_line, slow_d_line]
@@ -175,11 +175,11 @@ if __name__ == "__main__":
# to check bying
stock_codes = {
"122630": ['20220810'],
"252670": ['20220810'],
"122630": ['20220809'],
"252670": ['20220809'],
}
method = "answer" # "rule", "ml", "answer"
method = "rule" # "rule", "ml", "answer"
for stock_code in stock_codes:
simulation = Simulation(RESOURCE_PATH)

View File

@@ -199,6 +199,16 @@ class BuySellChecker:
# "15:00" 까지만 매수
return buy, weight
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
if data["avg3"][i - 1] <= data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
if max(data["avg3"][i], data["avg5"][i]) < min(data["avg20"][i], data["avg30"][i]):
if min(data["avg3"][i], data["avg5"][i]) > data["avg60"][i]:
buy = int((data["high"][i] + data["low"][i]) / 2)
weight = 1
return buy, weight
"""
# 3분선이 10분 이상 7분선 아래에 있다가 7분선 위로 올라옴
if i >= 381 + 10:
vaild = True
@@ -211,6 +221,7 @@ class BuySellChecker:
buy = int(data["avg3"][i] - data["avg3"][i]%5)
weight = 1
return self.getBuyCheck(data, i, buy, weight)
"""
"""
# 중위선 20분선 아래에서 볼린져 상단을 뚫고 종료할 때
@@ -400,6 +411,14 @@ class BuySellChecker:
if i >= START_TIME_INDEX:
# 매도 분석
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
if data["avg3"][i - 1] >= data["avg5"][i - 1] and data["avg3"][i] < data["avg5"][i]:
if min(data["avg3"][i], data["avg5"][i]) > max(data["avg20"][i], data["avg30"][i]):
sell = int((data["high"][i] + data["low"][i]) / 2)
weight = 1
return sell, weight
"""
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
if i >= 381 + 5:
vaild = True
@@ -412,7 +431,7 @@ class BuySellChecker:
sell = int(data["avg3"][i] - data["avg3"][i]%5)
weight = 1
return sell, weight
"""
"""
# 3분 선이 40분 전부터 게속 20분선 위에 있다가 아래로 내려오면 매도함
if data["avg3"][i] < data["avg20"][i]:
@@ -500,6 +519,15 @@ class BuySellChecker:
# "15:00" 까지만 매수
return buy, weight
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
if data["avg3"][i - 1] <= data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
if max(data["avg3"][i], data["avg5"][i]) < min(data["avg20"][i], data["avg30"][i]):
if min(data["avg3"][i], data["avg5"][i]) > data["avg60"][i]:
buy = int((data["high"][i] + data["low"][i]) / 2)
weight = 1
return buy, weight
"""
# 3분선이 10분 이상 7분선 아래에 있다가 7분선 위로 올라옴
if i >= 381 + 10:
vaild = True
@@ -512,6 +540,7 @@ class BuySellChecker:
buy = int(data["avg3"][i] - data["avg3"][i] % 5)
weight = 1
return self.getBuyCheck(data, i, buy, weight)
"""
"""
# 30일 이전부터 모든 선이 좁혀졌다 녋혀지면서 다시 상승하며 좁혀짐
@@ -702,6 +731,14 @@ class BuySellChecker:
if i >= START_TIME_INDEX:
# 매도 분석
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
if data["avg3"][i - 1] >= data["avg5"][i - 1] and data["avg3"][i] < data["avg5"][i]:
if min(data["avg3"][i], data["avg5"][i]) > max(data["avg20"][i], data["avg30"][i]):
sell = int((data["high"][i] + data["low"][i]) / 2)
weight = 1
return sell, weight
"""
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
if i >= 381 + 5:
vaild = True
@@ -714,7 +751,7 @@ class BuySellChecker:
sell = int(data["avg3"][i] - data["avg3"][i]%5)
weight = 1
return sell, weight
"""
"""
# 3분 선이 40분 전부터 게속 20분선 위에 있다가 아래로 내려오면 매도함
if data["avg3"][i] < data["avg20"][i]: