이하영

면담확인서

......@@ -26,6 +26,12 @@ class Simulator_Api:
self.buy_algorithm=1
self.sell_algorithm=1
# 투자에서 사용할 변수 설정
self.per_invest=1000000 # 한 항목 당 구매할 금액
self.sell_point=10 # 매도 수익률
self.limit_money=1000000 # 최소로 남겨놓을 금액
# 특정 데이터베이스 내에 특정 테이블이 존재하는지 확인하는 함수
def is_table_exist(self,db_name,table_name):
query="select 1 from information_schema.tables where table_schema='%s' and table_name='%s'"
......
This diff is collapsed. Click to expand it.
from sqlalchemy import *
from open_api import *
from daily_info import *
from stock_info import *
import config
class CollectorApi():
def __init__(self):
self.open_api=OpenApi()
self.engine_bot=self.open_api.engine_bot
def set_variable(self):
self.open_api.sort="collector"
self.stock_info=StockInfo(config.real_bot,config.real_stockInfo,config.real_dailyInofo)
self.daily_info=DailyInfo()
def update_code(self):
print("update code")
query = "select code_update,jango_data_db_check, possessed_item, today_profit, final_chegyul_check, " \
"db_to_buy_list,today_buy_list, daily_crawler , min_crawler, daily_buy_list " \
"from setting_data limit 1"
result=self.engine_bot.execute(query).fetchall()
print(result)
if result[0][0]!=self.open_api.today():
self.open_api.check_balance()
self.get_code_list()
def set_db_minute_info(self):
print("Make Minute Info Database")
query="select code,code_name from stock_all"
target=self.open_api.engine_dInfo.execute(query).fetchall()
print(target)
app = QApplication(sys.argv)
c=CollectorApi()
c.update_code()
\ No newline at end of file
import datetime
from sqlalchemy import *
import pandas as pd
from pandas import DataFrame
import config
class DailyInfo():
class Daily_Info():
def __init__(self):
self.date_setting()
self.engine_setting()
self.create_stocks()
self.set_variable()
# 날짜 정보 설정
def date_setting(self):
def set_variable(self):
self.today=datetime.datetime.today().strftime("%Y%m%d")
self.today_time=datetime.datetime.today().strftime("%Y%m%d%H%M")
self.start_date=config.start_buying
# 데이터베이스 엔진 설정
def engine_setting(self):
self.engine_daily=create_engine(
"mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port +
"/daily_info", encoding='utf-8')
......@@ -25,6 +19,13 @@ class DailyInfo():
"mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port +
"/stock_info", encoding='utf-8')
# 지정한 날짜부터 현재까지의 날짜 리스트를 반환
# 모든 지정한 날짜에 대해 정확한 값을 반환하기 위해
# 한국에서 가장 오래된 상장기업 중 하나인 'CJ대한통운' 테이블을 활용한다
def set_date_rows(self):
query="select date from 'CJ대한통운' where date>=%s group by date"
self.date_rows=self.engine_stock.execute(query%self.start_date)
# date에 해당하는 이름을 가진 테이블이 daily_info 데이터베이스 안에 존재하는지 확인하는 함수
def is_date_table_exist(self,date):
query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
......@@ -34,19 +35,21 @@ class DailyInfo():
else:
return True
# 날짜에 해당하는 테이블 생성
def create_daily_table(self):
print("setting daily_info database!!")
self.get_date_list()
self.set_date_rows()
self.get_all_stock_list()
for date in self.date_list:
for date in self.date_rows:
if not self.is_date_table_exist(date):
print(date,"테이블이 존재하지 않습니다. 테이블을 생성합니다")
daily_list=list()
for i in range(len(self.all_list)):
code_name=self.all_list.loc[i][0]
code=self.all_list.loc[i][1]
for i in range(len(self.stock_all)):
code_name=self.stock_all.loc[i][0]
code=self.stock_all.loc[i][1]
if self.is_stock_table_exist(code,code_name):
query="select * from {} where date='{}' group by date"
......@@ -75,70 +78,10 @@ class DailyInfo():
])
df.to_sql(name=date,con=self.engine_daily,if_exists='replace')
# 지정한 날짜부터 현재까지의 날짜 리스트를 반환
# 모든 지정한 날짜에 대해 정확한 값을 반환하기 위해
# 한국에서 가장 오래된 상장기업 중 하나인 'CJ대한통운' 테이블을 활용한다
def get_date_list(self):
query="select date from 'CJ대한통운' where date>=%s group by date"
self.date_list=self.engine_stock.execute(query%self.start_date)
print(self.date_list)
# 코스피 주식 리스트 저장
def get_item_kospi(self):
print("get_item_kospi!!")
self.kospi_list = pd.read_html(
'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=stockMkt',
header=0)[0]
self.kospi_list.종목코드 = self.kospi_list.종목코드.map('{:06d}'.format)
self.kospi_list = self.kospi_list[['회사명', '종목코드']]
self.kospi_list = self.kospi_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
# 코스닥 주식 리스트 저장
def get_item_kosdaq(self):
print("get_item_kosdaq!!")
self.kosdaq_list = pd.read_html(
'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=kosdaqMkt',
header=0)[0]
self.kosdaq_list.종목코드 = self.kosdaq_list.종목코드.map('{:06d}'.format)
self.kosdaq_list = self.kosdaq_list[['회사명', '종목코드']]
self.kosdaq_list = self.kosdaq_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
# 코스피 테이블 생성
def create_kospi_table(self):
self.get_item_kospi()
table_kospi='stock_kospi'
query="select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
result=self.engine_daily.execute(query%table_kospi).fetchall()
if len(result)==0:
df=DataFrame(self.kospi_list)
df.to_sql(name=table_kospi,con=self.engine_daily,if_exists='replace')
# 코스닥 테이블 생성
def create_kosdaq_table(self):
self.get_item_kosdaq()
table_kosdaq="stock_kosdaq"
query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
result=self.engine_daily.execute(query%table_kosdaq).fetchall()
if len(result)==0:
df=DataFrame(self.kosdaq_list)
df.to_sql(name=table_kosdaq,con=self.engine_daily,if_exists='replace')
# 코스피 + 코스닥 테이블 생성
def create_stock_all_table(self):
self.all_list=pd.concat([self.kospi_list,self.kosdaq_list],ignore_index=True)
table_all="stock_all"
query = "select 1 from information_schema.tables where table_schema ='daily_info' and table_name = '%s'"
result=self.engine_daily.execute(query%table_all).fetchall()
if len(result)==0:
self.all_list.to_sql(name=table_all,con=self.engine_daily,if_exists='replace')
# 주식 리스트 생성
def create_stocks(self):
self.create_kospi_table()
self.create_kosdaq_table()
self.create_stock_all_table()
# 데이터베이스에 저장된 모든 주식 리스트를 가져오는 함수
def get_all_stock_list(self):
query="select code_name,code from stock_all"
self.stock_all=self.engine_daily.execute(query).fetchall()
# stock info 데이터베이스에 code_name 테이블이 존재하는지 확인하는 함수
def is_stock_table_exist(self,code,code_name):
......
This diff is collapsed. Click to expand it.
from sqlalchemy import *
from PyQt5.QtCore import *
import datetime
import pandas as pd
import config
class StockInfo():
def __init__(self,db_name,stock_info_name,daily_info_name):
class Stock_Info():
def __init__(self,db_name,daily_db_name,stock_db_name):
if db_name!=0:
self.db_name=db_name
self.stockInfo_name=stock_info_name
self.dailyInfo_name=daily_info_name
self.daily_db_name=daily_db_name
self.stock_db_name=stock_db_name
self.engine=create_engine(
"mysql+pymysql://" + config.db_id + ":" + config.db_pw + "@" + config.db_ip + ":" + config.db_port +
......@@ -24,11 +25,32 @@ class StockInfo():
self.mkt_end_time=QTime(15,31,0)
self.today=datetime.datetime.today().strftime("%Y%m%d")
self.today_time=datetime.datetime.today().strftime("%Y%m%d%H%M")
# 현재 시간이 주식장이 열린 시간인지 확인하는 함수
def time_check(self):
# 현재 시간이 주식 장이 열린 시간인지 확인하는 함수
def check_time(self):
self.current_time=QTime.currentTime()
if (self.current_time>self.mkt_start_time and self.current_time<self.mkt_end_time):
if self.current_time>self.mkt_start_time and self.current_time<self.mkt_end_time:
return True
else:
return False
# 코스피 주식 리스트 저장
def get_item_kospi(self):
self.kospi_list = pd.read_html(
'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=stockMkt',
header=0)[0]
self.kospi_list.종목코드 = self.kospi_list.종목코드.map('{:06d}'.format)
self.kospi_list = self.kospi_list[['회사명', '종목코드']]
self.kospi_list = self.kospi_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
# 코스닥 주식 리스트 저장
def get_item_kosdaq(self):
self.kosdaq_list = pd.read_html(
'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13&marketType=kosdaqMkt',
header=0)[0]
self.kosdaq_list.종목코드 = self.kosdaq_list.종목코드.map('{:06d}'.format)
self.kosdaq_list = self.kosdaq_list[['회사명', '종목코드']]
self.kosdaq_list = self.kosdaq_list.rename(columns={'회사명': 'code_name', '종목코드': 'code'})
\ No newline at end of file
......
No preview for this file type