我希望在3个实例中出现交叉时使用函数plotshape()来显示一个标志,例如:
当我使用和函数时,只有当交叉发生在单条上时,当我使用或函数时,标志才会显示两次。
我希望在两条线交叉之后画出1面旗子
示例: EMA8在EMA113 (无标志)交叉WMA200标志上交叉,其中EMA113的前一个交叉的条件为真
希望这是有意义的,谢谢!
EMA8_= ta.ema(close,8)
EMA24_= ta.ema(close,24)
WMA50_= ta.wma(close,50)
EMA113_= ta.ema(close,113)
WMA200_= ta.wma(close,200)
ema8=plot(ta.ema(close,8),color=color.white)
ema24=plot(ta.ema(close,24),color=color.yellow)
wma50=plot(ta.wma(close,50),color=color.red)
ema113=plot(ta.ema(close,113),color=color.aqua)
wma200=plot(ta.wma(close,200),color=color.blue)
plotshape(series = (ta.crossover(EMA8_, EMA113_)) and (ta.crossover(EMA8_, WMA200_)) , style=shape.flag, location=location.top, color=#9FE2BF, size=size.normal)
plotshape(series = (ta.crossover(EMA24_, EMA113_)) and (ta.crossover(EMA24_, WMA200_)) , style=shape.flag, location=location.top, color=#FFC000, size=size.normal)
plotshape(series = (ta.crossover(WMA50_, EMA113_)) and (ta.crossover(WMA50_, WMA200_)) , style=shape.flag, location=location.top, color=#FF5F15, size=size.normal)
发布于 2021-10-30 09:56:55
有多种方法可以做到这一点。在所有情况下,您都应该考虑为一个条件变为真的条形设置一个变量,该变量仅为true
。
您应该在此基础上实现您的逻辑,或者在发生特定事件时可以使用返回true
的函数。在这里使用ta.crossover()
确实是正确的。
让我们看看你的情况。
EMA8跨越EMA113和WMA200
首先,查找EMA8是否跨越了EMA113 或 WMA200。当这是true
时,检查EMA8是否大于两者。您需要使用交叉功能,这里只触发您的标志,一旦交叉发生。然后,通过比较实际值,您还可以检查另一个交叉是否发生在过去的某个时候。因为如果EMA8在过去跨越了EMA113或WMA200,那么它的价值就会更大。
这是你的条件1的代码,你可以根据你的其他条件来调整它。
//@version=5
indicator("My Script")
EMA8_= ta.ema(close,8)
EMA113_= ta.ema(close,113)
WMA200_= ta.wma(close,200)
bool isCond1 = (ta.crossover(EMA8_, EMA113_) or ta.crossover(EMA8_, WMA200_)) and (EMA8_ > EMA113_) and (EMA8_ > WMA200_)
plot(ta.ema(close,8),color=color.white)
plot(ta.ema(close,113),color=color.aqua)
plot(ta.wma(close,200),color=color.blue)
plotshape(series = isCond1 , style=shape.flag, location=location.top, color=#9FE2BF, size=size.normal)
https://stackoverflow.com/questions/69776548
复制相似问题