This commit is contained in:
dosangyoon
2022-07-29 14:28:27 +09:00
parent b06a89eb2f
commit 794e2ea5f7
1082 changed files with 4441 additions and 446000 deletions

View File

@@ -11,17 +11,21 @@ from hts.OrderChecker import OrderChecker
class HTS_122630 (HTS):
buySellChecker = None
RESOURCE_PATH = None
stock_code = None
buy_count = None
orderChecker = None
buySellChecker = None
def __init__(self, stock_code, buy_count):
def __init__(self, RESOURCE_PATH, stock_code, buy_count):
super().__init__()
self.buySellChecker = BuySellChecker()
self.RESOURCE_PATH = RESOURCE_PATH
self.stock_code = stock_code
self.buy_count = buy_count
self.orderChecker = OrderChecker(self.RESOURCE_PATH, self.stock_code)
self.buySellChecker = BuySellChecker()
return
def checkTransaction(self, data):
@@ -74,9 +78,7 @@ class HTS_122630 (HTS):
return 0, 0
def buyRealTime(self, lastday, today):
orderChecker = OrderChecker(self.stock_code)
timecheckList = pd.read_csv("timecheck.csv").values.tolist()
timecheckList = pd.read_csv("hts/timecheck.csv").values.tolist()
timecheck = {today + " " + str(second).zfill(6):False for second, check in timecheckList}
print("START...")
@@ -110,7 +112,7 @@ class HTS_122630 (HTS):
# 미체결 기록을 가져온다.
ORDER_LIST = self.requestOrderList()
# 매수 주문을 기록한다.
orderListToCancel = orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST)
orderListToCancel = self.orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST)
# 두 시간 이전 미체결을 모두 취소한다.
self.cancelOrderList(orderListToCancel)
# 로그 출력
@@ -120,7 +122,7 @@ class HTS_122630 (HTS):
# 미체결 기록을 가져온다.
ORDER_LIST = self.requestOrderList()
# 매도 주문을 기록을 가져온다.
orderListToCancel = orderChecker.remove(self.stock_code, OrderType.sell, ORDER_LIST)
orderListToCancel = self.orderChecker.remove(self.stock_code, OrderType.sell, ORDER_LIST)
# 매도 미체결을 모두 취소한다.
self.cancelOrderList(orderListToCancel)
@@ -181,19 +183,20 @@ if __name__ == "__main__":
today = datetime.today()
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))
RESOURCE_DIR = PROJECT_HOME + "/resources/analysis/"+today.strftime("%Y%m%d")
PROJECT_HOME = os.path.join(os.path.dirname(__file__))
RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
# KODEX 인버스 * 2
stock_code = "122630"
buy_count = 80
hts = HTS_122630(stock_code, buy_count)
hts = HTS_122630(RESOURCE_PATH, stock_code, buy_count)
today_str = today.strftime('%Y%m%d')
lastday_str = ""
for i in range(1, 10):
lastday_str = (today - timedelta(i)).strftime('%Y%m%d')
if os.path.isfile("./data/" + stock_code + "_" + lastday_str + ".csv"):
last_hts_data_filename = os.path.join(RESOURCE_PATH, "hts", stock_code + "_" + lastday_str + ".csv")
if os.path.isfile(last_hts_data_filename):
break
hts.buyRealTime(lastday_str, today_str)

View File

