This commit is contained in:
dosangyoon
2021-10-07 21:00:44 +09:00
parent af3676dea4
commit c6254cbe12
3 changed files with 129 additions and 82 deletions

View File

@@ -1,10 +1,10 @@
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
# enum 주문 상태 세팅용 # enum 주문 상태 세팅용
@@ -517,16 +517,24 @@ class HTS:
vol = result["vol"] vol = result["vol"]
close_df = pd.DataFrame(close) close_df = pd.DataFrame(close)
avg5_list = close_df.rolling(window=3).mean().fillna(close[0]).values.tolist() avg1_list = close_df.rolling(window=1).mean().fillna(close[0]).values.tolist()
avg1 = [item[0] for item in avg1_list]
avg2_list = close_df.rolling(window=2).mean().fillna(close[0]).values.tolist()
avg2 = [item[0] for item in avg2_list]
avg5_list = close_df.rolling(window=5).mean().fillna(close[0]).values.tolist()
avg5 = [item[0] for item in avg5_list] avg5 = [item[0] for item in avg5_list]
avg20_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist() avg10_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist()
avg10 = [item[0] for item in avg10_list]
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
avg20 = [item[0] for item in avg20_list] avg20 = [item[0] for item in avg20_list]
avg60_list = close_df.rolling(window=20).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]
avg40_list = close_df.rolling(window=40).mean().fillna(close[0]).values.tolist()
avg40 = [item[0] for item in avg40_list]
avg50_list = close_df.rolling(window=50).mean().fillna(close[0]).values.tolist()
avg50 = [item[0] for item in avg50_list]
avg60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
avg60 = [item[0] for item in avg60_list] avg60 = [item[0] for item in avg60_list]
avg120_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
avg120 = [item[0] for item in avg120_list]
avg240_list = close_df.rolling(window=40).mean().fillna(close[0]).values.tolist()
avg240 = [item[0] for item in avg240_list]
upper, lower = [], [] upper, lower = [], []
for i in range(len(upper_df)): for i in range(len(upper_df)):
@@ -539,7 +547,7 @@ class HTS:
point_temp = result["time"] point_temp = result["time"]
temp = {"Date": point_temp, "Open": open, "High": high, "Low": low, "Close": close, "Volume": vol, "avg5": avg5, "avg20": avg20, "avg60": avg60, "avg120": avg120, "avg240": avg240} 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}
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
@@ -556,11 +564,15 @@ class HTS:
data['Low'] = pd.to_numeric(data['Low']) data['Low'] = pd.to_numeric(data['Low'])
data['Close'] = pd.to_numeric(data['Close']) data['Close'] = pd.to_numeric(data['Close'])
data['Volume'] = pd.to_numeric(data['Volume']) data['Volume'] = pd.to_numeric(data['Volume'])
data['avg1'] = pd.to_numeric(data['avg1'])
data['avg2'] = pd.to_numeric(data['avg2'])
data['avg5'] = pd.to_numeric(data['avg5']) data['avg5'] = pd.to_numeric(data['avg5'])
data['avg10'] = pd.to_numeric(data['avg10'])
data['avg20'] = pd.to_numeric(data['avg20']) data['avg20'] = pd.to_numeric(data['avg20'])
data['avg30'] = pd.to_numeric(data['avg30'])
data['avg40'] = pd.to_numeric(data['avg40'])
data['avg50'] = pd.to_numeric(data['avg50'])
data['avg60'] = pd.to_numeric(data['avg60']) data['avg60'] = pd.to_numeric(data['avg60'])
data['avg120'] = pd.to_numeric(data['avg120'])
data['avg240'] = pd.to_numeric(data['avg240'])
buy_colors = [] buy_colors = []
for i in range(len(buy_line)): for i in range(len(buy_line)):
@@ -582,17 +594,21 @@ class HTS:
sell_check = go.Scatter(x=data['Date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0)) 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=upper, name="upper", line_color='#8B4513') bolinger_upper = go.Scatter(x=data['Date'], y=upper, name="upper", line_color='#8B4513')
bolinger_lower = go.Scatter(x=data['Date'], y=lower, name="lower", line_color='#8B4513') bolinger_lower = go.Scatter(x=data['Date'], y=lower, name="lower", line_color='#8B4513')
avg5 = go.Scatter(x=data['Date'], y=data['avg5'], name="avg5", line_color='#FF0000') avg1 = go.Scatter(x=data['Date'], y=data['avg1'], name="avg1", line_color='#FF0000')
avg20 = go.Scatter(x=data['Date'], y=data['avg20'], name="avg20", line_color='#F43B86') avg2 = go.Scatter(x=data['Date'], y=data['avg2'], name="avg2", line_color='#A200FF')
avg60 = go.Scatter(x=data['Date'], y=data['avg60'], name="avg60", line_color='#F0A500') avg5 = go.Scatter(x=data['Date'], y=data['avg5'], name="avg5", line_color='#0800FF')
avg120 = go.Scatter(x=data['Date'], y=data['avg120'], name="avg120", line_color='#14279B') avg10 = go.Scatter(x=data['Date'], y=data['avg10'], name="avg10", line_color='#FF7C00')
avg240 = go.Scatter(x=data['Date'], y=data['avg240'], name="avg240", line_color='#000000') avg20 = go.Scatter(x=data['Date'], y=data['avg20'], name="avg20", line_color='#00AAFF')
avg30 = go.Scatter(x=data['Date'], y=data['avg30'], name="avg30", line_color='#FFD100')
avg40 = go.Scatter(x=data['Date'], y=data['avg40'], name="avg40", line_color='#A600FF')
avg50 = go.Scatter(x=data['Date'], y=data['avg50'], name="avg50", line_color='#FF00E0')
avg60 = go.Scatter(x=data['Date'], y=data['avg60'], name="avg60", 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') 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')
# 그래프를 그린다. # 그래프를 그린다.
fig = go.Figure(data=[candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check, avg5, avg20, avg60, avg120, avg240]) fig = go.Figure(data=[candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check, avg1, avg2, avg5, avg10, avg20, avg30, avg40, avg50, avg60])
fig.update_layout(title=stock_code + "_" + given_day) fig.update_layout(title=stock_code + "_" + given_day)
fig.show() fig.show()
return return
@@ -772,6 +788,7 @@ class HTS:
bsLine['sell'] = [-1 for i in range(size)] bsLine['sell'] = [-1 for i in range(size)]
i = size - 1 i = size - 1
"""
status = self.checkStatus(STOCK, i) status = self.checkStatus(STOCK, i)
count_1 = 0 count_1 = 0
# if "GOLDEN#2_" in status: count_1 += 1 # if "GOLDEN#2_" in status: count_1 += 1
@@ -816,7 +833,12 @@ class HTS:
if count_0 > 0: if count_0 > 0:
bsLine['buy'][i] = 0 bsLine['buy'][i] = 0
bsLine['sell'][i] = STOCK[i]['close'] + 5 bsLine['sell'][i] = STOCK[i]['close'] + 5
"""
if STOCK[i]['low'] < lower[i]:
bsLine['buy'][i] = STOCK[i]['close'] - 5
if STOCK[i]['close'] > upper[i]:
bsLine['sell'][i] = STOCK[i]['close'] + 5
return bsLine['buy'][i], bsLine['sell'][i] return bsLine['buy'][i], bsLine['sell'][i]
@@ -824,13 +846,14 @@ class HTS:
size = len(data["Close"]) size = len(data["Close"])
STOCK = [] STOCK = []
for i in range(size): for i in range(size):
STOCK.append({'volume': data['Volume'][i], 'close': data["Close"][i], 'open': data["Open"][i], 'high': data["High"][i], 'low': data["Low"][i], 'avg5': data["avg5"][i], 'avg20': data["avg20"][i], 'avg60': data["avg60"][i], 'avg120': data["avg120"][i], 'avg240': data["avg240"][i]}) STOCK.append({'volume': data['Volume'][i], 'close': data["Close"][i], 'open': data["Open"][i], 'high': data["High"][i], 'low': data["Low"][i], 'avg5': data["avg2"][i], 'avg20': data["avg5"][i], 'avg60': data["avg10"][i], 'avg120': data["avg20"][i], 'avg240': data["avg30"][i]})
bsLine = {} bsLine = {}
bsLine['buy'] = [-1 for i in range(len(lower))] bsLine['buy'] = [-1 for i in range(len(lower))]
bsLine['sell'] = [-1 for i in range(len(lower))] bsLine['sell'] = [-1 for i in range(len(lower))]
for i in range(5, size-5): for i in range(5, size-5):
"""
status = self.checkStatus(STOCK, i) status = self.checkStatus(STOCK, i)
count_1 = 0 count_1 = 0
#if "GOLDEN#2_" in status: count_1 += 1 #if "GOLDEN#2_" in status: count_1 += 1
@@ -876,7 +899,12 @@ class HTS:
# bsLine['sell'][i + 2] = STOCK[i]['close'] + 5 # bsLine['sell'][i + 2] = STOCK[i]['close'] + 5
if data["avg60"][i - 1] > data["avg60"][i]: if data["avg60"][i - 1] > data["avg60"][i]:
bsLine['sell'][i] = STOCK[i]['close'] bsLine['sell'][i] = STOCK[i]['close']
"""
if STOCK[i]['low'] < lower[i]:
bsLine['buy'][i] = STOCK[i]['close'] - 5
if STOCK[i]['close'] > upper[i]:
bsLine['sell'][i] = STOCK[i]['close'] + 5
return bsLine return bsLine
@@ -911,7 +939,7 @@ class HTS:
def buyRealTime(self, stock_code, given_day): def buyRealTime(self, stock_code, given_day):
PREVIOUS_PRICE = 0 PREVIOUS_PRICE = 0
BUY_COUNT = 200 BUY_COUNT = 100
TOTAL_BUY_AMT = 0 TOTAL_BUY_AMT = 0
logFp = open(given_day+".log", "w") logFp = open(given_day+".log", "w")
@@ -927,72 +955,67 @@ class HTS:
"low": [], "low": [],
"vol": []} "vol": []}
avg60_1 = 0
avg60_2 = 0
final_price = 0 final_price = 0
print ("START...") print ("START...")
while datetime.strptime(given_day + " 083000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(given_day + " 151600", '%Y%m%d %H%M%S'): while datetime.strptime(given_day + " 083000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(given_day + " 15200", '%Y%m%d %H%M%S'):
second = datetime.now().strftime('%Y%m%d %H%M%S') second = datetime.now().strftime('%Y%m%d %H%M%S')
if second in timecheck and not timecheck[second]: if datetime.now() < datetime.strptime(given_day + " 144000", '%Y%m%d %H%M%S'):
print("TIMECHECK", second) if second in timecheck and not timecheck[second]:
logFp.write("%s,%s,\n" %("TIMECHECK", second)) print("TIMECHECK", second)
logFp.flush() logFp.write("%s,%s,\n" %("TIMECHECK", second))
logFp.flush()
# 데이터를 가지고 온다. # 데이터를 가지고 온다.
self.getRealTime(stock_code, given_day, result) self.getRealTime(stock_code, given_day, result)
# 분석을 통해서 볼린저밴드 상/하단을 계산한다. # 분석을 통해서 볼린저밴드 상/하단을 계산한다.
data, upper, lower = self.analyze(result) data, upper, lower = self.analyze(result)
avg60_2 = data['avg60'][len(data['avg60']) - 2] final_price = data["Close"][len(data["Close"])- 1]
avg60_1 = data['avg60'][len(data['avg60']) - 1] # 사야 할 시점/가격과 팔아야 할 시점/가격을 체크한다.
final_price = data["Close"][len(data["Close"])- 1] bs_buy_price, bs_sell_price = self.checkTransaction_Realtime(data, upper, lower)
# 사야 할 시점/가격과 팔아야 할 시점/가격을 체크한다.
bs_buy_price, bs_sell_price = self.checkTransaction_Realtime(data, upper, lower)
if bs_buy_price > 0: if bs_buy_price > 0:
if PREVIOUS_PRICE > 0: if PREVIOUS_PRICE > 0:
if PREVIOUS_PRICE > bs_buy_price: if PREVIOUS_PRICE > bs_buy_price:
if BUY_COUNT > 240: if BUY_COUNT > 140:
BUY_COUNT = 240 BUY_COUNT = 140
if BUY_COUNT <= 140: if BUY_COUNT <= 40:
BUY_COUNT = 140 BUY_COUNT = 40
BUY_COUNT += 10 BUY_COUNT += 10
elif PREVIOUS_PRICE < bs_buy_price: elif PREVIOUS_PRICE < bs_buy_price:
if BUY_COUNT > 250: if BUY_COUNT > 150:
BUY_COUNT = 260 BUY_COUNT = 160
if BUY_COUNT <= 150: if BUY_COUNT <= 50:
BUY_COUNT = 160 BUY_COUNT = 60
BUY_COUNT -= 10 BUY_COUNT -= 10
PREVIOUS_PRICE = bs_buy_price PREVIOUS_PRICE = bs_buy_price
# 매수 주문 # 매수 주문
# 현재까지 매입금액이 7백만원 이하일 때만 매수를 한다. # 현재까지 매입금액이 7백만원 이하일 때만 매수를 한다.
if TOTAL_BUY_AMT < 7000000: if TOTAL_BUY_AMT < 7000000:
self.requestOrder("2", stock_code, BUY_COUNT , bs_buy_price) self.requestOrder("2", stock_code, BUY_COUNT , bs_buy_price)
## 매도 주문 (아래 잔고를 체크해서 매도를 호출하는 것으로 시도한다.) print("BUY", second, bs_buy_price)
#time.sleep(60) logFp.write("%s,%s, %d\n" % ("BUY", second, bs_buy_price))
#self.requestOrder("1", stock_code, BUY_COUNT , price + 5) logFp.flush()
print("BUY", second, bs_buy_price)
logFp.write("%s,%s, %d\n" % ("BUY", second, bs_buy_price))
logFp.flush()
# 가져온 만큼 데이터를 누적해서 파일로 작성한다. if bs_sell_price > 0:
self.write(given_day, result) jangoDic = self.requstJango()
if jangoDic and len(jangoDic.keys()) > 0:
for code in jangoDic:
TOTAL_BUY_AMT = jangoDic[code]['매입금액']
if jangoDic[code]['매도가능'] > 0:
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], bs_sell_price)
timecheck[second] = True
else:
#print("NONE", second)
logFp.write("%s,%s,\n" % ("NONE", second))
logFp.flush()
timecheck[second] = True
else: else:
#print("NONE", second)
logFp.write("%s,%s,\n" % ("NONE", second))
logFp.flush()
# 60일 선이 꺾여서 하락 중일 경우만 바로 매도를 한다.
if (((avg60_1 != 0 and avg60_2 != 0) and avg60_2 > avg60_1) or
(datetime.now() >= datetime.strptime(given_day + " 151500", '%Y%m%d %H%M%S')) or
(datetime.now() < datetime.strptime(given_day + " 090503", '%Y%m%d %H%M%S'))):
# 만약 잔고가 있으면 장부가보다 5원 높게 매도한다. # 만약 잔고가 있으면 장부가보다 5원 높게 매도한다.
jangoDic = self.requstJango() jangoDic = self.requstJango()
if jangoDic and len(jangoDic.keys()) > 0: if jangoDic and len(jangoDic.keys()) > 0:
@@ -1015,6 +1038,7 @@ class HTS:
else: else:
# 장부가의 마지막 자리수가 7,8,9 라면 (2097, 2098, 2099 -> 2105 에 매도) # 장부가의 마지막 자리수가 7,8,9 라면 (2097, 2098, 2099 -> 2105 에 매도)
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 15) self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 15)
break
time.sleep(0.9) time.sleep(0.9)
@@ -1038,11 +1062,13 @@ if __name__ == "__main__":
#hts.getChartData(stock_codes) #hts.getChartData(stock_codes)
#hts.currentStock(stock_codes) #hts.currentStock(stock_codes)
#for given_day in given_days: #for given_day in given_days:
#hts.writeStockData(stock_codes, given_day)
#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.buyRealTime(stock_codes[0], given_day) #hts.buyRealTime(stock_codes[0], given_day)
print ("done...") print ("done...")

