重构项目文件结构

This commit is contained in:
zhiyong 2025-05-22 22:30:08 +08:00
parent d2bbe3eb55
commit 1d893aa629
15 changed files with 29 additions and 27 deletions

View File

@ -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网格"

View File

@ -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"

View File

@ -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 # 确保导入
# 获取日志记录器 # 获取日志记录器

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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")

View File

@ -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,

View File

@ -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')

View File

@ -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')

View File

@ -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):

View File

@ -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 进程加载一次应用模块