init
This commit is contained in:
@@ -49,9 +49,10 @@ class Simulation (HTS):
|
|||||||
'close': 'int',
|
'close': 'int',
|
||||||
'volume': 'int',
|
'volume': 'int',
|
||||||
'avg3': 'float',
|
'avg3': 'float',
|
||||||
'avg5': 'float',
|
'avg6': 'float',
|
||||||
'avg10': 'float',
|
'avg9': 'float',
|
||||||
'avg20': 'float',
|
'avg12': 'float',
|
||||||
|
'avg24': 'float',
|
||||||
'avg30': 'float',
|
'avg30': 'float',
|
||||||
'avg60': 'float',
|
'avg60': 'float',
|
||||||
'fast_k': 'float',
|
'fast_k': 'float',
|
||||||
@@ -69,7 +70,7 @@ class Simulation (HTS):
|
|||||||
buy_line[i] = nan
|
buy_line[i] = nan
|
||||||
buy_size.append(0)
|
buy_size.append(0)
|
||||||
else:
|
else:
|
||||||
buy_colors.append("#00ced1")
|
buy_colors.append("#D87D0F")
|
||||||
buy_size.append(10 + (5 * buy_weight_line[i]))
|
buy_size.append(10 + (5 * buy_weight_line[i]))
|
||||||
|
|
||||||
sell_colors = []
|
sell_colors = []
|
||||||
@@ -78,7 +79,7 @@ class Simulation (HTS):
|
|||||||
sell_colors.append("#ffffff")
|
sell_colors.append("#ffffff")
|
||||||
sell_line[i] = nan
|
sell_line[i] = nan
|
||||||
else:
|
else:
|
||||||
sell_colors.append("#D87D0F")
|
sell_colors.append("#00ced1")
|
||||||
|
|
||||||
# 그래프를 설정한다.
|
# 그래프를 설정한다.
|
||||||
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))
|
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))
|
||||||
@@ -86,11 +87,11 @@ class Simulation (HTS):
|
|||||||
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')
|
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='#089B5B')
|
avg6 = go.Scatter(x=data['date'], y=data["avg6"], name="avg6", line_color='#089B5B')
|
||||||
avg10 = go.Scatter(x=data['date'], y=data["avg10"], name="avg10", line_color='#ff00ff')
|
avg9 = go.Scatter(x=data['date'], y=data["avg9"], name="avg9", line_color='#ff00ff')
|
||||||
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#1469F4')
|
avg12 = go.Scatter(x=data['date'], y=data["avg12"], name="avg12", line_color='#1469F4')
|
||||||
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#000000')
|
avg24 = go.Scatter(x=data['date'], y=data["avg24"], name="avg24", line_color='#000000')
|
||||||
avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#008000')
|
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", 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')
|
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')
|
volume_line = go.Scatter(x=data['date'], y=data["volume"], mode='lines', name='volume')
|
||||||
@@ -106,7 +107,7 @@ class Simulation (HTS):
|
|||||||
rsi_line = go.Scatter(x=data['date'], y=data["rsi"], mode='lines', name='rsi')
|
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')
|
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, avg60, buy_check, sell_check]
|
candle_data = [candle_stick, upper, lower, avg3, avg6, avg9, avg12, avg24, avg30, buy_check, sell_check]
|
||||||
volume_data = [volume_line]
|
volume_data = [volume_line]
|
||||||
macd_data = [macd_line, macd_s_line, macd_o_line]
|
macd_data = [macd_line, macd_s_line, macd_o_line]
|
||||||
stochastic_data = [slow_k_line, slow_d_line]
|
stochastic_data = [slow_k_line, slow_d_line]
|
||||||
@@ -180,7 +181,7 @@ if __name__ == "__main__":
|
|||||||
# to check bying
|
# to check bying
|
||||||
stock_codes = {
|
stock_codes = {
|
||||||
"252670": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811'],
|
"252670": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811'],
|
||||||
#"122630": ['20220810'],
|
"122630": ['20220801', '20220802', '20220803', '20220804', '20220805', '20220808', '20220809', '20220810', '20220811'],
|
||||||
}
|
}
|
||||||
|
|
||||||
method = "rule" # "rule", "ml", "answer"
|
method = "rule" # "rule", "ml", "answer"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
from stock.analysis.Common import Common
|
from stock.analysis.Common import Common
|
||||||
from stock.analysis.Stochastic import Stochastic
|
from stock.analysis.Stochastic import Stochastic
|
||||||
from stock.analysis.RSI import RSI
|
from stock.analysis.RSI import RSI
|
||||||
@@ -195,57 +196,52 @@ class BuySellChecker:
|
|||||||
if i > START_TIME_INDEX:
|
if i > START_TIME_INDEX:
|
||||||
# 매수 분석
|
# 매수 분석
|
||||||
|
|
||||||
if i > 740:
|
if i > 710:
|
||||||
# "15:00" 까지만 매수
|
# "14:30" 까지만 매수
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if i > 380 + 30 and 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["avg6"][i], data["avg9"][i], data["avg12"][i]):
|
||||||
buy = data["high"][i]
|
buy = data["high"][i]
|
||||||
if i < 381 + 30:
|
if i < 381 + 40:
|
||||||
weight = 1
|
weight = 1
|
||||||
else:
|
else:
|
||||||
weight = 5
|
weight = 5
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if i > 380 + 30 and 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["avg6"][i], data["avg9"][i], data["avg12"][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 i > 380 + 30 and 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["avg6"][i], data["avg9"][i], data["avg12"][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
|
||||||
|
|
||||||
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
|
||||||
if data["slow_k"][i] < 20 and data["avg3"][i - 1] < data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
|
||||||
weight = 1
|
|
||||||
return buy, weight
|
|
||||||
|
|
||||||
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
||||||
if data["slow_k"][i] < 70 and data["avg3"][i - 1] < data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
if data["slow_k"][i] < 70 and data["avg3"][i - 1] < data["avg6"][i - 1] and data["avg3"][i] > data["avg6"][i]:
|
||||||
max_avg3 = 0
|
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]:
|
if max_avg3 < data["avg6"][i - c]:
|
||||||
max_avg3 = data["avg5"][i - c]
|
max_avg3 = data["avg6"][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-2] < data["avg6"][i-c-2] and data["avg3"][i-c-1] <= data["avg6"][i-c-1] and data["avg3"][i-c] > data["avg6"][i-c]:
|
||||||
p_avg3 = data["avg3"][i-c]
|
p_avg3 = data["avg3"][i-c]
|
||||||
break
|
break
|
||||||
if data["avg3"][i] > p_avg3 and max_avg3 < data["avg3"][i]:
|
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 data["avg6"][i-10] > data["avg6"][i]:
|
||||||
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
|
||||||
#buy = int((data["open"][i] + data["close"][i]) / 2)
|
buy = data["low"][i]
|
||||||
buy = data["low"][i]
|
weight = 1
|
||||||
weight = 1
|
return buy, weight
|
||||||
return buy, weight
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# 3분선이 10분 이상 7분선 아래에 있다가 7분선 위로 올라옴
|
# 3분선이 10분 이상 7분선 아래에 있다가 7분선 위로 올라옴
|
||||||
@@ -451,25 +447,25 @@ class BuySellChecker:
|
|||||||
# 매도 분석
|
# 매도 분석
|
||||||
|
|
||||||
# 10분선 위에서 3분선이 5분선을 하향 돌파 하는 경우 매도
|
# 10분선 위에서 3분선이 5분선을 하향 돌파 하는 경우 매도
|
||||||
if data["slow_k"][i - 1] > 60 and data["avg3"][i - 1] >= data["avg5"][i - 1] and data["avg3"][i] < data["avg5"][i]:
|
if data["slow_k"][i - 1] > 70 and data["avg3"][i - 1] >= data["avg6"][i - 1] and data["avg3"][i] < data["avg6"][i]:
|
||||||
if max(data["avg3"][i], data["avg5"][i]) < data["avg10"][i]:
|
if max(data["avg3"][i], data["avg6"][i]) < data["avg9"][i]:
|
||||||
sell = int((data["high"][i] + data["low"][i]) / 2)
|
sell = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
weight = 1
|
weight = 1
|
||||||
return sell, weight
|
return sell, weight
|
||||||
"""
|
|
||||||
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
|
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
|
||||||
if i >= 381 + 5:
|
if i >= 381 + 5:
|
||||||
vaild = True
|
vaild = True
|
||||||
for c in range(1, 6):
|
for c in range(1, 11):
|
||||||
if data["avg3"][i - c] < data["avg5"][i - c]:
|
if data["avg3"][i - c] < data["avg6"][i - c]:
|
||||||
vaild = False
|
vaild = False
|
||||||
break
|
break
|
||||||
if vaild:
|
if vaild:
|
||||||
if data["avg3"][i] < data["avg5"][i]:
|
if data["avg3"][i] < data["avg6"][i]:
|
||||||
sell = int(data["avg3"][i] - data["avg3"][i]%5)
|
sell = int(data["avg3"][i] - data["avg3"][i]%5)
|
||||||
weight = 1
|
weight = 1
|
||||||
return sell, weight
|
return sell, weight
|
||||||
"""
|
|
||||||
"""
|
"""
|
||||||
# 3분 선이 40분 전부터 게속 20분선 위에 있다가 아래로 내려오면 매도함
|
# 3분 선이 40분 전부터 게속 20분선 위에 있다가 아래로 내려오면 매도함
|
||||||
if data["avg3"][i] < data["avg20"][i]:
|
if data["avg3"][i] < data["avg20"][i]:
|
||||||
@@ -553,44 +549,51 @@ class BuySellChecker:
|
|||||||
if i >= START_TIME_INDEX:
|
if i >= START_TIME_INDEX:
|
||||||
# 매수 분석
|
# 매수 분석
|
||||||
|
|
||||||
if i > 740:
|
if i > 710:
|
||||||
# "15:00" 까지만 매수
|
# "14:30" 까지만 매수
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if i > 380 + 30 and 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["avg6"][i], data["avg9"][i], data["avg12"][i]):
|
||||||
buy = data["high"][i]
|
buy = data["high"][i]
|
||||||
if i < 381 + 30:
|
if i < 381 + 40:
|
||||||
weight = 1
|
weight = 1
|
||||||
else:
|
else:
|
||||||
weight = 5
|
weight = 5
|
||||||
return buy, weight
|
return buy, weight
|
||||||
|
|
||||||
if i > 380 + 30 and 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["avg6"][i], data["avg9"][i], data["avg12"][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 i > 380 + 30 and 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["avg6"][i], data["avg9"][i], data["avg12"][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
|
||||||
|
|
||||||
# 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["avg9"][i - 1] and data["avg3"][i] > data["avg9"][i] or
|
||||||
|
data["avg3"][i - 2] < data["avg9"][i - 2] and data["avg3"][i - 1] > data["avg9"][i - 1] and data["avg3"][i] > data["avg9"][i]):
|
||||||
|
max_avg3 = 0
|
||||||
p_avg3 = 999999
|
p_avg3 = 999999
|
||||||
for c in range(1, 50):
|
for c in range(2, 50):
|
||||||
if data["avg3"][i-c-1] < data["avg5"][i-c-1] and data["avg3"][i-c] > data["avg5"][i-c]:
|
if max_avg3 < data["avg9"][i - c]:
|
||||||
p_avg3 = data["avg3"][i-c]
|
max_avg3 = data["avg9"][i - c]
|
||||||
|
if data["avg3"][i - c - 2] < data["avg9"][i - c - 2] and data["avg3"][i - c - 1] <= data["avg9"][i - c - 1] and data["avg3"][i - c] > data["avg9"][i - c]:
|
||||||
|
p_avg3 = data["avg3"][i - c]
|
||||||
break
|
break
|
||||||
if data["avg3"][i] > p_avg3:
|
if data["avg3"][i] > p_avg3+3 and max_avg3 < data["avg3"][i]:
|
||||||
if data["slow_k"][i] < 30 or i < 381 + 10:
|
# if data["avg6"][i-10] > data["avg6"][i]:
|
||||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
if i == 382 or i == 383:
|
||||||
weight = 1
|
if data["close"][i] != data["high"][i]:
|
||||||
return buy, weight
|
return -1, -1
|
||||||
|
buy = data["low"][i]
|
||||||
|
weight = 1
|
||||||
|
return buy, weight
|
||||||
"""
|
"""
|
||||||
# 3분선이 10분 이상 7분선 아래에 있다가 7분선 위로 올라옴
|
# 3분선이 10분 이상 7분선 아래에 있다가 7분선 위로 올라옴
|
||||||
if i >= 381 + 10:
|
if i >= 381 + 10:
|
||||||
@@ -796,26 +799,25 @@ class BuySellChecker:
|
|||||||
# 매도 분석
|
# 매도 분석
|
||||||
|
|
||||||
# 10분선 위에서 3분선이 5분선을 하향 돌파 하는 경우 매도
|
# 10분선 위에서 3분선이 5분선을 하향 돌파 하는 경우 매도
|
||||||
if data["avg3"][i - 1] >= data["avg5"][i - 1] and data["avg3"][i] < data["avg5"][i]:
|
if data["slow_k"][i - 1] > 70 and data["avg3"][i - 1] >= data["avg6"][i - 1] and data["avg3"][i] < data["avg6"][i]:
|
||||||
if min(data["avg3"][i], data["avg5"][i]) > data["avg10"][i]:
|
if max(data["avg3"][i], data["avg6"][i]) < data["avg9"][i]:
|
||||||
if data["slow_k"][i] > 80:
|
sell = int((data["open"][i] + data["close"][i]) / 2)
|
||||||
sell = int((data["high"][i] + data["low"][i]) / 2)
|
weight = 1
|
||||||
weight = 1
|
return sell, weight
|
||||||
return sell, weight
|
|
||||||
"""
|
# 3분선이 10분 이상 6분선 위에 있다가 5분선 아래로 내려옴
|
||||||
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
|
|
||||||
if i >= 381 + 5:
|
if i >= 381 + 5:
|
||||||
vaild = True
|
vaild = True
|
||||||
for c in range(1, 6):
|
for c in range(1, 11):
|
||||||
if data["avg3"][i - c] < data["avg5"][i - c]:
|
if data["avg3"][i - c] < data["avg6"][i - c]:
|
||||||
vaild = False
|
vaild = False
|
||||||
break
|
break
|
||||||
if vaild:
|
if vaild:
|
||||||
if data["avg3"][i] < data["avg5"][i]:
|
if data["avg3"][i] < data["avg6"][i]:
|
||||||
sell = int(data["avg3"][i] - data["avg3"][i]%5)
|
sell = int(data["avg3"][i] - data["avg3"][i]%5)
|
||||||
weight = 1
|
weight = 1
|
||||||
return sell, weight
|
return sell, weight
|
||||||
"""
|
|
||||||
"""
|
"""
|
||||||
# 3분 선이 40분 전부터 게속 20분선 위에 있다가 아래로 내려오면 매도함
|
# 3분 선이 40분 전부터 게속 20분선 위에 있다가 아래로 내려오면 매도함
|
||||||
if data["avg3"][i] < data["avg20"][i]:
|
if data["avg3"][i] < data["avg20"][i]:
|
||||||
@@ -892,14 +894,14 @@ class BuySellChecker:
|
|||||||
close_df = pd.DataFrame(close)
|
close_df = pd.DataFrame(close)
|
||||||
avg3_list = close_df.rolling(window=3).mean().fillna(close[0]).values.tolist()
|
avg3_list = close_df.rolling(window=3).mean().fillna(close[0]).values.tolist()
|
||||||
avg3 = [item[0] for item in avg3_list]
|
avg3 = [item[0] for item in avg3_list]
|
||||||
avg5_list = close_df.rolling(window=5).mean().fillna(close[0]).values.tolist()
|
avg6_list = close_df.rolling(window=6).mean().fillna(close[0]).values.tolist()
|
||||||
avg5 = [item[0] for item in avg5_list]
|
avg6 = [item[0] for item in avg6_list]
|
||||||
avg7_list = close_df.rolling(window=7).mean().fillna(close[0]).values.tolist()
|
avg9_list = close_df.rolling(window=9).mean().fillna(close[0]).values.tolist()
|
||||||
avg7 = [item[0] for item in avg7_list]
|
avg9 = [item[0] for item in avg9_list]
|
||||||
avg10_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist()
|
avg12_list = close_df.rolling(window=12).mean().fillna(close[0]).values.tolist()
|
||||||
avg10 = [item[0] for item in avg10_list]
|
avg12 = [item[0] for item in avg12_list]
|
||||||
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
|
avg24_list = close_df.rolling(window=24).mean().fillna(close[0]).values.tolist()
|
||||||
avg20 = [item[0] for item in avg20_list]
|
avg24 = [item[0] for item in avg24_list]
|
||||||
avg30_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
|
avg30_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
|
||||||
avg30 = [item[0] for item in avg30_list]
|
avg30 = [item[0] for item in avg30_list]
|
||||||
avg60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
|
avg60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
|
||||||
@@ -925,7 +927,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],
|
||||||
'avg3': avg3[i], 'avg5': avg5[i], 'avg7': avg7[i],'avg10': avg10[i],'avg20': avg20[i],'avg30': avg30[i],'avg60': avg60[i]})
|
'avg3': avg3[i], 'avg6': avg6[i], 'avg9': avg9[i], 'avg12': avg12[i],'avg24': avg24[i],'avg30': avg30[i],'avg60': avg60[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)
|
||||||
@@ -957,7 +959,7 @@ class BuySellChecker:
|
|||||||
|
|
||||||
temp = {"date": point_temp,
|
temp = {"date": point_temp,
|
||||||
"open": open, "high": high, "low": low, "close": close, "volume": vol, "upper": upper, "lower": lower,
|
"open": open, "high": high, "low": low, "close": close, "volume": vol, "upper": upper, "lower": lower,
|
||||||
"avg3": avg3, "avg7": avg7, "avg5": avg5, "avg10": avg10, "avg20": avg20, "avg30": avg30, "avg60": avg60,
|
"avg3": avg3, "avg6": avg6, "avg9": avg9, "avg12": avg12, "avg24": avg24, "avg30": avg30, "avg60": avg60,
|
||||||
"macd": macd, "macds": macds, "macdo": macdo,
|
"macd": macd, "macds": macds, "macdo": macdo,
|
||||||
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d,
|
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d,
|
||||||
"rsi": rsi, "rsis": rsis}
|
"rsi": rsi, "rsis": rsis}
|
||||||
@@ -1309,8 +1311,8 @@ class BuySellChecker:
|
|||||||
sell, weight = self.getSellPriceAndWeight_3000(data, last_index)
|
sell, weight = self.getSellPriceAndWeight_3000(data, last_index)
|
||||||
buy, weight = self.getBuyPriceAndWeight_3000(data, last_index)
|
buy, weight = self.getBuyPriceAndWeight_3000(data, last_index)
|
||||||
else:
|
else:
|
||||||
sell, weight = self.getBuyPriceAndWeight_3000(data, last_index)
|
sell, weight = self.getSellPriceAndWeight_15000(data, last_index)
|
||||||
buy, weight = self.getBuyPriceAndWeight_3000(data, last_index)
|
buy, weight = self.getBuyPriceAndWeight_15000(data, last_index)
|
||||||
|
|
||||||
bsLine['buy'] = [buy]
|
bsLine['buy'] = [buy]
|
||||||
bsLine['buy_weight'] = [weight]
|
bsLine['buy_weight'] = [weight]
|
||||||
|
|||||||
BIN
resources/hts.db
BIN
resources/hts.db
Binary file not shown.
@@ -289,24 +289,51 @@ if __name__ == "__main__":
|
|||||||
labelMaker = LabelMaker(RESOURCE_PATH)
|
labelMaker = LabelMaker(RESOURCE_PATH)
|
||||||
|
|
||||||
view = True
|
view = True
|
||||||
stock_code = "252670"
|
stock_code = "122630"
|
||||||
ymd = "20220809"
|
ymd = "20220811"
|
||||||
|
|
||||||
if view:
|
if view:
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0930", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "0905", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0931", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "0910", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0951", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "0911", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0953", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1030", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0954", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1034", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0955", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1109", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0956", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1110", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "0959", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1111", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "1509", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1207", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "1515", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1211", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "1516", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1228", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "1518", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1229", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "1519", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1230", 2)
|
||||||
labelMaker.makeLabel(db_filename, "252670", "20220809", "1520", 1)
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1231", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1232", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1249", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1303", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1304", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1420", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1421", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1436", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1437", 2)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1438", 2)
|
||||||
|
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "0949", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1000", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1001", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1016", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1017", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1045", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1049", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1126", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1127", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1315", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1316", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1317", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1458", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1459", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1500", 1)
|
||||||
|
labelMaker.makeLabel(db_filename, "122630", "20220811", "1501", 1)
|
||||||
|
|
||||||
labelMaker.showLabels(stock_code, ymd)
|
labelMaker.showLabels(stock_code, ymd)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user