init
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
import shutil
|
||||
from stockpredictor.analysis.Common import Common
|
||||
from stockpredictor.analysis.MACD import MACD
|
||||
@@ -453,6 +454,7 @@ class Analyzer:
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
start = time.time()
|
||||
PROJECT_HOME = "../.."
|
||||
inFileName = PROJECT_HOME + '/resources/stock.db'
|
||||
inFnguideFileName = PROJECT_HOME + '/resources/fnguide.db'
|
||||
@@ -488,6 +490,6 @@ if __name__ == "__main__":
|
||||
#outFileName = PROJECT_HOME + '/resources/analysis/'+day+'.json'
|
||||
#analyzer.analyzeToFile(outFileName)
|
||||
|
||||
|
||||
print("time : %6.2f 초", (time.time() - start))
|
||||
|
||||
print("done...")
|
||||
|
||||
@@ -138,18 +138,22 @@ class Common:
|
||||
if stock[i]['avg5'] < stock[i]['close'] and stock[i]['avg20'] < stock[i]['close'] and stock[i]['avg60'] < stock[i]['close'] and stock[i]['avg120'] < stock[i]['close']:
|
||||
for j in range(1, 6):
|
||||
if stock[i-j]['close'] < stock[i-j]['avg5'] and stock[i-j]['close'] < stock[i-j]['avg20'] and stock[i-j]['close'] < stock[i-j]['avg60'] and stock[i-j]['close'] < stock[i-j]['avg120']:
|
||||
return "ALLUPPERCROSS_"
|
||||
return "ALLUPPER_"
|
||||
return ""
|
||||
|
||||
def check_golded_cross(self, stock, i):
|
||||
if i > 1:
|
||||
# 60 -> 120: 5일과 20일선은 상승 중이며, 60일선이 120일 선을 뚫고 올라온 순간인지 체크함 (삼성전자 2021-07-29)
|
||||
# 60 -> 120
|
||||
# 오늘 지수는 120 < 60 < 20 < 5
|
||||
# 어제 지수는 60 < 120 이었다.
|
||||
# 60, 20, 5일선 모두 어제 보다 오늘이 더 높다 (상승중)
|
||||
# 5일과 20일선은 상승 중이며, 60일선이 120일 선을 뚫고 올라온 순간인지 체크함 (삼성전자 2021-07-29)
|
||||
# 이때 바로 매수하지 않는다.
|
||||
# 이 시점 이후로 5일선이 20일선을 하방으로 뚫었다가 다시 20일선을 상방으로 뚫는 순간 매수를 시도한다.
|
||||
if stock[i]['avg120'] < stock[i]['avg60'] < stock[i]['avg20'] < stock[i]['avg5']:
|
||||
if stock[i-1]['avg120'] > stock[i-1]['avg60'] and stock[i]['avg120'] < stock[i]['avg60']:
|
||||
if stock[i-1]['avg120'] > stock[i-1]['avg60']:
|
||||
if (stock[i-1]['avg60'] < stock[i]['avg60'] and stock[i-1]['avg20'] < stock[i]['avg20'] and stock[i-1]['avg5'] < stock[i]['avg5']):
|
||||
return "GOLDENCROSS#1_"
|
||||
return "GOLDEN#1_"
|
||||
|
||||
# 20 -> 120: 5일과 20일, 60일선은 상승 중이며, 20일선이 120일 선을 뚫고 올라온 순간인지 체크 (SK 2021-12-09, 나노스 2021-02-04)
|
||||
# 어제는 60일선 < 20일선 < 120일선 < 5일선이지만, 오늘은 60일선 < 120일선 < 20일선 < 5일선
|
||||
@@ -158,14 +162,14 @@ class Common:
|
||||
if stock[i]['avg60'] < stock[i]['avg120'] < stock[i]['avg20'] < stock[i]['avg5']:
|
||||
if stock[i-1]['avg60'] < stock[i-1]['avg20'] < stock[i]['avg120'] < stock[i]['avg5']:
|
||||
if (stock[i-1]['avg60'] < stock[i]['avg60'] and stock[i-1]['avg20'] < stock[i]['avg20'] and stock[i-1]['avg5'] < stock[i]['avg5']):
|
||||
return "GOLDENCROSS#2_"
|
||||
return "GOLDEN#2_"
|
||||
|
||||
# 20 -> 120: 5일과 20일, 60일선은 상승 중이며, 20일선이 120일 선을 뚫고 올라온 순간인지 체크 (갤럭시아머니트리 2021-02-08)
|
||||
# 어제는 60일선 < 120일선 < 5일선 < 20일선이지만, 오늘은 60일선 < 120일선 < 20일선 < 5일선
|
||||
if stock[i]['avg60'] < stock[i]['avg120'] < stock[i]['avg20'] < stock[i]['avg5']:
|
||||
if stock[i-1]['avg60'] < stock[i-1]['avg20'] < stock[i]['avg120'] < stock[i]['avg5']:
|
||||
if (stock[i-1]['avg60'] < stock[i]['avg60'] and stock[i-1]['avg20'] < stock[i]['avg20'] and stock[i-1]['avg5'] < stock[i]['avg5']):
|
||||
return "GOLDENCROSS#3_"
|
||||
return "GOLDEN#3_"
|
||||
|
||||
return ""
|
||||
|
||||
@@ -180,7 +184,7 @@ class Common:
|
||||
if stock[i]['avg120'] < stock[i-1]['avg120'] and stock[i]['avg60'] < stock[i-1]['avg60'] and stock[i]['avg20'] < stock[i-1]['avg20']:
|
||||
if stock[i-1]['close'] <= stock[i]['close'] and stock[i]['avg5'] <= stock[i]['close']:
|
||||
if (stochastic[i]['slow_k'] < 30 and (stochastic[i-1]['slow_k'] < stochastic[i-1]['slow_d'] and stochastic[i]['slow_d'] < stochastic[i]['slow_k'])):
|
||||
return "BUYINGBEARMARKET#1_"
|
||||
return "BEARMARKET#1_"
|
||||
|
||||
# 5일선 상승 시점 확인 (원풍물산 2020년 3월 24일, NHN한국사이버결제 2018년 11월 2일)
|
||||
# 어제는 5일선 < 20일선 < 60일선 < 120일선이며, 오늘은 20일선 < 60일선 < 120일선
|
||||
@@ -191,8 +195,7 @@ class Common:
|
||||
if stock[i]['avg120'] < stock[i-1]['avg120'] and stock[i]['avg60'] < stock[i-1]['avg60'] and stock[i]['avg20'] < stock[i-1]['avg20']:
|
||||
if stock[i-1]['close'] <= stock[i]['close'] and stock[i]['avg5'] <= stock[i]['close']:
|
||||
if (stochastic[i]['slow_k'] < 30 and (stochastic[i-1]['slow_k'] < stochastic[i-1]['slow_d'] and stochastic[i]['slow_d'] < stochastic[i]['slow_k'])):
|
||||
return "BUYINGBEARMARKET#2_"
|
||||
|
||||
return "BEARMARKET#2_"
|
||||
return ""
|
||||
|
||||
def check_stochastic_buying(self, stock, stochastic, ichimoku, i):
|
||||
@@ -206,7 +209,7 @@ class Common:
|
||||
if (stochastic[i - 1]['slow_k'] < 20 and stochastic[i]['slow_k'] < 30):
|
||||
if ((stock[i-3]['close'] < ichimoku[i-3]['leadingSpan1'] or stock[i-2]['close'] < ichimoku[i-2]['leadingSpan1'] or stock[i-1]['close'] < ichimoku[i-1]['leadingSpan1']) and ichimoku[i-1]['leadingSpan1'] < stock[i-1]['high']):
|
||||
if stock[i-2]['open'] < stock[i-1]['open'] < stock[i]['open']:
|
||||
return "BUYINGSTOCHASTIC#1_"
|
||||
return "STOCHASTIC#1_"
|
||||
|
||||
# 스토케스틱이 15 이하인 경우
|
||||
# 어제보다 slow_k가 상승했고, 오늘 slow_k가 slow_d 위에 있는 경우,
|
||||
@@ -214,7 +217,7 @@ class Common:
|
||||
if stochastic[i]['slow_k'] < 15:
|
||||
if stochastic[i - 1]['slow_k'] < stochastic[i]['slow_k'] and stochastic[i]['slow_d'] < stochastic[i]['slow_k']:
|
||||
if stock[i]['avg5'] < stock[i]['close']:
|
||||
return "BUYINGSTOCHASTIC#2_"
|
||||
return "STOCHASTIC#2_"
|
||||
return ""
|
||||
|
||||
def check_20days_line_buying(self, stock, i):
|
||||
@@ -222,7 +225,7 @@ class Common:
|
||||
3일 선이 20일 선을 뚫고 올라온 순간 체크
|
||||
3일선이 다시 20선 아래로 내려가는 순간 손걸한다.
|
||||
"""
|
||||
if i > 61:
|
||||
if len(stock) > (i +1):
|
||||
# 오늘 종가가 20일선을 뚫고 올라왔다. (20일선<오늘종가 and (어제종가<20 or 어제3일선<20))
|
||||
# 오늘 종가는 양봉이어야 한다.
|
||||
# 어제부터 index1일까지 20일선이 3일선 위에 있었다.
|
||||
@@ -252,7 +255,7 @@ class Common:
|
||||
20일 선이 60일 선을 뚫고 올라온 순간 체크
|
||||
20일선이 다시 60선 아래로 내려가는 순간 손걸한다.
|
||||
"""
|
||||
if i > 150:
|
||||
if len(stock) > (i +1):
|
||||
# 오늘 20일선이 60일선 위에 올라왔다.
|
||||
# 어제부터 index1일까지 60일선이 20일선 위에 있었다.
|
||||
# index1일부터 index2일까지 20일선이 60일선 위에 있었다.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import shutil
|
||||
import datetime
|
||||
import time
|
||||
|
||||
from stockpredictor.crawler.toSQLite.MetaCrawler import MetaCrawler
|
||||
from stockpredictor.crawler.toSQLite.StockCrawler import StockCrawler
|
||||
@@ -12,6 +13,7 @@ today = datetime.datetime.now().strftime("%Y-%m-%d")
|
||||
|
||||
PROJECT_HOME = "../../.."
|
||||
|
||||
start = time.time()
|
||||
print("\n[지수 저장]")
|
||||
kospiFileName = PROJECT_HOME + '/resources/kospi.tsv'
|
||||
kosdakFileName = PROJECT_HOME + '/resources/kosdak.tsv'
|
||||
@@ -75,4 +77,6 @@ print("print to Html...")
|
||||
analyzer.analyzeToHtml(outPath)
|
||||
# E: 분석까지 진행
|
||||
|
||||
print("time : %6.2f 초", (time.time() - start))
|
||||
|
||||
print ("done...")
|
||||
@@ -121,7 +121,28 @@ class StockCrawler:
|
||||
stocks.append({"NAME": 'KODEX 코스닥150 레버리지', "CODE": "233740", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 200선물인버스2X', "CODE": "252670", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 레버리지', "CODE": "122630", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 인버스', "CODE": "114800", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 중국본토CSI300', "CODE": "283580", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 심천ChiNext(합성)', "CODE": "256750", "PRICE": []})
|
||||
stocks.append({"NAME": 'KINDEX 블룸버그베트남VN30선물레버리지(H)', "CODE": "371130", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 미국S&P바이오(합성)', "CODE": "185680", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 미국S&P에너지(합성)', "CODE": "218420", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 골드선물(H)', "CODE": "132030", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 콩선물(H)', "CODE": "138920", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 3대농산물선물(H)', "CODE": "271060", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 건설', "CODE": "117700", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 헬스케어', "CODE": "266420", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 글로벌4차산업로보틱스(합성)', "CODE": "276990", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 바이오', "CODE": "244580", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 반도체', "CODE": "091160", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 보험', "CODE": "140700", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 필수소비재', "CODE": "266410", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 2차전지산업', "CODE": "305720", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 경기소비재', "CODE": "266390", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 철강', "CODE": "117680", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 에너지화학', "CODE": "117460", "PRICE": []})
|
||||
stocks.append({"NAME": 'KODEX 은행', "CODE": "091170", "PRICE": []})
|
||||
stocks.append({"NAME": 'TIGER 탄소효율그린뉴딜', "CODE": "376410", "PRICE": []})
|
||||
|
||||
for stock in stocks:
|
||||
cursor.execute('SELECT * FROM ' + tableName + ' WHERE CODE=?', (stock["CODE"],))
|
||||
|
||||
Reference in New Issue
Block a user