自动交易、PineScript、TradingView、MT4、交易机器人这些关键词如今在量化圈热度飙升。本文将以一个极简却有效的均线策略为例,带你完整走通「用 TradingView 生成信号 → PineScript 部署策略 → 通过 webhook 驱动 MT4 自动下单」的整套流程。即使你只会最基础的脚本语言,也能一步步复制出自己的无人值守交易系统。
为什么先用小策略开局?
- 越简单越稳定:复杂模型参数多、故障点多,反噬更快。
- 调试成本低:一眼就能看出均线是否翻转,减少 Overnight Risk。
- 为后续升级留白:先跑通骨架,后面再加 止损、追踪止盈、资金曲线过滤 也容易。
牢记四项原则:起步极简、理解风险、定期迭代、严控仓位。
三步骤总览
| 阶段 | 关键动作 | 目标 |
|---|---|---|
| 策略设计 | 选市场 & 定规则 | 明确入场、出场、风控 |
| 代码实现 | PineScript 编写 | 生成可回测的完整脚本 |
| 自动化 | TradingView Alert → MT4 | 零人工干预下单 |
本例策略:双均线趋势跟踪
- 入场
当 8EMA 上穿 21EMA → 开多;下穿 → 开空 - 出场
价格反向跌破 200SMA(多)或升破 200SMA(空)→ 全部平仓 - 风控
单次固定手数(示例用 0.1 手),无杠杆倍数、无加仓
👉 点击获取本周最优品种 + 挂单参数推荐
PineScript 核心模块详解
1. 用户输入面板:让参数随时可调
periodShort = input.int(8, "Short MA长度")
periodLong = input.int(21, "Long MA长度")
periodExit = input.int(200,"Exit MA长度")
smoothingShort = input.string("EMA", "Short平滑类型",
options=["SMA","EMA","WMA","HullMA"])
// 其余两条均线同理……input.* 函数让回测者直接在 TradingView 图表右侧边栏拖拉数字即可实时刷新结果。
2. 万能 MA 计算函数
ma(src, len, type) =>
switch type
"SMA" => ta.sma(src, len)
"EMA" => ta.ema(src, len)
"WMA" => ta.wma(src, len)
"HullMA"=> ta.hma(src, len)把类型、长度、价格源全部变量化,一行函数接管全部均线。
3. 触发器逻辑
longCond = ta.crossover(ma(close, periodShort, smoothingShort),
ma(close, periodLong, smoothingLong))
shortCond = ta.crossunder(ma(close, periodShort, smoothingShort),
ma(close, periodLong, smoothingLong))
exitLong = ta.crossunder(close, ma(close, periodExit, smoothingExit))
exitShort = ta.crossover(close, ma(close, periodExit, smoothingExit))用内置 ta.crossover / ta.crossunder 捕捉“金叉 / 死叉”,避免肉眼盯盘。
4. 策略指令与回测
if longCond
strategy.entry("Long", strategy.long, 1000) // 1000 合约示例
if shortCond
strategy.entry("Short", strategy.short, 1000)
if exitLong
strategy.close("Long")
if exitShort
strategy.close("Short")TradingView 即时给出 Sharpe、胜率、最大回撤 等关键指标。
5. 加入时间过滤器
只回测 2024-Q1:
start = input.time(timestamp("2024-01-01"))
end = input.time(timestamp("2024-03-31"))
inRange = time >= start and time <= end任何交易逻辑前加上 if inRange 即可限定测试区间。
将脚本升阶至全自动:TradingView Alert → MT4
步骤速记:
- 把脚本顶部
indicator()换成strategy(),让它能输出信号。 在图表上点击 “Add Alert”。消息模板写:
{{strategy.order.action}} {{ticker}} {{strategy.position_size}}- Alert Webhook URL 填写 本地中继器地址,如:
http://localhost:8080/webhook - 本地程序收到 JSON 后转发至 MT4 EA,即实现秒级下单。
常见问题答疑(FAQ)
Q1:我必须用 8EMA/21EMA/200SMA 吗?
不一定。你可以把三条均线的长度、类型全部放到 input 里,图表上随时改,多测试几组就能找出 最适合当前波动率 的参数。
Q2:MT4 端 EA 如何写?
核心就两段:解析 JSON 的 WebRequest + OrderSend()。网上有大量开源示例,记住添加 幻数(Magic Number) 方便后续区分策略订单即可。
Q3:回测盈利,实盘就亏损?
95% 是滑点和点差导致。请先在策略里填 真实点差、手续费,再做一次蒙特卡洛。确认无误后,用最小手数跑一周实盘采集数据再扩仓。
Q4:能否用此脚本交易股票?
可以,TradingView 支持美股、港股以及加密货币;只需把品种树切换即可,脚本本身无须改动。
Q5:我电脑要 24h 开机?
本地中继器需保持在线。若不方便,可考虑云 VPS(阿里云、腾讯云即可),月费不到一杯咖啡钱。
Q6:如何增加移动止损?
在脚本里监听 strategy.position_avg_price,并使用 strategy.exit 设置 trail_points= 即可实现 动态回撤止盈。
结语:从小白到量化的一步之遥
凭借 50 行 PineScript + 一套 MT4 脚本,你就拥有了可全天候工作的交易机器人。初期别被华丽指标迷惑,把「双均线+严止损+小仓位」这条稳健路线跑通,再逐步叠加过滤器——ATR止损、波动率突破、K 线收盘再确认 等等。量化之路不在复杂,而在可复制、可持续。祝你回测长青,实盘长红!