如何在 Pine Script 中对两种类型的 ext.strategy 使用 Or 条件运算符

How to use the Or conditional operator for two types of ext.strategy within Pine Script

我在 pine 脚本中的交易视图中使用交叉和移动平均线交易方法。目前我的 exit.strategy 基于 3 ATR 止损。它工作正常。我想回测一种方法,该方法引入了更快的 MA 交叉退出的想法,如果这种情况发生在止损被击中之前。我是新手,但已阅读手册并参加了初级 python 课程。我查看了 if-else 和 Or 运算符,但收到一条错误消息。

这是代码(为了尽可能简短而进行了缩写)

#交易条件 long = crossover(fastSMA, slowSMA) short = crossunder(fastSMA, slowSMA) exitLongquick = crossunder(exitSMA, slowSMA) exitShortquick = crossover(exitSMA, slowSMA) stopLossLong = low - atrValue*stopOffset stopLossShort = high + atrValue*stopOffset

执行多头交易入场和出场的命令

if (long)
strategy.entry("long", strategy.long, PosSizeUnits) 

strategy.exit("exit", "long", stop=stopLossLong) or ("exit", "long", 
stop=exitLongquick)

执行空头交易的命令

if (short)
strategy.entry("short", strategy.short, PosSizeUnits) 

strategy.exit("exit", "short", stop=exitShortquick) or ("exit", "long", 
stop=exitShortquick)

在这两种情况下,多头和空头都是 strategy.exit 行,我收到错误消息“输入不匹配','期待')'。”

如果条件语句是答案,我们将不胜感激或欢迎任何其他建议。

我试过括号的各种组合,也试过 if-else 语句但没有成功。

您不能使用 or 运算符双重列出函数的参数。 如果您希望策略在 stopLossLong 级别退出 - 将其包含在 stop= 参数中,但是 exitLongquick 不适合 stop= 参数,因为它是一个布尔值, 并且该参数需要一个特定的价格。您可以在 exitLongquick 本地范围内使用 strategy.close() 函数,如下例所示:

if (long)
    strategy.entry("long", strategy.long, PosSizeUnits) 

strategy.exit("exit", "long", stop=stopLossLong) 

if exitLongquick
    strategy.close("long")