![](/img/trans.png)
[英]How to draw a line on the bar close when the condition is met in Pine Script?
[英]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_Long
和End_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.