67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import time
|
|
import datetime
|
|
|
|
# 데이터베이스(MYSQL) ----
|
|
from db import DB
|
|
|
|
# 배치프로세스 (Cron) ----
|
|
from cron import Cron
|
|
|
|
# 지표 ----
|
|
# 머신러닝 ----
|
|
# 헬퍼함수 ----
|
|
|
|
# base path
|
|
# BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + '/collectors'
|
|
|
|
# Cron(scheduler) : 반복적인 작업(배치 프로세스)를 위한 클래스 => 지속적으로 추가되는 테이블 생성 및 데이터(크롤링) 저장
|
|
# Trader : 현재가를 기준으로 트레이딩하는 클래스 => 10초 마다 실행
|
|
# Analysis : 트레이더 클래스에서 현재가를 전달 받으면 진입할 지 안할 지를 리턴해주는 클래스 => 물타기 등 다양한 판단에 따른 거래를 위한 데이터 리턴
|
|
# Indicator : 기술적 관점에 따라 매매 포지션 상태값을 리턴 => 보조지표, 주 지표 분석(봉 패턴 등)을 활용
|
|
# Muchine : 머신러닝 기반(통계적 관점)에 따라 매매 포지션 상태값을 리턴
|
|
# App : 앱의 초기화 및 기본 셋업 클래스 => 인터페이스의 역할도 수행(실행된 프로세스 리스트 출력)
|
|
|
|
class App:
|
|
exchange_instance_list = {}
|
|
count = 0 # for multi threading
|
|
|
|
def __init__(self):
|
|
# Set db cursor obj
|
|
self.db = DB()
|
|
|
|
# create default tables
|
|
self.db.create_default_tables()
|
|
|
|
# insert default data
|
|
self.db.insert_default_tables()
|
|
|
|
# set cron
|
|
self.cron = Cron()
|
|
|
|
# def __del__(self): return False
|
|
|
|
# def start_batch_process(self):
|
|
# t_cron = threading.Thread(target=self.cron.start)
|
|
# t_cron.daemon = True
|
|
# t_cron.start()
|
|
|
|
# 금융 종목 추가
|
|
def add_new_exchange(self, finance, exchange):
|
|
self.db.insert_finance_to_base(finance, exchange)
|
|
|
|
# 배치 프로세스 실행
|
|
def start(self):
|
|
self.cron.start()
|
|
# self.start_batch_process()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print('Oh! my bot. Started.', datetime.datetime.now())
|
|
app = App()
|
|
app.start()
|
|
|
|
while True:
|
|
time.sleep(3600)
|