pine-script - Pine 脚本:如果 x -> 百分比停止 else -> ATR 停止
问题描述
我正在尝试为我的百分比追踪止损添加一个触发器,同时有一个 ATR 止损,用于未触发追踪止损的时间。请记住,我对编码很陌生。
尾随的触发器是在慢速 MA 上方的快速 MA 和 ATR 停止的初始停止。触发器和初始停止的类型并不那么重要。问题是我无法弄清楚如何同时实现它们。可以像我在这里尝试的那样简单吗?止损单独起作用,但同时使用时,它仅使用 ATR 止损(从不追踪止损),并且仅在快速 MA 低于慢 MA(未满足触发条件)时使用。当快速 MA 高于慢速 MA 时,它永远不会触发停止,但如果我删除带有 ATR 停止的 else 语句,它工作正常。现在对我来说没有意义。
一些指导将不胜感激!
//Moving Average calculation and plotting
Not important
//ATR input
ATR = input(14, step=1, title='ATR periode')
LongstopMult = input(3, step=0.1, title='ATR Long Stop Multiplier')
//Trailing stop inputs
longTrailPerc = input(title="Trail Long Loss (%)",
type=float, minval=0.0, step=0.1, defval=4.6) * 0.01
// Determine trail stop loss prices
longStopPrice = 0.0
longStopPrice := if (strategy.position_size > 0)
stopValue = close * (1 - longTrailPerc)
max(stopValue, longStopPrice[1])
else
0
//Strategy entry conditions
XXX
// Submit exit orders for trail stop loss price
if (fastSMMA > slowSMMAlong)
strategy.exit(id="XL TRL STP1", stop=longStopPrice)
else
stop_level = low - (ATR * LongstopMult)
strategy.exit("TP/SL", stop=stop_level)
解决方案
您可以切换 longStopPrice 值并仅使用 1 个 strategy.exit 函数,如下所示。
fastSMMA = sma(close, 20)
slowSMMAlong = sma(close, 200)
//ATR input
ATR = input(14, step=1, title='ATR periode')
LongstopMult = input(3, step=0.1, title='ATR Long Stop Multiplier')
//Trailing stop inputs
longTrailPerc = input(title="Trail Long Loss (%)",
type=float, minval=0.0, step=0.1, defval=4.6) * 0.01
// Determine trail stop loss prices
longStopPrice = 0.0
if fastSMMA > slowSMMAlong
longStopPrice := if (strategy.position_size > 0)
stopValue = close * (1 - longTrailPerc)
max(stopValue, longStopPrice[1])
else
0
else
longStopPrice := low - (ATR * LongstopMult)
// debug
bgcolor(fastSMMA > slowSMMAlong ? red : na) // highlight the type of trigger
plot(longStopPrice, style = stepline, offset = 1) // print the exit line on the chart
//Strategy entry conditions // example entry
strategy.entry("enter long", true, 1, when = open > high[20])
// Submit exit orders for trail stop loss price
strategy.exit(id="XL TRL STP1", stop=longStopPrice)
推荐阅读
- embedded-linux - Linux 嵌入式:Nanopi 内核构建 - Led 支持 - sys/class/leds 为空
- python - 有什么方法可以通过单击 tkinter 按钮来创建全局变量?
- python - 用于json数据提取的循环
- python - 如何从 Json 中的响应中提取精确值?
- c++ - **如何解决 gmock void 签名**
- ios - 如何在Apple Watch的iOS通知中隐藏关闭按钮
- media-source - MediaSource 中的视频解码器配置无效
- python - 如何在引用相同元组的元组中存储函数?
- apollo - VueApollo CORS 请求失败
- html - 向页面添加更多部分后,CSS 动画变慢/未完成