Showing
12 changed files
with
97 additions
and
86 deletions
... | @@ -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'" | ... | ... |
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
This diff is collapsed. Click to expand it.
proj/library/collector_api_pre.py
0 → 100644
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): | ... | ... |
proj/library/minute_info.py
deleted
100644 → 0
File mode changed
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 | ... | ... |
면담확인서(2020.11.22).hwp
0 → 100644
No preview for this file type
-
Please register or login to post a comment