Files
MoFin/clients/tdx-relay/scripts/run_relay.py
T
zhiwei 9b9c37002a Initial: MoFin 持仓分析与策略管理系统
核心模块:
- 策略生命周期管理 (strategy_lifecycle.py)
- 技术分析引擎 (technical_analysis.py)
- 双维度策略评估 (strategy_evaluator.py)
- 实时行情获取 (get_realtime_prices.py)
- Web Dashboard (server.py, :8899)

提示词版本管理:
- prompt_manager 模块 — 统一管理所有知微提示词
- 8个提示词共24个版本已录入
- 策略→提示词版本关联追踪
- Dashboard「提示词」Tab

数据源增强:
- 服务端 POST /api/update/realtime 端点已就绪
- clients/tdx-relay/ — 小小莫在Windows上开发的通达信中继
- 解决港股15分钟延迟问题
2026-06-12 22:54:51 +08:00

63 lines
1.8 KiB
Python

"""运行入口 — 循环获取通达信行情并推送 MoFin
小小莫:完成 tdx_client.py 后运行此脚本。
"""
import time
import logging
from relay.tdx_client import TDXClient
from relay.pusher import MoFinPusher
from relay.config import MARKET_SERVERS, MOFIN_URL, PUSH_INTERVAL, HK_STOCKS
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
log = logging.getLogger(__name__)
def find_working_server() -> tuple:
"""自动检测可用的通达信服务器"""
for name, ip, port in MARKET_SERVERS:
try:
client = TDXClient()
client.connect(ip, port)
data = client.get_hk_quote(31, "00700")
client.close()
if data and data.get("price"):
log.info(f"{name} ({ip}:{port}) 可用")
return (ip, port)
except Exception as e:
log.warning(f"{name} ({ip}:{port}): {e}")
return (None, None)
def main():
log.info("🚀 TDX Relay 启动")
log.info(f"目标: {MOFIN_URL} | 港股: {len(HK_STOCKS)}只 | 间隔: {PUSH_INTERVAL}s")
ip, port = find_working_server()
if not ip:
log.error("没有可用服务器")
return
pusher = MoFinPusher(MOFIN_URL)
client = TDXClient()
try:
client.connect(ip, port)
while True:
try:
hk_data = client.get_hk_quotes()
if hk_data:
r = pusher.push(hk_data)
log.info(f"推送 {len(hk_data)} 只: {r.get('status')}")
time.sleep(PUSH_INTERVAL)
except (ConnectionError, TimeoutError):
log.warning("断连,重试...")
client.close()
time.sleep(3)
client.connect(ip, port)
finally:
client.close()
if __name__ == "__main__":
main()