if/else 孔雀鱼颜色变化问题。如何解决?
Guppy color change problem with if/else. how to solve it?
我有一个孔雀鱼策略,应该输入多头(孔雀鱼在特定条件下变成绿色)或空头(孔雀鱼在特定条件下变成红色)。为了确定松树脚本中的颜色,我使用了 if/else。问题是什么?当满足两个条件中的 none 时(比如说灰色),我得到第三种颜色,例如,我得到 red1=>grey=>red2 我的策略发送关闭信号red2 发生时的前一笔交易,并以相同的方向打开新的一笔交易。在我的策略中,灰色不是 entering/exiting 位置的信号,所以我想让当前 'grey' 的颜色与前一段的颜色相同,直到满足完全相反的条件。我尝试了 else na,但那些中间条件仍然给我错误的信号,我也尝试将 plotcolor=plotcolor[1] 放在 'else' 中,但这种类型的命令不能放在 pine 脚本中。谁能帮我解决这个问题?
plot_color0 = if hma8>hma0[2] and hma7>hma0[2] and hma6>hma0[2] and hma5>hma0[2] and hma4>hma0[2] and hma3>hma0[2] and hma2>hma0[2] and hma1>hma0[2]
aqua
else
if hma8<hma0[2] and hma7<hma0[2] and hma6<hma0[2] and hma5<hma0[2]
and hma4<hma0[2] and hma3<hma0[2] and hma2<hma0[2] and hma1<hma0[2]
maroon
else
gray
longCondition = (plot_color0 != plot_color0[1]) and (plot_color0 == aqua) shortCondition = (plot_color0 != plot_color0[1]) and (plot_color0 == maroon)
基本上问题发生在 tradingview 时。com/x/AnFOTdEa 颜色变成蓝色(长信号让我命令关闭之前的头寸并打开新的)之后变成灰色然后再次变成蓝色,我再次收到长信号(关闭我之前的多头头寸并再次打开它)。我想弄清楚的是如何设置警报,如果先前的交易信号方向与先前信号的方向相同,则该警报不会在灰色之后触发,或者以这种方式删除此 'else gray',颜色只会改变如果满足相反的方向条件
如果我把 plot0 != gray 放在条件警报中,显然根本不会触发,我不能排除 'else gray'
最后,除了上面提到的 longCondition 和 shortCondition 之外,我只想在之前的触发方向相反时触发警报
试试这种形式的条件,灰色只会保留在前几根柱子上。
plot_color0 = gray
plot_color0 := if hma8>hma0[2] and hma7>hma0[2] and hma6>hma0[2] and hma5>hma0[2] and hma4>hma0[2] and hma3>hma0[2] and hma2>hma0[2] and hma1>hma0[2]
aqua
else
if hma8<hma0[2] and hma7<hma0[2] and hma6<hma0[2] and hma5<hma0[2]
and hma4<hma0[2] and hma3<hma0[2] and hma2<hma0[2] and hma1<hma0[2]
maroon
else
plot_color0[1]
我有一个孔雀鱼策略,应该输入多头(孔雀鱼在特定条件下变成绿色)或空头(孔雀鱼在特定条件下变成红色)。为了确定松树脚本中的颜色,我使用了 if/else。问题是什么?当满足两个条件中的 none 时(比如说灰色),我得到第三种颜色,例如,我得到 red1=>grey=>red2 我的策略发送关闭信号red2 发生时的前一笔交易,并以相同的方向打开新的一笔交易。在我的策略中,灰色不是 entering/exiting 位置的信号,所以我想让当前 'grey' 的颜色与前一段的颜色相同,直到满足完全相反的条件。我尝试了 else na,但那些中间条件仍然给我错误的信号,我也尝试将 plotcolor=plotcolor[1] 放在 'else' 中,但这种类型的命令不能放在 pine 脚本中。谁能帮我解决这个问题?
plot_color0 = if hma8>hma0[2] and hma7>hma0[2] and hma6>hma0[2] and hma5>hma0[2] and hma4>hma0[2] and hma3>hma0[2] and hma2>hma0[2] and hma1>hma0[2]
aqua
else
if hma8<hma0[2] and hma7<hma0[2] and hma6<hma0[2] and hma5<hma0[2]
and hma4<hma0[2] and hma3<hma0[2] and hma2<hma0[2] and hma1<hma0[2]
maroon
else
gray
longCondition = (plot_color0 != plot_color0[1]) and (plot_color0 == aqua) shortCondition = (plot_color0 != plot_color0[1]) and (plot_color0 == maroon)
基本上问题发生在 tradingview 时。com/x/AnFOTdEa 颜色变成蓝色(长信号让我命令关闭之前的头寸并打开新的)之后变成灰色然后再次变成蓝色,我再次收到长信号(关闭我之前的多头头寸并再次打开它)。我想弄清楚的是如何设置警报,如果先前的交易信号方向与先前信号的方向相同,则该警报不会在灰色之后触发,或者以这种方式删除此 'else gray',颜色只会改变如果满足相反的方向条件
如果我把 plot0 != gray 放在条件警报中,显然根本不会触发,我不能排除 'else gray'
最后,除了上面提到的 longCondition 和 shortCondition 之外,我只想在之前的触发方向相反时触发警报
试试这种形式的条件,灰色只会保留在前几根柱子上。
plot_color0 = gray
plot_color0 := if hma8>hma0[2] and hma7>hma0[2] and hma6>hma0[2] and hma5>hma0[2] and hma4>hma0[2] and hma3>hma0[2] and hma2>hma0[2] and hma1>hma0[2]
aqua
else
if hma8<hma0[2] and hma7<hma0[2] and hma6<hma0[2] and hma5<hma0[2]
and hma4<hma0[2] and hma3<hma0[2] and hma2<hma0[2] and hma1<hma0[2]
maroon
else
plot_color0[1]