我正在使用 Pine-Script 语言和 EMA 20 和 EMA 50 交易策略构建脚本,我想在蜡烛条的开盘价大于 EMA 20 并且 EMA 20 大于 EMA 50(移动速度较慢的线)时,在蜡烛条下方绘制一个“开始做多”交易图,一旦发生这种情况,我希望代码将“GoneLong”变量值设置为 TRUE,因此如果下一个蜡烛在与前一个相同的条件下打开,它不会触发另一个图表上的“开始做多”交易,因为这已经在上一根蜡烛中开始了。
然后,我希望当蜡烛条收于 EMA 50 线下方时将 GoneLong 变量设置回“FALSE”,如果满足开始做多条件,则可以在图表上制作一个新的“开始做多”图。
我试图在下面对此进行编码,(请参阅代码)
// © SDudders
//@version=4
study(title="Double EMA + Alerts", shorttitle="DEMA", overlay=true, resolution="")
length_20 = input(20, minval=1)
src_20 = input(close, title="Source")
e1_20 = ema(src_20, length_20)
e2_20 = ema(e1_20, length_20)
dema_20 = 2 * e1_20 - e2_20
plot(dema_20, "DEMA 20", color=color.green)
length_50 = input(50, minval=1)
src_50 = input(close, title="Source")
e1_50 = ema(src_50, length_50)
e2_50 = ema(e1_50, length_50)
dema_50 = 2 * e1_50 - e2_50
plot(dema_50, "DEMA 50", color=color.red)
GoneLong = "FALSE"
Start_Long = (GoneLong == "FALSE" and open >= dema_20 and dema_20 > dema_50), GoneLong := "TRUE"
plotshape(series=Start_Long,text="START LONG", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
End_Long = (GoneLong == "TRUE" and close < dema_50), GoneLong := "FALSE"
plotshape(series=End_Long,text="END LONG", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
此代码无法正常工作... 每次在 EMA 20 和 EMA 50 上方打开一根新蜡烛时,它都会在图表上绘制一个新的“开始做多”图。
当这种情况发生直到满足“End_Long”条件并且不在每根蜡烛上标记时,我如何才能让代码仅在图表上绘制?
任何帮助都非常感谢。
见截图 https://i.stack.imgur.com/Ua2eq.png
干杯:)