9b9c37002a
核心模块: - 策略生命周期管理 (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分钟延迟问题
63 lines
1.8 KiB
Python
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()
|