重构项目文件结构
This commit is contained in:
parent
d2bbe3eb55
commit
1d893aa629
@ -1,7 +1,8 @@
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
# 服务器地址
|
# 服务器地址
|
||||||
URL = "http://trader.biggerfish.tech:9527/yu"
|
# URL = "http://trader.biggerfish.tech:9527/yu"
|
||||||
|
URL = "http://localhost:9527/yu"
|
||||||
# 策略名称常量
|
# 策略名称常量
|
||||||
STRATEGY = "香港证券ETF网格"
|
STRATEGY = "香港证券ETF网格"
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ class Config:
|
|||||||
|
|
||||||
# Trading settings
|
# Trading settings
|
||||||
TRADE_TIMEOUT = 5 # 交易超时时间(秒)
|
TRADE_TIMEOUT = 5 # 交易超时时间(秒)
|
||||||
SIMULATION_MODE = False
|
SIMULATION_MODE = True
|
||||||
|
|
||||||
# Trading hours
|
# Trading hours
|
||||||
MARKET_OPEN_TIME = "09:10"
|
MARKET_OPEN_TIME = "09:10"
|
||||||
|
@ -10,7 +10,7 @@ from config import Config # 使用相对导入
|
|||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from real.xt_trader import XtTrader
|
from real.xt_trader import XtTrader
|
||||||
from simulation.simulation_trader import SimulationTrader
|
from simulation.simulation_trader import SimulationTrader
|
||||||
from base_trader import BaseTrader
|
from core.base_trader import BaseTrader
|
||||||
from real.real_trader_manager import RealTraderManager # 确保导入
|
from real.real_trader_manager import RealTraderManager # 确保导入
|
||||||
|
|
||||||
# 获取日志记录器
|
# 获取日志记录器
|
||||||
|
@ -2,7 +2,7 @@ import datetime as dt
|
|||||||
from chinese_calendar import is_workday
|
from chinese_calendar import is_workday
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from position_manager import PositionManager
|
from core.position_manager import PositionManager
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from config import Config
|
from config import Config
|
||||||
import os
|
import os
|
@ -1,4 +1,4 @@
|
|||||||
from trade_constants import ORDER_STATUS_PENDING, ORDER_TYPE_LIMIT
|
from core.trade_constants import ORDER_STATUS_PENDING, ORDER_TYPE_LIMIT
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
class LocalOrder:
|
class LocalOrder:
|
@ -4,7 +4,7 @@ import threading
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from config import Config
|
from config import Config
|
||||||
from trade_constants import (
|
from core.trade_constants import (
|
||||||
ORDER_DIRECTION_BUY,
|
ORDER_DIRECTION_BUY,
|
||||||
ORDER_TYPE_LIMIT,
|
ORDER_TYPE_LIMIT,
|
||||||
ORDER_TYPE_MARKET,
|
ORDER_TYPE_MARKET,
|
||||||
@ -12,8 +12,8 @@ from trade_constants import (
|
|||||||
ORDER_STATUS_CANCELLED,
|
ORDER_STATUS_CANCELLED,
|
||||||
ORDER_STATUS_FAILED,
|
ORDER_STATUS_FAILED,
|
||||||
)
|
)
|
||||||
from local_position import LocalPosition
|
from core.local_position import LocalPosition
|
||||||
from local_order import LocalOrder
|
from core.local_order import LocalOrder
|
||||||
from utils.t0_stocks import is_t0
|
from utils.t0_stocks import is_t0
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
|
@ -12,8 +12,8 @@ import os
|
|||||||
|
|
||||||
from config import Config
|
from config import Config
|
||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from base_trader import BaseTrader
|
from core.base_trader import BaseTrader
|
||||||
from .app_state import login, logout, is_real_mode, _trader_instance, logger as app_logger # 使用 app_state中的logger
|
from core.app_state import login, logout, is_real_mode, _trader_instance, logger as app_logger # 使用 app_state中的logger
|
||||||
|
|
||||||
# 如果需要独立的 logger,可以取消下面这行的注释
|
# 如果需要独立的 logger,可以取消下面这行的注释
|
||||||
# logger = get_logger("scheduler")
|
# logger = get_logger("scheduler")
|
||||||
|
@ -6,7 +6,7 @@ from xtquant import xtconstant
|
|||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from config import Config
|
from config import Config
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from trade_constants import (
|
from core.trade_constants import (
|
||||||
ORDER_STATUS_COMPLETED,
|
ORDER_STATUS_COMPLETED,
|
||||||
ORDER_STATUS_CANCELLED,
|
ORDER_STATUS_CANCELLED,
|
||||||
ORDER_STATUS_PENDING,
|
ORDER_STATUS_PENDING,
|
||||||
|
@ -3,14 +3,14 @@ import random
|
|||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from config import Config
|
from config import Config
|
||||||
from base_trader import BaseTrader
|
from core.base_trader import BaseTrader
|
||||||
from xtquant.xttrader import XtQuantTrader
|
from xtquant.xttrader import XtQuantTrader
|
||||||
from xtquant.xttype import StockAccount
|
from xtquant.xttype import StockAccount
|
||||||
from xtquant import xtconstant
|
from xtquant import xtconstant
|
||||||
from xtquant.xtdata import get_instrument_detail
|
from xtquant.xtdata import get_instrument_detail
|
||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from utils.mail_util import MailUtil
|
from utils.mail_util import MailUtil
|
||||||
from trade_constants import (
|
from core.trade_constants import (
|
||||||
ORDER_STATUS_COMPLETED,
|
ORDER_STATUS_COMPLETED,
|
||||||
ORDER_STATUS_CANCELLED,
|
ORDER_STATUS_CANCELLED,
|
||||||
ORDER_STATUS_PENDING,
|
ORDER_STATUS_PENDING,
|
||||||
@ -21,7 +21,7 @@ from trade_constants import (
|
|||||||
ORDER_DIRECTION_SELL,
|
ORDER_DIRECTION_SELL,
|
||||||
ORDER_STATUS_FAILED
|
ORDER_STATUS_FAILED
|
||||||
)
|
)
|
||||||
from local_order import LocalOrder
|
from core.local_order import LocalOrder
|
||||||
|
|
||||||
# 获取日志记录器
|
# 获取日志记录器
|
||||||
logger = get_logger('real_trader')
|
logger = get_logger('real_trader')
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
from flask import Blueprint, request, jsonify, abort
|
from flask import Blueprint, request, jsonify, abort
|
||||||
|
|
||||||
from core.app_state import get_trader, get_real_trader_manager, is_real_mode, logger
|
from core.app_state import get_trader, get_real_trader_manager, is_real_mode, logger
|
||||||
from base_trader import BaseTrader
|
from core.base_trader import BaseTrader
|
||||||
from trade_constants import ORDER_TYPE_LIMIT, ORDER_DIRECTION_BUY, ORDER_DIRECTION_SELL
|
from core.trade_constants import ORDER_TYPE_LIMIT, ORDER_DIRECTION_BUY, ORDER_DIRECTION_SELL
|
||||||
|
|
||||||
trading_bp = Blueprint('trading_routes', __name__, url_prefix='/yu')
|
trading_bp = Blueprint('trading_routes', __name__, url_prefix='/yu')
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
from logger_config import get_logger
|
from logger_config import get_logger
|
||||||
from trade_constants import (
|
from core.trade_constants import (
|
||||||
TRADE_TYPE_SIMULATION,
|
TRADE_TYPE_SIMULATION,
|
||||||
ORDER_DIRECTION_BUY,
|
ORDER_DIRECTION_BUY,
|
||||||
ORDER_DIRECTION_SELL,
|
ORDER_DIRECTION_SELL,
|
||||||
ORDER_STATUS_COMPLETED,
|
ORDER_STATUS_COMPLETED,
|
||||||
ORDER_STATUS_CANCELLED,
|
ORDER_STATUS_CANCELLED,
|
||||||
)
|
)
|
||||||
from position_manager import PositionManager
|
from core.position_manager import PositionManager
|
||||||
from base_trader import BaseTrader
|
from core.base_trader import BaseTrader
|
||||||
import random
|
import random
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from local_position import LocalPosition
|
from core.local_position import LocalPosition
|
||||||
|
|
||||||
|
|
||||||
class SimulationTrader(BaseTrader):
|
class SimulationTrader(BaseTrader):
|
||||||
|
@ -6,11 +6,9 @@ Flask应用主入口文件。
|
|||||||
from flask import Flask, request, abort
|
from flask import Flask, request, abort
|
||||||
|
|
||||||
from config import Config
|
from config import Config
|
||||||
from logger_config import get_logger # 主应用的logger
|
from logger_config import get_logger
|
||||||
|
from core.app_state import login as initialize_trader_login, is_real_mode
|
||||||
# 核心服务和状态初始化
|
from core.scheduler_tasks import setup_scheduler
|
||||||
from core.app_state import login as initialize_trader_login, logger as app_state_logger, is_real_mode
|
|
||||||
from core.scheduler_tasks import setup_scheduler, logger as scheduler_logger
|
|
||||||
|
|
||||||
# API 路由蓝图
|
# API 路由蓝图
|
||||||
from routes.health_routes import health_bp
|
from routes.health_routes import health_bp
|
||||||
@ -76,8 +74,7 @@ app.register_blueprint(strategy_bp)
|
|||||||
|
|
||||||
logger.info("所有API路由蓝图已注册。")
|
logger.info("所有API路由蓝图已注册。")
|
||||||
|
|
||||||
# --- 主程序入口 ---
|
def run_server():
|
||||||
if __name__ == "__main__":
|
|
||||||
# 在启动Web服务器之前初始化服务
|
# 在启动Web服务器之前初始化服务
|
||||||
initialize_app_services()
|
initialize_app_services()
|
||||||
|
|
||||||
@ -85,6 +82,10 @@ if __name__ == "__main__":
|
|||||||
app.run(debug=Config.DEBUG, host=Config.HOST, port=Config.PORT, use_reloader=False)
|
app.run(debug=Config.DEBUG, host=Config.HOST, port=Config.PORT, use_reloader=False)
|
||||||
# use_reloader=False 建议在生产或有自定义启动/关闭逻辑时使用,以避免重复初始化。
|
# use_reloader=False 建议在生产或有自定义启动/关闭逻辑时使用,以避免重复初始化。
|
||||||
# 对于开发模式,debug=True 通常会启用重载器。
|
# 对于开发模式,debug=True 通常会启用重载器。
|
||||||
|
|
||||||
|
# --- 主程序入口 ---
|
||||||
|
if __name__ == "__main__":
|
||||||
|
run_server()
|
||||||
else:
|
else:
|
||||||
# 如果是通过 Gunicorn 等 WSGI 服务器运行,则也需要初始化服务
|
# 如果是通过 Gunicorn 等 WSGI 服务器运行,则也需要初始化服务
|
||||||
# Gunicorn 通常会为每个 worker 进程加载一次应用模块
|
# Gunicorn 通常会为每个 worker 进程加载一次应用模块
|
||||||
|
Loading…
x
Reference in New Issue
Block a user