@@ -12,16 +12,21 @@ from hts.OrderChecker import OrderChecker
class HTS_252670 (HTS):
buySellChecker = None
RESOURCE_PATH = None
stock_code = None
buy_count = None
orderChecker = None
buySellChecker = None
def __init__(self, stock_code, buy_count):
def __init__(self, RESOURCE_PATH, stock_code, buy_count):
super().__init__()
self.buySellChecker = BuySellChecker()
self.RESOURCE_PATH = RESOURCE_PATH
self.stock_code = stock_code
self.buy_count = buy_count
self.orderChecker = OrderChecker(self.RESOURCE_PATH, self.stock_code)
self.buySellChecker = BuySellChecker()
return
def checkTransaction(self, data):
@@ -33,7 +38,7 @@ class HTS_252670 (HTS):
bsLine['sell'] = [-1 for i in range(size)]
last_index = size - 1
#buy, weight, sell = self.buySellChecker.getPriceAndWeight3(data, last_index)
#buy, weight, sell = self.buySellChecker.getPriceAndWeight3(hts, last_index)
sell, weight = self.buySellChecker.getSellPriceAndWeight_3000(data, last_index)
buy, weight = self.buySellChecker.getBuyPriceAndWeight_3000(data, last_index)
return buy, weight, sell
@@ -74,9 +79,8 @@ class HTS_252670 (HTS):
return 0, 0
def buyRealTime(self, lastday, today):
orderChecker = OrderChecker(self.stock_code)
timecheckList = pd.read_csv("timecheck.csv").values.tolist()
timecheckList = pd.read_csv("hts/timecheck.csv").values.tolist()
timecheck = {today + " " + str(second).zfill(6):False for second, check in timecheckList}
print ("START...")
@@ -112,7 +116,7 @@ class HTS_252670 (HTS):
# 미체결 기록을 가져온다.
ORDER_LIST = self.requestOrderList()
# 매수 주문을 기록한다.
orderListToCancel = orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST)
orderListToCancel = self.orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST)
# 두 시간 이전 미체결을 모두 취소한다.
self.cancelOrderList(orderListToCancel)
# 로그 출력
@@ -123,7 +127,7 @@ class HTS_252670 (HTS):
# 미체결 기록을 가져온다.
ORDER_LIST = self.requestOrderList()
# 매도 주문을 기록을 가져온다.
orderListToCancel = orderChecker.remove(self.stock_code, OrderType.sell, ORDER_LIST)
orderListToCancel = self.orderChecker.remove(self.stock_code, OrderType.sell, ORDER_LIST)
# 매도 미체결을 모두 취소한다.
self.cancelOrderList(orderListToCancel)
@@ -183,19 +187,19 @@ if __name__ == "__main__":
today = datetime.today()
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))
RESOURCE_DIR = PROJECT_HOME + "/resources/analysis/"+today.strftime("%Y%m%d")
PROJECT_HOME = os.path.join(os.path.dirname(__file__))
RESOURCE_PATH = os.path.join(PROJECT_HOME, "resources")
# KODEX 인버스 * 2
stock_code = "252670"
buy_count = 100
hts = HTS_252670(stock_code, buy_count)
hts = HTS_252670(RESOURCE_PATH, stock_code, buy_count)
today_str = today.strftime('%Y%m%d')
lastday_str = ""
for i in range(1, 10):
lastday_str = (today - timedelta(i)).strftime('%Y%m%d')
if os.path.isfile("./data/" + stock_code + "_" + lastday_str + ".csv"):
last_hts_data_filename = os.path.join(RESOURCE_PATH, "hts", stock_code + "_" + lastday_str + ".csv")
if os.path.isfile(last_hts_data_filename):
break
hts.buyRealTime(lastday_str, today_str)

View File

