이하영

면담확인서

...@@ -26,6 +26,12 @@ class Simulator_Api: ...@@ -26,6 +26,12 @@ class Simulator_Api:
26 self.buy_algorithm=1 26 self.buy_algorithm=1
27 self.sell_algorithm=1 27 self.sell_algorithm=1
28 28
29 + # 투자에서 사용할 변수 설정
30 + self.per_invest=1000000 # 한 항목 당 구매할 금액
31 +
32 + self.sell_point=10 # 매도 수익률
33 + self.limit_money=1000000 # 최소로 남겨놓을 금액
34 +
29 # 특정 데이터베이스 내에 특정 테이블이 존재하는지 확인하는 함수 35 # 특정 데이터베이스 내에 특정 테이블이 존재하는지 확인하는 함수
30 def is_table_exist(self,db_name,table_name): 36 def is_table_exist(self,db_name,table_name):
31 query="select 1 from information_schema.tables where table_schema='%s' and table_name='%s'" 37 query="select 1 from information_schema.tables where table_schema='%s' and table_name='%s'"
......
This diff is collapsed. Click to expand it.
1 +from sqlalchemy import *
2 +
3 +from open_api import *
4 +from daily_info import *
5 +from stock_info import *
6 +import config
7 +
8 +class CollectorApi():
9 + def __init__(self):
10 + self.open_api=OpenApi()
11 + self.engine_bot=self.open_api.engine_bot
12 +
13 + def set_variable(self):
14 + self.open_api.sort="collector"
15 + self.stock_info=StockInfo(config.real_bot,config.real_stockInfo,config.real_dailyInofo)
16 + self.daily_info=DailyInfo()
17 +
18 + def update_code(self):
19 + print("update code")
20 + query = "select code_update,jango_data_db_check, possessed_item, today_profit, final_chegyul_check, " \
21 + "db_to_buy_list,today_buy_list, daily_crawler , min_crawler, daily_buy_list " \
22 + "from setting_data limit 1"
23 + result=self.engine_bot.execute(query).fetchall()
24 +
25 + print(result)
26 +
27 + if result[0][0]!=self.open_api.today():
28 + self.open_api.check_balance()
29 + self.get_code_list()
30 +
31 +
32 + def set_db_minute_info(self):
33 + print("Make Minute Info Database")
34 + query="select code,code_name from stock_all"
35 + target=self.open_api.engine_dInfo.execute(query).fetchall()
36 + print(target)
37 +
38 +app = QApplication(sys.argv)
39 +c=CollectorApi()
40 +c.update_code()
...\ No newline at end of file ...\ No newline at end of file
1 import datetime 1 import datetime
2 from sqlalchemy import * 2 from sqlalchemy import *
3 -import pandas as pd
4 from pandas import DataFrame 3 from pandas import DataFrame
5 4
6 import config 5 import config
7 6
8 -class DailyInfo(): 7 +class Daily_Info():
9 def __init__(self): 8 def __init__(self):
10 - self.date_setting() 9 + self.set_variable()
11 - self.engine_setting()
12 - self.create_stocks()
13 10
14 - # 날짜 정보 설정 11 + def set_variable(self):
15 - def date_setting(self):
16 self.today=datetime.datetime.today().strftime("%Y%m%d") 12 self.today=datetime.datetime.today().strftime("%Y%m%d")
13 + self.today_time=datetime.datetime.today().strftime("%Y%m%d%H%M")
17 self.start_date=config.start_buying 14 self.start_date=config.start_buying
18 -
19 - # 데이터베이스 엔진 설정
20 - def engine_setting(self):
21 self.engine_daily=create_engine( 15 self.engine_daily=create_engine(
22 "mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port + 16 "mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port +
23 "/daily_info", encoding='utf-8') 17 "/daily_info", encoding='utf-8')
...@@ -25,6 +19,13 @@ class DailyInfo(): ...@@ -25,6 +19,13 @@ class DailyInfo():
25 "mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port + 19 "mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port +
26 "/stock_info", encoding='utf-8') 20 "/stock_info", encoding='utf-8')
27 21
22 + # 지정한 날짜부터 현재까지의 날짜 리스트를 반환
23 + # 모든 지정한 날짜에 대해 정확한 값을 반환하기 위해
24 + # 한국에서 가장 오래된 상장기업 중 하나인 'CJ대한통운' 테이블을 활용한다
25 + def set_date_rows(self):
26 + query="select date from 'CJ대한통운' where date>=%s group by date"
27 + self.date_rows=self.engine_stock.execute(query%self.start_date)
28 +
28 # date에 해당하는 이름을 가진 테이블이 daily_info 데이터베이스 안에 존재하는지 확인하는 함수 29 # date에 해당하는 이름을 가진 테이블이 daily_info 데이터베이스 안에 존재하는지 확인하는 함수
29 def is_date_table_exist(self,date): 30 def is_date_table_exist(self,date):
30 query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'" 31 query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
...@@ -34,19 +35,21 @@ class DailyInfo(): ...@@ -34,19 +35,21 @@ class DailyInfo():
34 else: 35 else:
35 return True 36 return True
36 37
38 + # 날짜에 해당하는 테이블 생성
37 def create_daily_table(self): 39 def create_daily_table(self):
38 print("setting daily_info database!!") 40 print("setting daily_info database!!")
39 - self.get_date_list() 41 + self.set_date_rows()
42 + self.get_all_stock_list()
40 43
41 - for date in self.date_list: 44 + for date in self.date_rows:
42 if not self.is_date_table_exist(date): 45 if not self.is_date_table_exist(date):
43 print(date,"테이블이 존재하지 않습니다. 테이블을 생성합니다") 46 print(date,"테이블이 존재하지 않습니다. 테이블을 생성합니다")
44 47
45 daily_list=list() 48 daily_list=list()
46 49
47 - for i in range(len(self.all_list)): 50 + for i in range(len(self.stock_all)):
48 - code_name=self.all_list.loc[i][0] 51 + code_name=self.stock_all.loc[i][0]
49 - code=self.all_list.loc[i][1] 52 + code=self.stock_all.loc[i][1]
50 53
51 if self.is_stock_table_exist(code,code_name): 54 if self.is_stock_table_exist(code,code_name):
52 query="select * from {} where date='{}' group by date" 55 query="select * from {} where date='{}' group by date"
...@@ -75,70 +78,10 @@ class DailyInfo(): ...@@ -75,70 +78,10 @@ class DailyInfo():
75 ]) 78 ])
76 df.to_sql(name=date,con=self.engine_daily,if_exists='replace') 79 df.to_sql(name=date,con=self.engine_daily,if_exists='replace')
77 80
78 - # 지정한 날짜부터 현재까지의 날짜 리스트를 반환 81 + # 데이터베이스에 저장된 모든 주식 리스트를 가져오는 함수
79 - # 모든 지정한 날짜에 대해 정확한 값을 반환하기 위해 82 + def get_all_stock_list(self):
80 - # 한국에서 가장 오래된 상장기업 중 하나인 'CJ대한통운' 테이블을 활용한다 83 + query="select code_name,code from stock_all"
81 - def get_date_list(self): 84 + self.stock_all=self.engine_daily.execute(query).fetchall()
82 - query="select date from 'CJ대한통운' where date>=%s group by date"
83 - self.date_list=self.engine_stock.execute(query%self.start_date)
84 - print(self.date_list)
85 -
86 - # 코스피 주식 리스트 저장
87 - def get_item_kospi(self):
88 - print("get_item_kospi!!")
89 - self.kospi_list = pd.read_html(
90 - 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=stockMkt',
91 - header=0)[0]
92 -
93 - self.kospi_list.종목코드 = self.kospi_list.종목코드.map('{:06d}'.format)
94 - self.kospi_list = self.kospi_list[['회사명', '종목코드']]
95 - self.kospi_list = self.kospi_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
96 -
97 - # 코스닥 주식 리스트 저장
98 - def get_item_kosdaq(self):
99 - print("get_item_kosdaq!!")
100 - self.kosdaq_list = pd.read_html(
101 - 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=kosdaqMkt',
102 - header=0)[0]
103 -
104 - self.kosdaq_list.종목코드 = self.kosdaq_list.종목코드.map('{:06d}'.format)
105 - self.kosdaq_list = self.kosdaq_list[['회사명', '종목코드']]
106 - self.kosdaq_list = self.kosdaq_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
107 -
108 - # 코스피 테이블 생성
109 - def create_kospi_table(self):
110 - self.get_item_kospi()
111 - table_kospi='stock_kospi'
112 - query="select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
113 - result=self.engine_daily.execute(query%table_kospi).fetchall()
114 - if len(result)==0:
115 - df=DataFrame(self.kospi_list)
116 - df.to_sql(name=table_kospi,con=self.engine_daily,if_exists='replace')
117 -
118 - # 코스닥 테이블 생성
119 - def create_kosdaq_table(self):
120 - self.get_item_kosdaq()
121 - table_kosdaq="stock_kosdaq"
122 - query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
123 - result=self.engine_daily.execute(query%table_kosdaq).fetchall()
124 - if len(result)==0:
125 - df=DataFrame(self.kosdaq_list)
126 - df.to_sql(name=table_kosdaq,con=self.engine_daily,if_exists='replace')
127 -
128 - # 코스피 + 코스닥 테이블 생성
129 - def create_stock_all_table(self):
130 - self.all_list=pd.concat([self.kospi_list,self.kosdaq_list],ignore_index=True)
131 - table_all="stock_all"
132 - query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
133 - result=self.engine_daily.execute(query%table_all).fetchall()
134 - if len(result)==0:
135 - self.all_list.to_sql(name=table_all,con=self.engine_daily,if_exists='replace')
136 -
137 - # 주식 리스트 생성
138 - def create_stocks(self):
139 - self.create_kospi_table()
140 - self.create_kosdaq_table()
141 - self.create_stock_all_table()
142 85
143 # stock info 데이터베이스에 code_name 테이블이 존재하는지 확인하는 함수 86 # stock info 데이터베이스에 code_name 테이블이 존재하는지 확인하는 함수
144 def is_stock_table_exist(self,code,code_name): 87 def is_stock_table_exist(self,code,code_name):
......
This diff is collapsed. Click to expand it.
1 from sqlalchemy import * 1 from sqlalchemy import *
2 from PyQt5.QtCore import * 2 from PyQt5.QtCore import *
3 import datetime 3 import datetime
4 +import pandas as pd
4 5
5 import config 6 import config
6 7
7 -class StockInfo(): 8 +class Stock_Info():
8 - def __init__(self,db_name,stock_info_name,daily_info_name): 9 + def __init__(self,db_name,daily_db_name,stock_db_name):
9 if db_name!=0: 10 if db_name!=0:
10 self.db_name=db_name 11 self.db_name=db_name
11 - self.stockInfo_name=stock_info_name 12 + self.daily_db_name=daily_db_name
12 - self.dailyInfo_name=daily_info_name 13 + self.stock_db_name=stock_db_name
13 14
14 self.engine=create_engine( 15 self.engine=create_engine(
15 "mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port + 16 "mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port +
...@@ -24,11 +25,32 @@ class StockInfo(): ...@@ -24,11 +25,32 @@ class StockInfo():
24 self.mkt_end_time=QTime(15,31,0) 25 self.mkt_end_time=QTime(15,31,0)
25 26
26 self.today=datetime.datetime.today().strftime("%Y%m%d") 27 self.today=datetime.datetime.today().strftime("%Y%m%d")
28 + self.today_time=datetime.datetime.today().strftime("%Y%m%d%H%M")
27 29
28 - # 현재 시간이 주식장이 열린 시간인지 확인하는 함수 30 + # 현재 시간이 주식 장이 열린 시간인지 확인하는 함수
29 - def time_check(self): 31 + def check_time(self):
30 self.current_time=QTime.currentTime() 32 self.current_time=QTime.currentTime()
31 - if (self.current_time>self.mkt_start_time and self.current_time<self.mkt_end_time): 33 + if self.current_time>self.mkt_start_time and self.current_time<self.mkt_end_time:
32 return True 34 return True
33 else: 35 else:
34 return False 36 return False
37 +
38 + # 코스피 주식 리스트 저장
39 + def get_item_kospi(self):
40 + self.kospi_list = pd.read_html(
41 + 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=stockMkt',
42 + header=0)[0]
43 +
44 + self.kospi_list.종목코드 = self.kospi_list.종목코드.map('{:06d}'.format)
45 + self.kospi_list = self.kospi_list[['회사명', '종목코드']]
46 + self.kospi_list = self.kospi_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
47 +
48 + # 코스닥 주식 리스트 저장
49 + def get_item_kosdaq(self):
50 + self.kosdaq_list = pd.read_html(
51 + 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=kosdaqMkt',
52 + header=0)[0]
53 +
54 + self.kosdaq_list.종목코드 = self.kosdaq_list.종목코드.map('{:06d}'.format)
55 + self.kosdaq_list = self.kosdaq_list[['회사명', '종목코드']]
56 + self.kosdaq_list = self.kosdaq_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
...\ No newline at end of file ...\ No newline at end of file
......
No preview for this file type