This commit is contained in:
dosangyoon
2021-10-15 03:01:53 +09:00
parent 0308f3838c
commit f3dcf2aeda
3 changed files with 74 additions and 98 deletions

View File

@@ -50,41 +50,10 @@ class Simulation:
bsLine['sell'] = [-1 for i in range(size)]
for i in range(21, size-5):
if data["High"][i] > data["upper"][i]:
bsLine['sell'][i] = data["High"][i]
if data["slow_k"][i] <= 36:
if data["Low"][i] < data["lower"][i]:
bsLine['buy'][i] = data["Close"][i] - 5
if data["slow_k"][i] <= 25:
if data["slow_k"][i - 1] < data["slow_d"][i - 1] and data["slow_d"][i] < data["slow_k"][i]:
bsLine['buy'][i] = data["Close"][i] - 5
# rsi가 rsis 위로 올라오며 15 이하일 경우 10배로 주문함 (14:30 이전)
if data["rsi"][i] < 15 and data["rsis"][i] < 15 and data["rsi"][i - 1] < data["rsis"][i - 1] and data["rsis"][i] < data["rsi"][i]:
bsLine['buy'][i] = data["Close"][i] - 5
bsLine['weight'][i] = 10
if data["slow_k"][i] == 1:
bsLine['weight'][i] = 8
elif data["slow_k"][i] in(2,3):
bsLine['weight'][i] = 7
elif data["slow_k"][i] in(4,5,6):
bsLine['weight'][i] = 6
elif data["slow_k"][i] in(7,8,9,10):
bsLine['weight'][i] = 5
elif data["slow_k"][i] in(11,12,13,14,15):
bsLine['weight'][i] = 4
elif data["slow_k"][i] in(16,17,18,19,20,21):
bsLine['weight'][i] = 3
elif data["slow_k"][i] in(22,23,24,25,26,27,28):
bsLine['weight'][i] = 2
elif data["slow_k"][i] in(29,30,31,32,33,34,35,36):
bsLine['weight'][i] = 1
if data["rsi"][i] < 10:
bsLine['weight'][i] = 8
if i<=20:
bsLine['weight'][i] = 1
buy, weight, sell = self.bs.getPriceAndWeight(data, i)
bsLine['buy'][i] = buy
bsLine['weight'][i] = weight
bsLine['sell'][i] = sell
return bsLine
@@ -98,6 +67,7 @@ class Simulation:
data['Low'] = pd.to_numeric(data['Low'])
data['Close'] = pd.to_numeric(data['Close'])
data['Volume'] = pd.to_numeric(data['Volume'])
data['avg5'] = pd.to_numeric(data['avg5'])
data["fast_k"] = pd.to_numeric(data['fast_k'])
data["slow_k"] = pd.to_numeric(data['slow_k'])
data["slow_d"] = pd.to_numeric(data['slow_d'])
@@ -124,6 +94,7 @@ class Simulation:
sell_check = go.Scatter(x=data['Date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0))
bolinger_upper = go.Scatter(x=data['Date'], y=data["upper"], name="upper", line_color='#8B4513')
bolinger_lower = go.Scatter(x=data['Date'], y=data["lower"], name="lower", line_color='#8B4513')
avg5 = go.Scatter(x=data['Date'], y=data["avg5"], name="avg5", line_color='#000000')
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')
fast_k_line = go.Scatter(x=data['Date'], y=data["fast_k"], mode='lines', name='fast_k')
@@ -133,7 +104,7 @@ class Simulation:
rsis_line = go.Scatter(x=data['Date'], y=data["rsis"], mode='lines', name='rsis')
#candle_data = [candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check, avg1, avg2, avg5, avg10, avg20, avg30, avg40, avg50, avg60]
candle_data = [candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check]
candle_data = [candle_stick, bolinger_upper, bolinger_lower, avg5, buy_check, sell_check]
stochastic_data = [slow_k_line, slow_d_line]
rsi_data = [rsi_line, rsis_line]
@@ -189,11 +160,13 @@ if __name__ == "__main__":
RESOURCE_DIR = PROJECT_HOME + "/resources/analysis/"+today.strftime("%Y%m%d")
stock_codes = ["252670", "122630"]
given_days = ['20210901','20210902','20210903','20210906','20210907','20210908','20210909','20210910','20210913','20210914','20210915','20210916','20210917','20210923','20210924','20210927','20210928','20210929','20210930','20211001', '20211005']
given_days = ['20211008']
given_days = ['20210901','20210902','20210903','20210906','20210907','20210908','20210909','20210910','20210913',
'20210914','20210915','20210916','20210917','20210923','20210924','20210927','20210928','20210929',
'20210930','20211001', '20211005','20211006', '20211007','20211008', '20211012','20211013', '20211014']
simulation = Simulation()
simulation.simulate(stock_codes[0], given_days[0])
for given_day in given_days:
simulation.simulate(stock_codes[0], given_day)
print ("done...")