
本文提供一种QMT禁IO后发送通知的思路。
QMT自带的策略日志未封禁。
虽说禁IO,但是日志是输出方向的,而且是QMT自己写的,个人觉得应该不会封禁。
QMT 策略输出带TAG日志
→ 写入 XtClient_FormulaOutput_YYYYMMDD.log(按日滚动)
→ 增量读取(只读当天文件)
→ 按"块"重组日志(块头正则识别)
→ 块内命中TAG,如 [fs] / [fs@all] / [error]
→ 去掉块头和标签,截断到飞书上限
→ 飞书自定义机器人 webhook(卡片消息,@all 可选)
TAG可以自己按需定义、解析。
默认TAG:
[fs] 发送到飞书
[fs@all] 或 [ERROR]发送到飞书并@所有人
pip install -r requirements.txt
自行上网搜索或问AI申请飞书TOKEN
FS_BOT_TOKEN=xxx # 飞书群自定义机器人 webhook 的 token(必填)
FS_BOT_SECRET= # 机器人勾选"签名校验"时填 secret,否则留空
修改log2fs.py中LOG_DIR为实际QMT策略日志路径
LOG_DIR = r"C:\app\qmt\userdata\log" # 改成实际 QMT 的 userdata\log 路径
如果禁IO后支持则用logger(stream模式)输出,否则print(带flush参数)。
注意logger不能用FileHandler,要用StreamHandler。
def get_logger(name):
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
if not log