据我了解,根据https://www.tradingview.com/study-script-reference/上的pine脚本参考手册 函数strategy.exit中的参数仅用于下订单 这就是文档所说的 “订单的条件。如果条件为'true',则放置订单。如果条件为'false',则什么都不会发生(具有相同ID的先前放置的订单不会被取消)。默认值为'true'。 “
这意味着在满足条件时不一定必须执行该命令。例如,如果我有一个条件,即当RSI小于30时我将退出交易,并且如果我有
strategy.exit("IdOfThisOrder","EntryOrderID", when=rsilessthan30, profit=100,loss=50)
(这意味着我的获利目标为100个镐,止损为50个报价) 然后,假设既没有达到利润目标,也没有止损,则仅下订单,并且将不执行该订单。
如果我必须在RSI <30时退出该头寸,那么我实际上将必须对此进行测试,然后致电strategy.close
if rsi<30
strategy.close("EntryOrderID")
另外,我还必须取消现有订单,这意味着
if rsi<30
strategy.cancel("IdOfThisOrder")
strategy.close("EntryOrderID")
实际上,目标和利润将由strategy.exit处理,而其他条件则由strategy.close
处理这似乎有点复杂,也许我听不懂用法。有时我得到的结果并没有完全停止,所以我想了解如何将它们一起使用
我环顾四周,找不到任何示例。有人可以请教吗?谢谢您的回答
回答第一条评论: 这段代码:
if (shortentercondition )
strategy.entry("Tech1", strategy.short)
strategy.exit("Exit","Tech1",profit=profittarget,stop=sl_level)
if ( shortclosecondition )
strategy.cancel("Exit")
strategy.close("Tech1")
和此代码: 如果(shortentercondition) strategy.entry(“ Tech1”,strategy.short) // strategy.exit(“ Exit”,“ Tech1”,profit = profittarget,stop = sl_level)
if ( shortclosecondition or proftconditionmet or slconditionmet)
// strategy.cancel("Exit")
strategy.close("Tech1")
在我的情况下,应该等效。但是第一个给我亏损(大约-10%),第二个给我利润(大约20%)。在第一种情况下,我无法弄清在许多情况下退出交易的原因。我可以提供实际交易的详细信息,但是可能需要大量数据才能通过此论坛进行故障排除。希望您能指出该代码中的区别。