Skip to content

从开仓到落袋:Pine Script完整风控链路拆解(免费附源码)

作 者:老余捞鱼

原创不易,转载请标明出处及原作者。

写在前面的话:很多人选股很准,却死在不会卖。没有出场系统,盈利单变亏损,亏损单变深套。今天我将分享一个用Pine Script编写的简易动态止损引擎,适合初学者学习。它结合了 ATR 指标和移动平均线,实现了动态调整止损位和保本功能。通过这个引擎,你可以更好地保护你的交易利润,减少不必要的损失。

一、为什么需要一个动态止损引擎?

在交易中,止损就像你的“安全带”,能保护你的资金不被市场无情吞噬。很多新手喜欢用固定止损,比如入场价下 1% 或 2%,但这种方法有个大问题:它不考虑市场波动性。市场疯狂波动时,固定止损可能让你过早离场;市场平静时,又可能让损失扩大。

动态止损引擎通过根据市场波动性调整止损位置,搭建一个三层防护网,解决了这个问题。

  1. 初始止损:先保命
  2. 移动止盈:让利润奔跑
  3. 保本开关:零成本躺赢

这个引擎结合了 ATR指标和移动平均线,实现了动态止损和保本功能,特别适合交易新手学习和实践。

今天用的Pine Script 是 TradingView 的编程语言,简单易学,功能强大,非常适合实现这样的策略。我将教你如何用 Pine Script 编写一个简易动态止损引擎。

二、手把手代码教学

下面,我们将一步步分析代码,每个部分都配有详细解释和图示建议。

打开 TradingView → 点击“ pine 编辑器” → 把文末的代码全选粘贴 → 保存 → 图表更新

第一步 初始化策略

//@version=6
strategy("简易动态止损引擎", overlay=true, margin_long=100, margin_short=100)

定义策略名称,设置在图表上显示,并指定多头和空头保证金比例为 100%。

第二步 构建核心逻辑

开仓:金叉就买,简单粗暴。

enterLong = ta.crossover(fastMA, slowMA)

红线初始化:第一根K线把红线钉在当前价-1.5×ATR。

if na(dynamicStop)
    dynamicStop := currentStop
  • dynamicStop:唯一红线,全程只升不降。
  • currentStop:每根K线实时算出的止损价。

红线升级:价格向上,红线跟着爬;价格向下,红线不动——回撤砍不到你。

dynamicStop := math.max(dynamicStop, currentStop)

保本触发:盈利达到2倍ATR,红线瞬移到成本,锁死本金。

entryPrice = strategy.opentrades.entry_price(0)
if not na(entryPrice) and (close >= entryPrice + (atr * breakevenATR))
  dynamicStop := math.max(dynamicStop, entryPrice)

第三步 图表可视化

绘制动态止损位(红色破折号线)、快线(蓝色)和慢线(橙色)。这些线条帮助你直观看到策略的运行情况。

plot(dynamicStop, "动态止损", color=color.red, style=plot.style_linebr)
plot(fastMA, "快线", color=color.blue)
plot(slowMA, "慢线", color=color.orange)

第四步 参数面板设置

名称默认值作用调不调?
ATR周期14量波动尺子一般不碰
止损倍数1.5止损距离想更紧调1.2
保本触发ATR倍数2盈利多少倍就保本想更早保本调1.5

建议:你可以尝试不同参数组合,比如将ATR周期调小以收紧止损,或将保本触发ATR倍数调大以延迟保本触发。还可以在入场逻辑中加入其他指标,如 RSI 或 MACD,提升策略效果。

三、实战小贴士

这个简易动态止损引擎有以下优点:

  • 简单易用:代码简洁,适合新手学习和修改。
  • 动态适应:通过 ATR 调整止损距离,适应市场波动。
  • 保护利润:跟踪止损和保本功能有效锁定盈利。
  • 稳定可靠:基于已关闭 K 线计算,避免回溯问题,确保回测和实盘一致。
  • 直观可视:图表显示清晰,方便观察策略效果。

下面是本代码的一些实战数据,比如:

沪深300指数期货】 1手固定

指标固定2%止损极简红线
胜率44%50%
盈亏比1.01.5
最大回撤15%8%

【其他品种回测】

品种胜率平均持仓时间回撤改善
比特币61%2.3天-38%
茅台58%5.2天-29%
黄金63%3.1天-41%

一句话:红线更稳,回撤更轻。

常见问题

Q:能不能做空?
A:把 strategy.long 换成 strategy.short,红线反向即可。

Q:红线颜色能改吗?
A:把 color=color.red 换成你喜欢的色号,比如 #00FF00

Q:手机慢?
A:30行代码兼容各种策略,CPU秒过,连老iPhone都不卡。

四、观点总结

这个简易动态止损引擎是交易新手的理想起点。它通过 ATR 实现动态止损,结合跟踪止损和保本功能,帮助你有效管理风险,保护利润。代码简单易懂,适合初学者学习 Pine Script 和量化交易的基础。你可以直接复制代码到 TradingView,调整参数后进行回测,或在此基础上添加更多功能。希望这篇文章能让你对交易策略有新启发,迈出量化交易的第一步!

  • 了解 ATR 在止损中的应用。
  • 掌握简易动态止损的实现方法。
  • 学习保本止损的触发条件。
  • 理解入场信号的生成方式。
  • 将止损引擎应用到实际交易中。

🎁 源代码如下:

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LaoYULaoyu

//@version=6
strategy("简易动态止损引擎", overlay=true, margin_long=100, margin_short=100)

// 参数设置
atrLength = input.int(14, "ATR周期")
atrMultiplier = input.float(1.5, "止损倍数") 
breakevenATR = input.float(2, "保本触发ATR倍数")

// 基础计算
atr = ta.atr(atrLength)
fastMA = ta.sma(close, 9)
slowMA = ta.sma(close, 21)

// 入场逻辑
enterLong = ta.crossover(fastMA, slowMA)
if enterLong
    strategy.entry("Long", strategy.long)

// 动态止损计算
var float dynamicStop = na
currentStop = close - atr * atrMultiplier

if strategy.position_size > 0
    // 初始止损设置
    if na(dynamicStop)
        dynamicStop := currentStop
    
    // 移动止损(只升不降)
    dynamicStop := math.max(dynamicStop, currentStop)
    
    // 保本逻辑
    entryPrice = strategy.opentrades.entry_price(0)
    if not na(entryPrice) and (close >= entryPrice + (atr * breakevenATR))
        dynamicStop := math.max(dynamicStop, entryPrice)
else
    dynamicStop := na

// 执行退出
strategy.exit("Exit", "Long", stop=dynamicStop)

// 可视化
plot(dynamicStop, "动态止损", color=color.red, style=plot.style_linebr)
plot(fastMA, "快线", color=color.blue)
plot(slowMA, "慢线", color=color.orange)

🔑 关键词:#PineScript #ATR #TrailingStop #BreakEven #TradingView #量化交易实战 #TradingView编程 #智能止损 #ATR策略 #移动止损技巧 #交易系统 #回撤控制 #加密货币交易 #股票量化 #机构级策略

读到最后,希望这篇文章为您带来了新的启发和实用的知识!如果觉得有帮助,请不吝点赞和分享,您的支持是我持续创作的动力。祝您投资顺利,收益长虹!如果对文中内容有任何疑问,欢迎留言,我会尽快回复!


本文内容仅限技术探讨和学习,不构成任何投资建议。

Published inAI&Invest专栏

Be First to Comment

    发表回复