You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过布尔输入启用/停用strategy.risk.max_drawdown风控功能?

解决TradingView策略中布尔开关控制最大回撤风控的问题

你的代码问题分析

  1. 类型匹配错误:input.bool()返回的是布尔值(true/false),你却把它和字符串"true"做比较,逻辑不仅反了,还存在类型不匹配的问题。
  2. 函数调用位置错误:strategy.risk系列属于全局策略配置函数,必须在代码的全局作用域中执行,不能放在if条件块里,否则TradingView会直接报错。

正确实现方案

因为没法直接条件性启用/禁用这个风控函数,我们可以用动态设置阈值的技巧:当不需要回撤限制时,把阈值设为一个极大的数值(比如999%),这样正常交易中根本不可能触发平仓,相当于禁用了该风控。

代码示例:

//@version=5
strategy("带回撤开关的策略", overlay=true)

// 布尔输入开关
enable_drawdown_risk = input.bool(true, title="启用5%最大回撤风控", tooltip="勾选后触发回撤自动平仓")

// 根据开关动态设置回撤阈值:启用时设4.9%,禁用时设999%(无实际限制)
drawdown_value = enable_drawdown_risk ? 4.9 : 999

// 全局配置最大回撤风控
strategy.risk.max_drawdown(value=drawdown_value, type=strategy.percent_of_equity)

// 以下是你的策略逻辑示例(可替换成自己的代码)
long_condition = ta.crossover(ta.sma(close, 50), ta.sma(close, 200))
if (long_condition)
    strategy.entry("Long", strategy.long)

short_condition = ta.crossunder(ta.sma(close, 50), ta.sma(close, 200))
if (short_condition)
    strategy.entry("Short", strategy.short)

逻辑说明

  • 当勾选开关时,drawdown_value取4.9,触发条件为权益回撤超过4.9%时自动平仓所有仓位
  • 当不勾选开关时,drawdown_value取999,除非权益几乎亏光(回撤999%)才会触发,相当于完全禁用回撤限制

内容的提问来源于stack exchange,提问作者snowbayles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:17:06