0

我正在使用 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

干杯:)

4

1 回答 1

0

稍微修改了你的脚本。

-删除了GoneLong字符串变量

-在本地范围内重新分配Start_Long和变量。End_Longif

-添加了一个检查以仅显示非连续呼叫。

//@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)

var bool Start_Long = na
var bool End_Long = na

if (open >= dema_20 and dema_20 > dema_50)
    Start_Long := true
    End_Long := false

plotshape(series=Start_Long and not nz(Start_Long[1]),text="START LONG", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)

if close < dema_50
    Start_Long := false
    End_Long := true

plotshape(series=End_Long and not nz(End_Long[1]),text="END LONG", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)

在此处输入图像描述

于 2021-03-05T15:49:41.900 回答