如何在 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")
我在 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")