【从0搭Bot · 第3讲】给 bot 装方向感:EMA50 硬闸门

标签:连载 / 从0搭Bot / 第3讲 / EMA / 趋势过滤

本期目标

这一讲结束,你能理解 EMA50 方向闸门:为什么它只判断方向、不做预测,以及怎么把它接进突破策略。

前置准备

第2讲已能拉 K 线;会用 Python 列表切片(closes[-1]、closes[-50:])。

步骤1:EMA50 是什么

指数移动平均线,越近的价格权重越大,比普通均线更跟手。你的 bot 用 50 周期,也就是把最近 50 根 5m K 线揉成一条趋势线。

def calculate_ema(closes, period=50):
    multiplier = 2 / (period + 1)
    ema = sum(closes[:period]) / period   # 前50根先算简单均值做种子
    for price in closes[period:]:
        ema = (price - ema) * multiplier + ema
    return round(ema, 4)

步骤2:方向闸门:顺趋势才给分

价格在 EMA50 上方 = 多头市场,多单打分;在下方 = 空头市场,空单打分。方向不符直接 0 分——这就是「硬闸门」:逆势信号进不来。

uptrend   = current_price > ema   # 多头市场
downtrend = current_price < ema   # 空头市场

# 多单的 EMA 方向分(满分15):
s_ema = 15.0 if uptrend else (7.5 if abs(close-ema)/ema < 0.001 else 0.0)

步骤3:为什么是闸门,不是金叉死叉

不做金叉/死叉这种滞后信号,只用 EMA 判断大方向;进场仍然看「突破 + 量能」。方向错了,再漂亮的突破也不碰——这就是闸门的价值。

# 常见误区:金叉追多(滞后)
# 正确姿势:价格在EMA上方 + 突破阻力 + 量比放大 才做多

验证

在 bot 日志里找到含「EMA50」的信号行;对照图表:多头时 bot 只出多单,空头时只出空单,没有逆势单。

小结

EMA50 是方向盘:上方只做多、下方只做空;它过滤的是「逆势单」,不是预测涨跌。

下期预告

第4讲:ADX 过滤——怎么识别横盘死市,别在震荡里送钱

完整代码:https://github.com/a380467214-art/AiBot


真实 bot 开发日常连载,demo 盘实测后才发,代码可复制。每日复盘 / 踩坑日记 / 从0搭Bot 连载 / 行业观察持续更新。

#量化bot日常 #从0搭Bot

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