console.py
"""
AI Quant 控制台模式主程序
"""
import sys
import os
import logging
import argparse
# 添加项目根目录到路径
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 配置日志
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("aiquant.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger("AIQuant.console")
# 导入控制台配置
from config.console_config import (
CONSOLE_COMMANDS,
CONSOLE_WELCOME,
CONSOLE_PROMPT,
CONSOLE_UNKNOWN_COMMAND,
CONSOLE_EXIT_MESSAGE
)
def run_console(config_file: str = "config/main_config.py"):
"""
运行控制台模式
Args:
config_file: 配置文件路径
"""
logger.info("启动 AI Quant 控制台模式")
logger.info(f"配置文件: {config_file}")
try:
# 显示欢迎信息
print(CONSOLE_WELCOME)
for command, info in CONSOLE_COMMANDS.items():
print(f" {command:<10} - {info['description']}")
print()
# 主循环
while True:
command = input(CONSOLE_PROMPT).strip().lower()
if command == "quit" or command == "q":
logger.info("程序退出")
print(CONSOLE_EXIT_MESSAGE)
break
elif command == "help" or command == "h":
print()
print("可用命令:")
for cmd, info in CONSOLE_COMMANDS.items():
print(f" {cmd:<10} - {info['description']}")
print()
elif command == "connect":
logger.info("连接行情")
print("连接行情中...")
elif command == "disconnect":
logger.info("断开行情")
print("行情已断开")
elif command == "load":
logger.info("加载策略")
print("策略加载中...")
elif command == "run":
logger.info("运行策略")
print("策略运行中...")
elif command == "backtest":
logger.info("运行回测")
print("回测运行中...")
else:
print(CONSOLE_UNKNOWN_COMMAND.format(command))
logger.info("AI Quant 控制台模式正常退出")
return 0
except Exception as e:
logger.error(f"控制台模式运行失败: {e}")
logger.exception("详细错误信息:")
return 1
if __name__ == "__main__":
# 解析命令行参数
parser = argparse.ArgumentParser(
description="AI Quant 控制台模式"
)
parser.add_argument(
"--config",
default="config/main_config.py",
help="配置文件路径"
)
args = parser.parse_args()
# 运行控制台模式
sys.exit(run_console(args.config))