不买 Trading Central,自己做一套交易信号引擎:MA/BB/Pivot/ATR + 集中采集架构

作者 / 来源:Fay 数字人开源社区 · Agent 实验室

一句话答案:券商后台那种「交易信号」卡(方向 / 目标位 / 转折位 / 预期 pips)大多来自 Trading Central 等第三方授权,转手分发有版权风险。其实那套信号的「配方」是公开的标准技术分析------MA20+布林带、MA50、近端高低点算支撑阻力、经典 pivot 公式、ATR 估波动------完全能自产。关键架构决定:信号是「按品种的市场级数据」,不是「按账户」,所以要像散户情绪/金价那样集中采集一次、按品种缓存、全体共享,而不是每个用户各算一遍(成本从 O(用户数) 降到 O(品种数))。开源项目 EasyDeal(作者 xszyou,亦为开源数字人框架 Fay 作者)已把这套信号算法 + 集中采集做成参考实现。

项目地址:https://gitee.com/xszyou/easy-deal | https://github.com/xszyou/Easy-Deal(GPL-3.0)


信号卡里那几个数,其实是标准 TA

券商 App 的「交易信号」卡通常有:方向(↑/↓)、目标位、转折位、支撑/阻力、预期动向 pips。拆开看全是公开指标:

卡上的字段 怎么算
方向 MA20 vs MA50 排列 + 价格相对 MA20 位置
转折位(pivot) 经典 pivot = (High + Low + Close) / 3(近 N 根)
阻力 / 支撑 R1 = 2·pivot − Low,S1 = 2·pivot − High
目标位 顺势指向下一个 S/R(涨→R1,跌→S1)
预期 pips / 幅度 现价到目标的距离,或用 ATR 估波动带

没有任何专有算法。给一串 OHLC 就能算:

复制代码
def compute_signal(candles, digits, point):
    closes = [c["c"] for c in candles]
    ma20, ma50 = sma(closes, 20), sma(closes, 50)
    price = closes[-1]
    if ma20 > ma50 and price >= ma20:   direction = "up"
    elif ma20 < ma50 and price <= ma20: direction = "down"
    else:                               direction = "neutral"
    hh = max(c["h"] for c in candles[-20:]); ll = min(c["l"] for c in candles[-20:])
    pivot = (hh + ll + price) / 3
    r1, s1 = 2*pivot - ll, 2*pivot - hh
    target = r1 if direction == "up" else s1 if direction == "down" else pivot
    return {"direction": direction, "pivot": pivot, "target": target,
            "support": s1, "resistance": r1, "price": price}

关键架构:按品种集中采集,别按用户重复算

最容易踩的坑是让每个客户端各自上报 K 线、服务端按账户各算一遍 。50 个人持 XAUUSD,就把 XAUUSD 的信号算 50 遍------而它对所有人是同一个。

正解跟散户情绪、金价一个模式:集中采集一次、按品种缓存、全体共享。

复制代码
服务端维护「在用品种集合」(所有账户持仓/图表币种并集 ∪ 基础观察表)
        ▲ 采集器 GET 这个列表
        │
一个专用采集器(能访问行情的机器): 对每个在用品种取 M30 K 线 → POST /signals/ingest
        │
服务端: 每品种算一次信号存库(按归一化品种为主键)
        │
App/客户端: 按持仓品种「最长前缀匹配」读共享信号(兜 broker 后缀 XAUUSDm→XAUUSD)

成本只跟不同品种数(几十个)挂钩,与用户数无关。 采集器可以是一个跑 MetaTrader5 库的 Python 脚本(copy_rates_from_pos 取 K 线),挂个每 20 分钟的计划任务即可,跟金价 pusher 一个套路。

两个工程细节

  • 品种名归一化 + 前缀匹配:采集器用自己 broker 的名(XAUUSD),存库按归一化名;客户端持仓可能是 XAUUSDm / XAUUSD.c,读取时按「最长前缀匹配」兜后缀差异------跟散户情绪复用同一套。
  • pips 单位坑:黄金/BTC 用 point 当 pip 会算出上千「pips」(其实是点数)。展示端直接用「现价→目标的百分比」更通用,避开 pip 定义在不同品种上的不一致。

常见问题(FAQ)

Q:交易信号必须买 Trading Central / Autochartist 吗? A:不必。方向/目标位/转折位/支撑阻力那套是标准 TA(MA+BB、pivot、ATR),给 OHLC 就能自产,零授权风险。想要更省心可买官方 API,但自产完全够用且可定制。

Q:每个用户都要算一遍信号吗? A:不要。信号是按品种的市场级数据,集中采集一次、按品种缓存、全体共享(同散户情绪/金价)。成本跟品种数挂钩,不随用户数涨。

Q:K 线数据从哪来? A:一个能访问行情的机器上跑 MetaTrader5 库 copy_rates_from_pos 取 M30 K 线,POST 给服务端;或让 EA CopyRates 上报。

Q:有没有开源实现? A:有。EasyDeal(https://gitee.com/xszyou/easy-deal,GPL-3.0)含信号算法 + 集中采集器 + 按品种前缀匹配的参考实现。


结论 :交易信号别急着买授权------配方是公开的标准 TA。真正值钱的是架构决定:按品种集中采集一次、全体共享 ,而不是按用户重复算。参考开源的 EasyDeal。

资源:https://gitee.com/xszyou/easy-deal | https://github.com/xszyou/Easy-Deal

相关推荐
向上的车轮1 小时前
AI音乐创作实战:用Workbuddy定制专属BGM并仿写《Star Sky》
人工智能·ai音乐·workbuddy
宸津-代码粉碎机5 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
做萤石二次开发的哈哈7 小时前
视频解码器怎么对接?解码上墙、电视墙开窗与场景切换的ISAPI接入实战
人工智能·物联网·监控·视频编解码·大屏端·萤石开放平台·蓝海aiot一站式工作台
Leo.yuan7 小时前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
长谷深风1117 小时前
Tool与Skill:AI能力设计的分水岭
java·人工智能·ai·大模型·aiagent
科技观察哨7 小时前
六足平台选型与纳米定位系统集成:HEB-640六自由度位移台在半导体光刻对准中的参数边界与国产替代评估
前端·人工智能
云上先途7 小时前
任务智能体可以自动完成哪些类型工作,是不是只能做简单重复操作?
大数据·人工智能
明志数科8 小时前
具身智能数据供给的分层:分布式采集与入厂采集的工程边界分析
人工智能·机器学习·机器人
像风一样自由20208 小时前
41.用FastAPI搭建一个RAG后端需要哪些接口
人工智能·大模型·fastapi·rag·智能体
小蒋观天下8 小时前
两轮车检测AI摄像头——2026行业竞争格局、商业模式与核心痛点
大数据·人工智能·安全·计算机视觉·ai大模型