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分钟延迟问题
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
"""运行入口 — 循环获取通达信行情并推送 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()
|
||||
Reference in New Issue
Block a user