脚本帮助,编写 Weis Wave
script help, coding a Weis Wave
我正在分段计算 VWAP,每次收盘价与 运行 VWAP 的差异大于偏差时,它都会翻转趋势并开始新的 VWAP 计数。交易量应在每个趋势内汇总。
到目前为止,成交量处于上升趋势,但不处于下降趋势。此外,当从向下切换到向上时,上升趋势量 "steals" 最后一个下降趋势量并将其添加到自己的趋势量中。这一切都非常令人困惑,因为逻辑非常简单......
这是我的代码:
//@version=3
study("My Script")
deviation = input(title = "Deviation %", type=float, defval = 0.1)
running_vol = 0.0
running_sum = 0.0
Tup = true
Tdown = false
running_vol := nz(volume[1]) == 0 ? 0 : running_vol[1] + volume
running_sum := nz(volume[1]) == 0 ? 0 : running_sum[1] + (close*volume)
volwap = (running_sum/running_vol)
// flip to downtrend
if (Tup == true) and (Tdown == false) and (close < close[1]) and ((1 - (close/volwap)) > (deviation/100.0))
// reset running_vol and sum to current volume and sum since it's a new trend
running_vol := volume
running_sum := (close*volume)
// flip the trend switches
Tup := false
Tdown := true
// flip to uptrend
if (Tup == false) and (Tdown == true) and (close > close[1]) and (((close/volwap) - 1) > (deviation/100.0))
running_vol := volume
running_sum := (close*volume)
Tup := true
Tdown := false
up = Tup == true ? running_vol : 0
down = Tdown == true ? running_vol : 0
plot(up, style=histogram, color=green, linewidth=3)
plot(down, style=histogram, color=red, linewidth=3)
原脚本中Tup和Tdown的自引用有问题。您必须参考过去的 Tup 和 Tdown,否则每次扫描脚本时都会重新引入用户定义的 Tup=true 和 tdown =false。由于 Tup 在每次扫描时重新启动为真,您一次只能有一个熊市成交量条。我还看到了这个新颖有趣的波浪定义所需的转折点策略存在问题。有些玩可能会找到比这个剧本中的情节更让你满意的转折点。我曾经尝试过对 volwap 和 close[1] 相对于 close[0] 的使用保持真实,但我不确定我是否按照您真正想要的方式捕获了它。我希望这能为您提供一个改进波浪定义的起点。这是我对您的代码的 pine 脚本再现。杰伊干杯:
//@version=3
// my impression of the Weis VWAP code by Moreina by Jayy
study("Moreina Weis vwap")
deviation = input(title = "Deviation %", type=float, defval = 0.00000000)
running_vol = 0.0
running_sum = 0.0
Tup = 0
count=1
count:= nz(count[1])+1
running_vol := Tup[1]!=Tup[2] and nz(running_vol[1])==nz(volume[1])? nz(running_vol[1]) + volume: (Tup[1]==1 and Tup[2]==1) or (Tup[1]==-1 and Tup[2]==-1)? nz(running_vol[1]) + volume:na
running_sum := Tup[1]!=Tup[2] and nz(running_sum[1])==nz(close[1]*volume[1])? nz(running_sum[1]) + close*volume: (Tup[1]==1 and Tup[2]==1) or (Tup[1]==-1 and Tup[2]==-1)? nz(running_sum[1]) +close* volume:na
volwap = (running_sum/running_vol)
// flip to downtrend
if ((Tup[1] == 1) or (Tup[1] == 0)) and not ((close > close[1]) or (close/volwap)>1) //
// reset running_vol and sum to current volume and sum since it's a new trend
running_vol := volume
running_sum := (close*volume)
// flip the trend switches
Tup := -1
// flip to uptrend
if ((Tup[1] == -1) or (Tup[1] == 0)) and not ((close < close[1]) or ((close/volwap)) <1) //and (close/volwap) > 1)
running_vol := volume
running_sum := (close*volume)
Tup := 1
Tup:= nz(Tup[0])==1 and count>1?Tup[0]:nz(Tup[0])==-1 and count>1?Tup[0]: count>1 and Tup[0]==0?nz(Tup[1]):na//Tup
up = Tup == 1 ? running_vol : na
down = Tup == -1 ? running_vol : na
plot(up, style=histogram, color=green, linewidth=3)
plot(down, style=histogram, color=red, linewidth=3)
我正在分段计算 VWAP,每次收盘价与 运行 VWAP 的差异大于偏差时,它都会翻转趋势并开始新的 VWAP 计数。交易量应在每个趋势内汇总。
到目前为止,成交量处于上升趋势,但不处于下降趋势。此外,当从向下切换到向上时,上升趋势量 "steals" 最后一个下降趋势量并将其添加到自己的趋势量中。这一切都非常令人困惑,因为逻辑非常简单......
这是我的代码:
//@version=3
study("My Script")
deviation = input(title = "Deviation %", type=float, defval = 0.1)
running_vol = 0.0
running_sum = 0.0
Tup = true
Tdown = false
running_vol := nz(volume[1]) == 0 ? 0 : running_vol[1] + volume
running_sum := nz(volume[1]) == 0 ? 0 : running_sum[1] + (close*volume)
volwap = (running_sum/running_vol)
// flip to downtrend
if (Tup == true) and (Tdown == false) and (close < close[1]) and ((1 - (close/volwap)) > (deviation/100.0))
// reset running_vol and sum to current volume and sum since it's a new trend
running_vol := volume
running_sum := (close*volume)
// flip the trend switches
Tup := false
Tdown := true
// flip to uptrend
if (Tup == false) and (Tdown == true) and (close > close[1]) and (((close/volwap) - 1) > (deviation/100.0))
running_vol := volume
running_sum := (close*volume)
Tup := true
Tdown := false
up = Tup == true ? running_vol : 0
down = Tdown == true ? running_vol : 0
plot(up, style=histogram, color=green, linewidth=3)
plot(down, style=histogram, color=red, linewidth=3)
原脚本中Tup和Tdown的自引用有问题。您必须参考过去的 Tup 和 Tdown,否则每次扫描脚本时都会重新引入用户定义的 Tup=true 和 tdown =false。由于 Tup 在每次扫描时重新启动为真,您一次只能有一个熊市成交量条。我还看到了这个新颖有趣的波浪定义所需的转折点策略存在问题。有些玩可能会找到比这个剧本中的情节更让你满意的转折点。我曾经尝试过对 volwap 和 close[1] 相对于 close[0] 的使用保持真实,但我不确定我是否按照您真正想要的方式捕获了它。我希望这能为您提供一个改进波浪定义的起点。这是我对您的代码的 pine 脚本再现。杰伊干杯:
//@version=3
// my impression of the Weis VWAP code by Moreina by Jayy
study("Moreina Weis vwap")
deviation = input(title = "Deviation %", type=float, defval = 0.00000000)
running_vol = 0.0
running_sum = 0.0
Tup = 0
count=1
count:= nz(count[1])+1
running_vol := Tup[1]!=Tup[2] and nz(running_vol[1])==nz(volume[1])? nz(running_vol[1]) + volume: (Tup[1]==1 and Tup[2]==1) or (Tup[1]==-1 and Tup[2]==-1)? nz(running_vol[1]) + volume:na
running_sum := Tup[1]!=Tup[2] and nz(running_sum[1])==nz(close[1]*volume[1])? nz(running_sum[1]) + close*volume: (Tup[1]==1 and Tup[2]==1) or (Tup[1]==-1 and Tup[2]==-1)? nz(running_sum[1]) +close* volume:na
volwap = (running_sum/running_vol)
// flip to downtrend
if ((Tup[1] == 1) or (Tup[1] == 0)) and not ((close > close[1]) or (close/volwap)>1) //
// reset running_vol and sum to current volume and sum since it's a new trend
running_vol := volume
running_sum := (close*volume)
// flip the trend switches
Tup := -1
// flip to uptrend
if ((Tup[1] == -1) or (Tup[1] == 0)) and not ((close < close[1]) or ((close/volwap)) <1) //and (close/volwap) > 1)
running_vol := volume
running_sum := (close*volume)
Tup := 1
Tup:= nz(Tup[0])==1 and count>1?Tup[0]:nz(Tup[0])==-1 and count>1?Tup[0]: count>1 and Tup[0]==0?nz(Tup[1]):na//Tup
up = Tup == 1 ? running_vol : na
down = Tup == -1 ? running_vol : na
plot(up, style=histogram, color=green, linewidth=3)
plot(down, style=histogram, color=red, linewidth=3)