스토캐스틱, RSI 추가

This commit is contained in:
dsyoon
2021-10-14 16:34:50 +09:00
parent bd18f81851
commit 6bca00ae62

View File

@@ -1,12 +1,15 @@
import win32com.client #import win32com.client
import time import time
import os import os
from datetime import datetime, timedelta from datetime import datetime, timedelta
import pandas as pd import pandas as pd
from enum import Enum from enum import Enum
#import plotly.graph_objects as go import plotly.graph_objects as go
from stockpredictor.analysis.Common import Common from stockpredictor.analysis.Common import Common
from stockpredictor.analysis.Stochastic import Stochastic
from stockpredictor.analysis.RSI import RSI
# enum 주문 상태 세팅용 # enum 주문 상태 세팅용
class EorderBS(Enum): class EorderBS(Enum):
buy = 1 # 매수 buy = 1 # 매수
@@ -32,10 +35,14 @@ class HTS:
objCpCodeMgr = None objCpCodeMgr = None
common = None common = None
stock = [] stochastic = None
rsi = None
def __init__(self): def __init__(self):
self.common = Common() self.common = Common()
self.stochastic = Stochastic()
self.rsi = RSI()
#self.connect() #self.connect()
return return
@@ -558,7 +565,6 @@ class HTS:
upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드 upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드
lower_df = max20 - (stddev20 * 2) # 하단 볼린저 밴드 lower_df = max20 - (stddev20 * 2) # 하단 볼린저 밴드
size = len(result["open"])
window = 5 window = 5
open = result["open"] open = result["open"]
close = result["close"] close = result["close"]
@@ -597,7 +603,31 @@ class HTS:
point_temp = result["time"] point_temp = result["time"]
temp = {"Date": point_temp, "Open": open, "High": high, "Low": low, "Close": close, "Volume": vol, "avg1": avg1, "avg2": avg2, "avg5": avg5, "avg10": avg10, "avg20": avg20, "avg30": avg30, "avg40": avg40, "avg50": avg50, "avg60": avg60} STOCK = []
for i in range(len(result["open"])):
STOCK.append({'volume': vol[i], 'close': close[i], 'open': open[i],
'high': high[i], 'low': low[i], 'avg5': avg2[i],
'avg20': avg5[i], 'avg60': avg10[i], 'avg120': avg20[i],
'avg240': avg30[i]})
# stochastic 계산
stochastic_df = self.stochastic.apply(pd.DataFrame(STOCK))
stochastic_df = stochastic_df.fillna(0)
fast_k = stochastic_df['fast_k'].values.tolist()
slow_k = stochastic_df['slow_k'].values.tolist()
slow_d = stochastic_df['slow_d'].values.tolist()
# rsi 계산
rsi_df = self.rsi.apply(pd.DataFrame(STOCK))
rsi_df = rsi_df.fillna(0)
rsi = rsi_df['rsi'].values.tolist()
rsis = rsi_df['rsis'].values.tolist()
temp = {"Date": point_temp,
"Open": open, "High": high, "Low": low, "Close": close, "Volume": vol,
"avg1": avg1, "avg2": avg2, "avg5": avg5, "avg10": avg10, "avg20": avg20, "avg30": avg30, "avg40": avg40, "avg50": avg50, "avg60": avg60,
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d,
"rsi": rsi, "rsis": rsis}
data = pd.DataFrame(temp) data = pd.DataFrame(temp)
df_final_time = pd.DatetimeIndex(point_temp) df_final_time = pd.DatetimeIndex(point_temp)
data.index = df_final_time data.index = df_final_time
@@ -1115,9 +1145,9 @@ if __name__ == "__main__":
#for stock_code in stock_codes: #for stock_code in stock_codes:
#hts.simulate(stock_code, given_day) #hts.simulate(stock_code, given_day)
given_day = datetime.today().strftime('%Y%m%d') #given_day = datetime.today().strftime('%Y%m%d')
#hts.writeStockData(stock_codes, given_day) #hts.writeStockData(stock_codes, given_day)
#hts.simulate(stock_codes[0], given_day) hts.simulate(stock_codes[0], given_days[0])
hts.buyRealTime(stock_codes[0], given_day) #hts.buyRealTime(stock_codes[0], given_day)
print ("done...") print ("done...")