View File

@@ -520,10 +520,16 @@ class HTS:
ma5 = [item[0] for item in ma5_list] ma5 = [item[0] for item in ma5_list]
ma10_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist() ma10_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist()
ma10 = [item[0] for item in ma10_list] ma10 = [item[0] for item in ma10_list]
ma15_list = close_df.rolling(window=15).mean().fillna(close[0]).values.tolist()
ma15 = [item[0] for item in ma15_list]
ma20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist() ma20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
ma20 = [item[0] for item in ma20_list] ma20 = [item[0] for item in ma20_list]
ma30_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
ma30 = [item[0] for item in ma30_list]
ma40_list = close_df.rolling(window=40).mean().fillna(close[0]).values.tolist()
ma40 = [item[0] for item in ma40_list]
ma50_list = close_df.rolling(window=50).mean().fillna(close[0]).values.tolist()
ma50 = [item[0] for item in ma50_list]
ma60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
ma60 = [item[0] for item in ma60_list]
upper, lower = [], [] upper, lower = [], []
for i in range(len(upper_df)): for i in range(len(upper_df)):
@@ -538,7 +544,7 @@ class HTS:
upper_temp = [upper[i] for i in range(size) if i % window == 0] upper_temp = [upper[i] for i in range(size) if i % window == 0]
lower_temp = [lower[i] for i in range(size) if i % window == 0] lower_temp = [lower[i] for i in range(size) if i % window == 0]
temp = {"Date": point_temp, "Open": open, "High": high, "Low": low, "Close": close, "Volume": vol, "ma2": ma2, "ma5": ma5, "ma10": ma10, "ma15": ma15, "ma20": ma20} temp = {"Date": point_temp, "Open": open, "High": high, "Low": low, "Close": close, "Volume": vol, "ma2": ma2, "ma5": ma5, "ma10": ma10, "ma20": ma20, "ma30": ma30, "ma40": ma40, "ma50": ma50, "ma60": ma60}
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
@@ -558,8 +564,11 @@ class HTS:
data['ma2'] = pd.to_numeric(data['ma2']) data['ma2'] = pd.to_numeric(data['ma2'])
data['ma5'] = pd.to_numeric(data['ma5']) data['ma5'] = pd.to_numeric(data['ma5'])
data['ma10'] = pd.to_numeric(data['ma10']) data['ma10'] = pd.to_numeric(data['ma10'])
data['ma15'] = pd.to_numeric(data['ma15'])
data['ma20'] = pd.to_numeric(data['ma20']) data['ma20'] = pd.to_numeric(data['ma20'])
data['ma30'] = pd.to_numeric(data['ma30'])
data['ma40'] = pd.to_numeric(data['ma40'])
data['ma50'] = pd.to_numeric(data['ma50'])
data['ma60'] = pd.to_numeric(data['ma60'])
buy_colors = [] buy_colors = []
for i in range(len(buy_line)): for i in range(len(buy_line)):
@@ -584,14 +593,17 @@ class HTS:
ma2 = go.Scatter(x=data['Date'], y=data['ma2'], name="ma2", line_color='#FF0000') ma2 = go.Scatter(x=data['Date'], y=data['ma2'], name="ma2", line_color='#FF0000')
ma5 = go.Scatter(x=data['Date'], y=data['ma5'], name="ma5", line_color='#F43B86') ma5 = go.Scatter(x=data['Date'], y=data['ma5'], name="ma5", line_color='#F43B86')
ma10 = go.Scatter(x=data['Date'], y=data['ma10'], name="ma10", line_color='#F0A500') ma10 = go.Scatter(x=data['Date'], y=data['ma10'], name="ma10", line_color='#F0A500')
ma15 = go.Scatter(x=data['Date'], y=data['ma15'], name="ma15", line_color='#14279B')
ma20 = go.Scatter(x=data['Date'], y=data['ma20'], name="ma20", line_color='#000000') ma20 = go.Scatter(x=data['Date'], y=data['ma20'], name="ma20", line_color='#000000')
ma30 = go.Scatter(x=data['Date'], y=data['ma30'], name="ma30", line_color='#14279B')
ma40 = go.Scatter(x=data['Date'], y=data['ma40'], name="ma40", line_color='#14279B')
ma50 = go.Scatter(x=data['Date'], y=data['ma50'], name="ma50", line_color='#14279B')
ma60 = go.Scatter(x=data['Date'], y=data['ma60'], name="ma60", line_color='#14279B')
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')
# 그래프를 그린다. # 그래프를 그린다.
fig = go.Figure(data=[candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check, ma2, ma10, ma15, ma20]) fig = go.Figure(data=[candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check, ma2, ma10, ma20, ma30, ma40, ma50, ma60])
fig.update_layout(title=given_day + "_2x") fig.update_layout(title=given_day + "_2x")
fig.show() fig.show()
return return
@@ -602,9 +614,13 @@ class HTS:
close = data["Close"] close = data["Close"]
open = data["Open"] open = data["Open"]
ma2 = data["ma2"] ma2 = data["ma2"]
ma5 = data["ma5"]
ma10 = data["ma10"] ma10 = data["ma10"]
ma15 = data["ma15"]
ma20 = data["ma20"] ma20 = data["ma20"]
ma30 = data["ma30"]
ma40 = data["ma40"]
ma50 = data["ma50"]
ma60 = data["ma60"]
bsLine = {} bsLine = {}
bsLine['buy'] = [-1 for i in range(len(lower))] bsLine['buy'] = [-1 for i in range(len(lower))]
@@ -823,8 +839,11 @@ class HTS:
ma2 = data["ma2"] ma2 = data["ma2"]
ma5 = data["ma5"] ma5 = data["ma5"]
ma10 = data["ma10"] ma10 = data["ma10"]
ma15 = data["ma15"]
ma20 = data["ma20"] ma20 = data["ma20"]
ma30 = data["ma30"]
ma40 = data["ma40"]
ma50 = data["ma50"]
ma60 = data["ma60"]
# 살 시점인지 체크 # 살 시점인지 체크
# 볼린저밴드 하단에 연속으로 같은 가격이 왔을 때, # 볼린저밴드 하단에 연속으로 같은 가격이 왔을 때,

View File

@@ -1,4 +1,6 @@
time, check time, check
090303,False
090403,False
090503,False 090503,False
090603,False 090603,False
090703,False 090703,False
1 time check
2 090303 False
3 090403 False
4 090503 False
5 090603 False
6 090703 False