繁体   English   中英

如何设置变量以在满足条件时更改 - Pine 脚本

[英]How to set a variable to change upon a condition being met - Pine Script

我正在使用 Pine-Script 语言和 EMA 20 和 EMA 50 交易策略构建脚本,我想在蜡烛条的开盘价大于 EMA 20 并且 EMA 20 大于 EMA 50(移动速度较慢的线)时, plot 一个“开始做多”交易 plot 在烛台下方,一旦发生这种情况,我希望代码将“GoneLong”变量值设置为 TRUE,因此如果下一个蜡烛在与前一个相同的条件下打开,它不会触发另一个图表上的“开始做多”交易,因为这已经在前一根蜡烛中开始了。

然后,当蜡烛条收于 EMA 50 线下方时,我希望将 GoneLong 变量设置回“FALSE”,然后如果满足开始做多条件,则在图表上创建一个新的“开始做多”plot。

我试图在下面对此进行编码,(请参阅代码)

// © 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 上方打开一个新的蜡烛条时,它都会在图表上绘制一个新的“开始做多”plot。

当这种情况发生直到满足“End_Long”条件并且没有在每根蜡烛上标记时,我如何才能将代码仅显示在图表上的 plot 上?

任何帮助都非常感谢。

见截图 https://i.stack.imgur.com/Ua2eq.png

干杯:)

稍微修改了你的脚本。

-删除了GoneLong字符串变量

- if scope,则在本地重新分配Start_LongEnd_Long变量。

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

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

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM