不买 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

相关推荐
tellmewhoisi20 小时前
深度学习0:数学知识:正态分布4(坐标变换的缩放比例(面积微元变换))
人工智能·深度学习
布吉岛的石头21 小时前
Java 程序员第 50 阶段14:灾难性遗忘与回放
人工智能·深度学习·transformer
不吃鱼的羊21 小时前
诊断27解锁dll文件制作(Visual Stdio无法安装版)
人工智能
后端小肥肠21 小时前
漫画工坊上线用户破百:公众号漫画从需求到变现全复盘
人工智能·aigc·agent
赛博山人21 小时前
字节跳动下线扣子企业版,团队已并入豆包
人工智能
isboyjc21 小时前
Lomo Agent:面向创作型、持续协作 Agent 的架构设计与工程实践
人工智能·架构·agent
小蒋观天下21 小时前
码率、I帧间隔、智能编码冲突:H.265+导致AI取流解码异常
人工智能
roman_日积跬步-终至千里1 天前
AI 能让一个人成为团队吗?从数据中台到 OPC,重新理解软件工程能力
大数据·人工智能·软件工程
在所不辞兄1 天前
为什么神经网络在训练集损失已接近零后继续训练,测试性能仍可能继续提升,而不是单纯地越来越过拟合?
人工智能·深度学习·神经网络·机器学习·智能仿真