Compare commits
10 Commits
c4aae81b94
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c23a4f8540 | ||
|
|
7741fd2285 | ||
|
|
9e48751560 | ||
|
|
f54c5e70ef | ||
|
|
fd5e705862 | ||
|
|
189301da91 | ||
|
|
97ceb610f7 | ||
|
|
8313c67d11 | ||
|
|
3ffc86e33b | ||
|
|
ec0638f1e0 |
@@ -191,7 +191,7 @@ class AnalyzerSqlite:
|
||||
changeLine = go.Scatter(x=ymd, y=ichimokucloud_changeLine, name="changeLine", line_color='#000000')
|
||||
baseLine = go.Scatter(x=ymd, y=ichimokucloud_baseLine, name="baseLine", line_color='#FF0000')
|
||||
laggingSpan = go.Scatter(x=ymd, y=ichimokucloud_laggingSpan, name='laggingSpan', line_color='#B50ABB')
|
||||
leadingSpan1 = go.Scatter(x=ymd, y=ichimokucloud_leadingSpan1, name='leadingSpan1', line_color='black')
|
||||
leadingSpan1 = go.Scatter(x=ymd, y=ichimokucloud_leadingSpan1, name='leadingSpan1', line_color='#ff5733')
|
||||
leadingSpan2 = go.Scatter(x=ymd, y=ichimokucloud_leadingSpan2, name='leadingSpan2', line_color='black')
|
||||
trend = go.Scatter(x=ymd, y=trend, name="trend", line_color='#574e4c')
|
||||
|
||||
@@ -482,7 +482,10 @@ class AnalyzerSqlite:
|
||||
|
||||
# 후보 찾기
|
||||
def findCandidates(self, outPath):
|
||||
result = []
|
||||
result_3_5 = []
|
||||
result_5_20 = []
|
||||
result_ichimok = []
|
||||
|
||||
self.makeDirectory(outPath)
|
||||
|
||||
stockTableName = 'stock'
|
||||
@@ -593,7 +596,7 @@ class AnalyzerSqlite:
|
||||
dir_name = "daily_5_20"
|
||||
log = str(count) + "_" + dir_name + "_"
|
||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||
result.append({'ticker_code': CODE, 'ticker_name': NAME,'close': stock_daily['close'][0], 'type': '5~20'})
|
||||
result_5_20.append({'ticker_code': CODE, 'ticker_name': NAME,'close': stock_daily['close'][0], 'type': '5~20'})
|
||||
|
||||
check = self.common.buy_stock_daily_3_5(stock_daily)
|
||||
if check:
|
||||
@@ -601,7 +604,7 @@ class AnalyzerSqlite:
|
||||
dir_name = "daily_3_5"
|
||||
log = str(count) + "_" + dir_name + "_"
|
||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||
result.append({'ticker_code': CODE, 'ticker_name': NAME,'close': stock_daily['close'][0], 'type': '3~5'})
|
||||
result_3_5.append({'ticker_code': CODE, 'ticker_name': NAME,'close': stock_daily['close'][0], 'type': '3~5'})
|
||||
|
||||
check = self.common.buy_stock_ichimok(stock_daily)
|
||||
if check:
|
||||
@@ -609,19 +612,49 @@ class AnalyzerSqlite:
|
||||
dir_name = "daily_ichimok"
|
||||
log = str(count) + "_" + dir_name + "_"
|
||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||
result.append({'ticker_code': CODE, 'ticker_name': NAME,'close': stock_daily['close'][0], 'type': 'ichimok'})
|
||||
result_ichimok.append({'ticker_code': CODE, 'ticker_name': NAME,'close': stock_daily['close'][0], 'type': 'ichimok'})
|
||||
|
||||
self.sendMsg(result_3_5, result_5_20, result_ichimok)
|
||||
return
|
||||
|
||||
def sendMsg(self, result_3_5, result_5_20, result_ichimok):
|
||||
pStr = '[Stock Analysis]\n'
|
||||
self.bot.sendMsg(pStr)
|
||||
|
||||
pStr = ''
|
||||
i = 0
|
||||
for item in result:
|
||||
for item in result_3_5:
|
||||
pStr += " <{}> {} {} ({:.2f})\n".format(item['type'], item['ticker_code'], item['ticker_name'], item['close'])
|
||||
i += 1
|
||||
if i==100:
|
||||
if i == 100:
|
||||
i = 0
|
||||
self.bot.sendMsg(pStr)
|
||||
pStr = ''
|
||||
if i>0:
|
||||
if i > 0:
|
||||
self.bot.sendMsg(pStr)
|
||||
|
||||
pStr = ''
|
||||
i = 0
|
||||
for item in result_5_20:
|
||||
pStr += " <{}> {} {} ({:.2f})\n".format(item['type'], item['ticker_code'], item['ticker_name'], item['close'])
|
||||
i += 1
|
||||
if i == 100:
|
||||
i = 0
|
||||
self.bot.sendMsg(pStr)
|
||||
pStr = ''
|
||||
if i > 0:
|
||||
self.bot.sendMsg(pStr)
|
||||
|
||||
pStr = ''
|
||||
i = 0
|
||||
for item in result_ichimok:
|
||||
pStr += " <{}> {} {} ({:.2f})\n".format(item['type'], item['ticker_code'], item['ticker_name'], item['close'])
|
||||
i += 1
|
||||
if i == 100:
|
||||
i = 0
|
||||
self.bot.sendMsg(pStr)
|
||||
pStr = ''
|
||||
if i > 0:
|
||||
self.bot.sendMsg(pStr)
|
||||
return
|
||||
|
||||
|
||||
@@ -726,30 +726,19 @@ class Common:
|
||||
return False
|
||||
|
||||
def buy_stock_ichimok(self, stock_daily):
|
||||
# 어제의 저가는 선행 1과 2 사이에 있었는데, 오늘은 선행 1과 2 위로 올라왔다.
|
||||
|
||||
check_buy = False
|
||||
|
||||
for c in range(0, 4):
|
||||
if stock_daily['ichimokucloud_leadingSpan1'][c] is None or stock_daily['ichimokucloud_leadingSpan2'][c] is None:
|
||||
if stock_daily['close'][0] < stock_daily['open'][0]:
|
||||
return check_buy
|
||||
|
||||
# 체크 1
|
||||
if (stock_daily['ichimokucloud_leadingSpan1'][1] < stock_daily['close'][1] <= stock_daily['ichimokucloud_leadingSpan2'][1] and
|
||||
stock_daily['ichimokucloud_leadingSpan1'][0] < stock_daily['ichimokucloud_leadingSpan2'][0] < stock_daily['close'][0]):
|
||||
### 주가가 구름대를 상향 돌파함
|
||||
# 오늘: max(선행 1,2) < 시가 < 종가, 어제 종가 < 오늘 종가
|
||||
if (max(stock_daily['ichimokucloud_leadingSpan1'][0], stock_daily['ichimokucloud_leadingSpan2'][0]) < stock_daily['open'][0] < stock_daily['close'][0]) and (stock_daily['close'][1] < stock_daily['close'][0]):
|
||||
# 어제: 시가 < 종가 <= max(스팬1,2) 이거나
|
||||
# 어제: 시가 < max(스팬1,2) < 종가 이거나
|
||||
# 어제: 시가 < 종가 < max(스팬1,2) 임
|
||||
if ((stock_daily['open'][1] < stock_daily['close'][1] <= max(stock_daily['ichimokucloud_leadingSpan1'][1], stock_daily['ichimokucloud_leadingSpan2'][1])) or
|
||||
(stock_daily['open'][1] < max(stock_daily['ichimokucloud_leadingSpan1'][1], stock_daily['ichimokucloud_leadingSpan2'][1]) < stock_daily['close'][1]) or
|
||||
(stock_daily['open'][1] < stock_daily['close'][1] < min(stock_daily['ichimokucloud_leadingSpan1'][1], stock_daily['ichimokucloud_leadingSpan2'][1]))):
|
||||
check_buy = True
|
||||
|
||||
# 체크 2
|
||||
for c in range(0, 3):
|
||||
if (
|
||||
# 선행1 (상승) < 종가 혹은 시가 < 선행2 (하락) 였는데, 오늘은 선행1 (상승) < 선행2 (하락) < 종가 혹은 시가
|
||||
(stock_daily['close'][(c+1)] <= max(stock_daily['ichimokucloud_leadingSpan1'][(c+1)], stock_daily['ichimokucloud_leadingSpan2'][(c+1)])) and
|
||||
(max(stock_daily['ichimokucloud_leadingSpan1'][c], stock_daily['ichimokucloud_leadingSpan2'][c]) < stock_daily['close'][(c)])
|
||||
):
|
||||
check_buy = True
|
||||
break
|
||||
if stock_daily['close'][(c)] < stock_daily['ichimokucloud_leadingSpan1'][c]:
|
||||
check_buy = False
|
||||
break
|
||||
|
||||
return check_buy
|
||||
|
||||
Reference in New Issue
Block a user