스토캐스틱, 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 os
from datetime import datetime, timedelta
import pandas as pd
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.Stochastic import Stochastic
from stockpredictor.analysis.RSI import RSI
# enum 주문 상태 세팅용
class EorderBS(Enum):
buy = 1 # 매수
@@ -32,10 +35,14 @@ class HTS:
objCpCodeMgr = None
common = None
stock = []
stochastic = None
rsi = None
def __init__(self):
self.common = Common()
self.stochastic = Stochastic()
self.rsi = RSI()
#self.connect()
return
@@ -558,7 +565,6 @@ class HTS:
upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드
lower_df = max20 - (stddev20 * 2) # 하단 볼린저 밴드
size = len(result["open"])
window = 5
open = result["open"]
close = result["close"]
@@ -597,7 +603,31 @@ class HTS:
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)
df_final_time = pd.DatetimeIndex(point_temp)
data.index = df_final_time
@@ -1115,9 +1145,9 @@ if __name__ == "__main__":
#for stock_code in stock_codes:
#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.simulate(stock_codes[0], given_day)
hts.buyRealTime(stock_codes[0], given_day)
hts.simulate(stock_codes[0], given_days[0])
#hts.buyRealTime(stock_codes[0], given_day)
print ("done...")