@@ -26,13 +26,13 @@ class Simulation:
next(reader)
for rows in reader:
days = rows[0] # data.날짜
time = rows[1] # data.시간
open_v = rows[2] # data.시가
high = rows[3] # data.고가
low = rows[4] # data.저가
close = rows[5] # data.종가
vol = rows[6] # data.거래량
days = rows[0] # hts.날짜
time = rows[1] # hts.시간
open_v = rows[2] # hts.시가
high = rows[3] # hts.고가
low = rows[4] # hts.저가
close = rows[5] # hts.종가
vol = rows[6] # hts.거래량
start_time = datetime.strptime(given_day + " 090000", '%Y%m%d %H%M%S')
temp = datetime.strptime(str(days) + " " + str(time).zfill(4)+"00", '%Y%m%d %H%M%S')
@@ -99,11 +99,11 @@ class Simulation:
avg10 = go.Scatter(x=data['date'], y=data["avg10"], name="avg10", line_color='#ff00ff')
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#8F8203')
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#000000')
#avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#008000')
#avg60 = go.Scatter(x=hts['date'], y=hts["avg60"], name="avg60", 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')
volume_line = go.Scatter(x=data['date'], y=data["volume"], mode='lines', name='volume')
#fast_k_line = go.Scatter(x=data['date'], y=data["fast_k"], mode='lines', name='fast_k')
#fast_k_line = go.Scatter(x=hts['date'], y=hts["fast_k"], mode='lines', name='fast_k')
macd_line = go.Scatter(x=data['date'], y=data["macd"], mode='lines', name='macd')
macd_s_line = go.Scatter(x=data['date'], y=data["macds"], mode='lines', name='macds')
@@ -123,7 +123,7 @@ class Simulation:
# 그래프를 그린다.
"""
fig = go.Figure(data=candle_data)
fig = go.Figure(hts=candle_data)
fig.update_layout(title=stock_code + "_" + given_day)
fig.show()
"""
@@ -165,7 +165,7 @@ class Simulation:
today = days[1]
if path == None:
path = "./hts/data"
path = "resources/hts"
# 데이터를 가지고 온다.
self.getCSV(path + "/" + self.stock_code + "_" + last_day + ".csv", last_day, result)
@@ -193,7 +193,7 @@ if __name__ == "__main__":
('20220722', '20220725')
],
}
path = './hts/data'
path = 'resources/hts'
"""
path = './hts/backup'

74
StockCrawler.py Normal file
View File

@@ -0,0 +1,74 @@
import os
import shutil
import datetime
import time
from stock.crawler.FnGuideCrawler import FnGuideCrawler
from stock.crawler.MetaCrawler import MetaCrawler
from stock.crawler.StockCrawler import StockCrawler
from stock.analysis.AnalyzerSqlite import AnalyzerSqlite
today = datetime.datetime.now().strftime("%Y-%m-%d")
# DB Browser for SQLite: http://hleecaster.com/python-sqlite3/
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))))))
START_DATE = "1900.01.01"
start = time.time()
stockFileName = PROJECT_HOME + '/resources/stock.db'
# 재무제표는 3개월마다 다운로드를 한다.
fnGuideCrawler = FnGuideCrawler(START_DATE)
print("[KOSPI 상장기업 재무제표 다운로드]")
fnGuideCrawler.crawl_fnguide(stockFileName)
metaCrawler = MetaCrawler(START_DATE)
print("\n[증시자금동향 (신용잔고, 펀드자금 잔고)]")
metaCrawler.crawl_money_trend(stockFileName)
print("\n[국내 시장금리]")
metaCrawler.crawl_interest_rates(stockFileName)
print("\n[투자자별 매매동향(Trading_Trend)]")
metaCrawler.crawl_trading_trend(stockFileName)
print("\n[환율 (USD, JPY, EUR, CNY)]")
metaCrawler.crawl_exchange(stockFileName)
print("\n[원유 (WTI), 국제금, COPPER, NATURALGAS, CORN, SOYBEAN]")
metaCrawler.crawl_meterials(stockFileName)
print("\n[종목 다운로드]")
stockCrawler = StockCrawler(START_DATE)
stockCrawler.crawl_etf_stocks(stockFileName)
stockCrawler.crawl_stocks(stockFileName)
#stockCrawler.crawl_special_stocks(stockFileName)
print("\n[종목 분석]")
# S: 분석까지 진행
inFileName = PROJECT_HOME + '/resources/stock.db'
analyzerSqlite = AnalyzerSqlite(PROJECT_HOME, stockFileName)
analyzerSqlite.analyzeDaily()
analyzerSqlite.analyzeGrouping("weekly")
analyzerSqlite.analyzeGrouping("monthly")
analyzerSqlite = AnalyzerSqlite(PROJECT_HOME, stockFileName)
print("\n[종목 결정]")
day = datetime.datetime.today().strftime("%Y%m%d")
outPath = PROJECT_HOME + "/resources/analysis/" + day
if os.path.isdir(outPath):
shutil.rmtree(outPath)
os.mkdir(outPath)
print("print to Html...")
analyzerSqlite.findCandidate(outPath)
# E: 분석까지 진행
print("time : %6.2f", (time.time() - start))
print ("done...")

View File

@@ -37,16 +37,16 @@ class BuySellChecker:
### sell 분석 ###
################
# 1. 볼린져밴드 상단이 최고와 종가 사이 아래에 있는 경우 매도한다.
#if (data["high"][i] - data["close"][i]) / 2 + data["close"][i] > data["upper"][i]:
# sell = data["high"][i]
#if (hts["high"][i] - hts["close"][i]) / 2 + hts["close"][i] > hts["upper"][i]:
# sell = hts["high"][i]
# 2. slow_k가 90이 넘으면 매도한다.
if data["slow_k"][i] > 90:
sell = data["high"][i]
#if data["slow_k"][i] >= 85:
# if data["slow_d"][i-1] < data["slow_k"][i-1] and data["slow_k"][i] < data["slow_d"][i]:
# sell = data["high"][i]
#if hts["slow_k"][i] >= 85:
# if hts["slow_d"][i-1] < hts["slow_k"][i-1] and hts["slow_k"][i] < hts["slow_d"][i]:
# sell = hts["high"][i]
# 3. 2시 이후에는 최고가가 볼린져밴드 상단 위에 있으면 매도한다.
if i > 300 and data["high"][i] > data["upper"][i]:
@@ -347,45 +347,45 @@ class BuySellChecker:
"""
# 이동선을 이용한 매매
# 20분선이 30분선에 돌파 후 지지하는지 확인하고 해당 시점이 양봉이면 매수함
if data['avg20'][i] > data['avg30'][i]:
diff1 = data['avg20'][i] - data['avg30'][i]
diff2 = data['avg20'][i-1] - data['avg30'][i-1]
diff3 = data['avg20'][i-2] - data['avg30'][i-2]
diff4 = data['avg20'][i-3] - data['avg30'][i-3]
diff5 = data['avg20'][i-4] - data['avg30'][i-4]
if hts['avg20'][i] > hts['avg30'][i]:
diff1 = hts['avg20'][i] - hts['avg30'][i]
diff2 = hts['avg20'][i-1] - hts['avg30'][i-1]
diff3 = hts['avg20'][i-2] - hts['avg30'][i-2]
diff4 = hts['avg20'][i-3] - hts['avg30'][i-3]
diff5 = hts['avg20'][i-4] - hts['avg30'][i-4]
if 0 < diff3 < diff2 < diff1:
if data['high'][i-2] <= data['high'][i-1] <= data['high'][i]:
if data['open'][i - 2] <= data['close'][i - 2] and data['open'][i-1] <= data['close'][i-1] and data['open'][i] <= data['close'][i]:
if hts['high'][i-2] <= hts['high'][i-1] <= hts['high'][i]:
if hts['open'][i - 2] <= hts['close'][i - 2] and hts['open'][i-1] <= hts['close'][i-1] and hts['open'][i] <= hts['close'][i]:
if diff5 < diff4 < 0:
if data["rsi"][i] < 30:
buy = (data["open"][i]+data["close"][i])/2
if hts["rsi"][i] < 30:
buy = (hts["open"][i]+hts["close"][i])/2
weight = 7
return self.getBuyCheck(data, i, buy, weight)
return self.getBuyCheck(hts, i, buy, weight)
# 이동선을 이용한 매매
# 3분선과 5분선이 10분 이상 내려오다가 3분선이 5분선을 넘어 서는 순간 매수
# (2022-07-04 09:22) (2022-07-05 09:38) (2022-07-07 09:35) (2022-07-08 09:06) (2022-07-11 09:25) (2022-07-13 10:12) (2022-07-15 14:48)
if int(data["avg3"][i]) > int(data["avg5"][i]):
if int(hts["avg3"][i]) > int(hts["avg5"][i]):
valid = True
same_count = 0
for c in range(1, 11):
if int(data["avg3"][i-c]) == int(data["avg5"][i-c]):
if int(hts["avg3"][i-c]) == int(hts["avg5"][i-c]):
same_count += 1
if int(data["avg3"][i-c]) > int(data["avg5"][i-c]):
if int(hts["avg3"][i-c]) > int(hts["avg5"][i-c]):
valid = False
break
if valid and same_count < 2:
if data['macd'][i] < -5:
buy = data["close"][i] - 5
if hts['macd'][i] < -5:
buy = hts["close"][i] - 5
weight = 1
return self.getBuyCheck(data, i, buy, weight)
return self.getBuyCheck(hts, i, buy, weight)
# 만약 30원 이상 장대 양봉이 나온 경우, 다음이나 다다음 중간 값에서 매수를 한다.
if (data["close"][i] - data["low"][i]) >= 30:
middle = int((data["close"][i] + data["low"][i])/2)
if (hts["close"][i] - hts["low"][i]) >= 30:
middle = int((hts["close"][i] + hts["low"][i])/2)
buy = middle
weight = 1
return self.getBuyCheck(data, i, buy, weight)
return self.getBuyCheck(hts, i, buy, weight)
"""

View File

@@ -383,7 +383,7 @@ class HTS:
# 차트 객체 구하기
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
outfp = open("./data/"+stock_code+"_"+today+".csv", mode="w", encoding="utf-8")
outfp = open("./hts/"+stock_code+"_"+today+".csv", mode="w", encoding="utf-8")
objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
objStockChart.SetInputValue(2, today) # 기간 조회 시, 시작일
@@ -436,13 +436,13 @@ class HTS:
next(reader)
for rows in reader:
days = rows[0] # data.날짜
time = rows[1] # data.시간
open_v = rows[2] # data.시가
high = rows[3] # data.고가
low = rows[4] # data.저가
close = rows[5] # data.종가
vol = rows[6] # data.거래량
days = rows[0] # hts.날짜
time = rows[1] # hts.시간
open_v = rows[2] # hts.시가
high = rows[3] # hts.고가
low = rows[4] # hts.저가
close = rows[5] # hts.종가
vol = rows[6] # hts.거래량
start_time = datetime.strptime(given_day + " 090000", '%Y%m%d %H%M%S')
@@ -468,7 +468,7 @@ class HTS:
"low": [],
"vol": []}
self.getCSV("./data/" + stock_code + "_" + lastday + ".csv", today, result)
self.getCSV("./hts/" + stock_code + "_" + lastday + ".csv", today, result)
int_given_day = int(today)
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")

View File

@@ -8,7 +8,8 @@ class OrderChecker:
saveFileName = None
def __init__(self, stock_code):
def __init__(self, RESOURCE_PATH, stock_code):
self.saveFileName = "./order/" + stock_code + "_" + datetime.today().strftime("%Y%m%d") + ".csv"
self.saveFileName = "./order/"+stock_code+"_"+datetime.today().strftime("%Y%m%d")+".csv"
return

View File

@@ -59,7 +59,7 @@ if __name__ == "__main__":
today = datetime.today()
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))))
RESOURCE_DIR = PROJECT_HOME + "/hits/data"
RESOURCE_DIR = PROJECT_HOME + "/hits/hts"
stock_codes = ["252670", "122630"]
dataDownloader = DataDownloader()

View File

@@ -1,155 +0,0 @@
import os
from datetime import datetime, timedelta
import pandas as pd
import plotly.graph_objects as go
import plotly
from hts.BuySellChecker import BuySellChecker
class WebViewer:
buySellChecker = None
def __init__(self):
self.buySellChecker = BuySellChecker()
return
def getCSV(self, type, fileName, given_day, result):
data = pd.read_csv(fileName)
days = data.날짜
time = data.시간
open = data.시가
close = data.종가
high = data.고가
low = data.저가
vol = data.거래량
start_time = datetime.strptime(given_day + " 090000", '%Y%m%d %H%M%S')
for i in range(len(data)):
if type == "S":
temp = datetime.strptime(str(days[i]) + " " + str(time[i]).zfill(4), '%Y%m%d %H%M%S')
else:
temp = datetime.strptime(str(days[i]) + " " + str(time[i]).zfill(4) + "00", '%Y%m%d %H%M%S')
if temp < start_time:
continue
if temp not in result["check"]:
result["check"].add(temp)
result["time"].append(temp)
result["open"].append(open[i])
result["close"].append(close[i])
result["high"].append(high[i])
result["low"].append(low[i])
result["vol"].append(vol[i])
return
def checkTransaction(self, data):
size = len(data["close"])
bsLine = {}
bsLine['buy'] = [-1 for i in range(size)]
bsLine['weight'] = [-1 for i in range(size)]
bsLine['sell'] = [-1 for i in range(size)]
for i in range(6, size-5):
if self.stock_code == "252670":
buy, weight, sell = self.buySellChecker.getPriceAndWeight1(data, i)
else:
buy, weight, sell = self.buySellChecker.getPriceAndWeight2(data, i)
bsLine['buy'][i] = buy
bsLine['weight'][i] = weight
bsLine['sell'][i] = sell
return bsLine
def draw(self, stock_code, given_day, data):
data['open'] = pd.to_numeric(data['open'])
data['high'] = pd.to_numeric(data['high'])
data['low'] = pd.to_numeric(data['low'])
data['close'] = pd.to_numeric(data['close'])
# 그래프를 설정한다.
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')
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')
buy_check = go.Scatter(x=data['date'], mode='markers', name="buy_check")
candle_data = [candle_stick, bolinger_upper, bolinger_lower, buy_check]
# 그래프를 그린다.
# mothod #1
fig = go.FigureWidget(data=candle_data)
fig.update_layout(height=800, title=stock_code + "_" + given_day)
fig.show()
#plotly.offline.plot(fig, filename='file.html')
""" # mothod #2
fig = subplots.make_subplots(rows=1, cols=1, subplot_titles=('캔들'))
for trace in candle_data:
fig.append_trace(trace, 1, 1)
fig.update_layout(height=800, title=stock_code + "_" + given_day)
fig.show()
"""
return
def simulate(self, stock_code, type, GIVEN_DAY, IN_DIR, OUT_DIR, fileName):
result = {"check": set(),
"time": [],
"open": [],
"close": [],
"high": [],
"low": [],
"vol": []}
# 데이터를 가지고 온다.
self.getCSV(type, IN_DIR+"/"+fileName, GIVEN_DAY, result)
# 분석을 통해서 볼린저밴드 상/하단을 계산한다.
data = self.buySellChecker.analyze(result)
# 그래프를 그린다.
self.draw(stock_code, GIVEN_DAY, data)
return
if __name__ == "__main__":
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))))
RSC_DIR = PROJECT_HOME + "/resources"
IN_DIR = RSC_DIR + "/raw"
OUT_DIR = RSC_DIR + "/tagging"
stock_code = "252670"
#stock_code = "122630"
start_date = "20220602"
webViewer = WebViewer()
zero_count_m, zero_count_S = 0, 10
for i in range(100000):
given_day = datetime.strptime(start_date, '%Y%m%d') - timedelta(i)
given_day = given_day.strftime('%Y%m%d')
"""
if zero_count_S < 10:
type = "S"
fileName = stock_code + "_" + given_day + "_" + type + ".csv"
if not os.path.isfile(IN_DIR+"/"+fileName):
zero_count_S += 1
else:
zero_count_S = 0
webViewer.simulate(stock_code, type, given_day, IN_DIR, OUT_DIR, fileName)
"""
if zero_count_m < 10:
type = "m"
fileName = stock_code + "_" + given_day + "_" + type + ".csv"
if not os.path.isfile(IN_DIR + "/" + fileName):
zero_count_m += 1
else:
zero_count_m = 0
webViewer.simulate(stock_code, type, given_day, IN_DIR, OUT_DIR, fileName)
if zero_count_m > 10 and zero_count_S > 10:
break
print ("done...")

Some files were not shown because too many files have changed in this diff Show More