pine-script - Pine 脚本 - 如何编程多个止盈目标
问题描述
我正在尝试在松树策略中设置 3 个获利目标。
在下面的代码中,当触发做多条件时,打开一个数量为 100 的条目。这很好。valueTakeProfit1、2 和 3 的值也是正确的。但是一旦我将它们放入一个 strategy.exit() 中,它们就会被触发或未被触发,或者利润处于错误的水平。变量 ATR1/2/3percent 的值不是百分比,它只是从通过 strategy.entry() 打开的 100 中取出的数量。
if(longCondition or re_entryCondition)
alertLine := 1
strategy.entry(id="Long Entry", long=true, when=alertLine==1, qty=100)
valueTakeProfit1 := close+ATR1*ma_function(tr(true), lengthATR)
valueTakeProfit2 := close+ATR2*ma_function(tr(true), lengthATR)
valueTakeProfit3 := close+ATR3*ma_function(tr(true), lengthATR)
strategy.exit("Take Profit 1 Long", from_entry="Long Entry", limit=valueTakeProfit1, qty=ATR1percent)
strategy.exit("Take Profit 2 Long", from_entry="Long Entry", limit=valueTakeProfit2, qty=ATR2percent)
strategy.exit("Take Profit 3 Long", from_entry="Long Entry", limit=valueTakeProfit3, qty=ATR3percent)
//End long positions
if(longCloseCondition)
strategy.close(id="Long Entry")
有人可以帮助我如何定义多个止盈水平吗?
解决方案
好的,所以我发现了错误。在脚本的开头,我确实声明了变量:
valueTakeProfit1 = 0.0
valueTakeProfit2 = 0.0
valueTakeProfit3 = 0.0
在 if 语句之前,我确实将变量重置为零:
valueTakeProfit1Short := 0.0
valueTakeProfit2Short := 0.0
valueTakeProfit3Short := 0.0
通过在 if 语句之前用正确的值声明变量,它确实解决了问题:
valueTakeProfit1 = close + (ATR1*ma_function(tr(true), lengthATR))
valueTakeProfit2 = close + (ATR2*ma_function(tr(true), lengthATR))
valueTakeProfit3 = close + (ATR3*ma_function(tr(true), lengthATR))
推荐阅读
- python - PYTHON ValueError - how i can change my code so it would bring exception?
- node.js - 使用 nodeJs 抓取 XML
- symfony - Api 平台,react admin - 创建具有关系的新实体
- web - 将 WIX 连接到域的子文件夹
- javascript - 输入社会安全号码,前 5 位带点,然后输入实际号码
- geoserver - 如何在 OpenLayers 6 中显示 WFS?
- ssl - 有没有办法在 Chrome 控制台中查看 websocket 连接的 TLS 证书详细信息?
- c# - 如何并行运行 SpecFlow 测试
- android - Xamarin Forms Android 错误 CS0117:“Resource.Drawable”不包含“....”的定义
- c# - NullReferenceException:对象引用未设置为对象的实例(在我的 PlayerDeath 脚本上)