本文介绍了更新值或创建新系列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
此脚本是根据指定条件生成累积音量的波。在最后一根柱子上,有些情况下,条件不能决定哪个浪是向上形成的,还是向下形成的。这是一个事实,我们同意等待下一个栅栏的形成。在新的棒子决定了这波浪的方向之后,应该把之前的棒子加进去,作为这波新浪的开始。假设形成波的条件的满足将存储在一个系列中,并在转移到另一个系列时进行修正。是否可以修复编写的代码或通过其他方法实现,例如,通过数组或偏移量?
我修改了脚本以使用数组。关于算法还有几点澄清。构建了&q;-1&q;、&0&q;和&q;1&q;的时间序列。
-1&q;-下降浪&Quot;0-中性波向上波动(&Q;1)。
基于该系列,将创建一个数组,其中所有的&0&q;值都将替换为右侧的第一个非零值。这应该行得通!但由于某些原因,它不起作用。
study("Weis Wave Volume VSA", shorttitle="WWV m1_v4 arr")
var wave = array.new_int(0)
//First main condition for up / down wave formation
CondUp1 = close[2] < close[0] and close[1] < close[0] ? 1 : 0
CondDn1 = close[2] > close[0] and close[1] > close[0] ? -1 : 0
//Second additional condition for up / down wave formation
CondUp2 = open[1] <= close[0] and close[1] < close[0] ? 2 : 0
CondDn2 = open[1] >= close[0] and close[1] > close[0] ? -2 : 0
//Time series for a wave
wavetemp = 0
if CondUp1 != 0 and CondDn1 == 0
wavetemp := 1
if CondUp1 == 0 and CondDn1 != 0
wavetemp := -1
if CondUp1 == 0 and CondDn1 == 0 and CondUp2 != 0 and CondDn2 == 0
wavetemp := 1
if CondUp1 == 0 and CondDn1 == 0 and CondUp2 == 0 and CondDn2 != 0
wavetemp := -1
//Array for wave
begin_index = int(na)
if nz(wavetemp[1]) == 0 and nz(wavetemp[0]) != 0
begin_index := max(array.lastindexof(wave, 1), array.lastindexof(wave,-1))
array.push(wave, wavetemp[0])
for i = begin_index + 1 to bar_index - 1
array.set(wave, i, wavetemp[0]) // New value for historic elements
else
array.push(wave, wavetemp[0])
vol = float(na)
vol := bar_index == 0 ? nz(volume) : ( array.get(wave, bar_index - 1) == array.get(wave, bar_index) ? nz(vol[1]) + nz(volume) : nz(volume) )
up = float(na)
up := array.get(wave, bar_index) == 1 ? vol : na
pd = float(na)
pd := array.get(wave, bar_index) == 0 ? vol : na
dn = float(na)
dn := array.get(wave, bar_index) == -1 ? vol : na
plot(up, style=plot.style_columns, color=color.green)
plot(pd, style=plot.style_columns, color=color.black)
plot(dn, style=plot.style_columns, color=color.red)
[更新]
问题的替代描述。
存在创建一系列
wavetemp
值的条件。从系列
wavetemp
按照以下规则新建一个系列wave
:
A.如果序列wavetemp
的值等于";-1";或";1";,则为其分配新序列wave
;
B.如果序列wavetemp
的值是&0&q;,则等待该值的序列等于&q;-1或&q;1&q;,新序列wave
的所有缺失元素都将在第一个非零值上发出
推荐答案
原来是通过使用Offset制作工作脚本。从编程的角度来看,这很糟糕,但我没有其他想法。我的想法是,最后的条形图对于每个单独的条形图都不同。
plot(wave_vol, style=plot.style_columns, editable=false, color=wave_col, offset = -3)
plot(wave_vol_end2, style=plot.style_columns, editable=false, color=wave_col_end2, offset = -2, show_last = 1)
plot(wave_vol_end1, style=plot.style_columns, editable=false, color=wave_col_end1, offset = -1, show_last = 1)
plot(wave_vol_end0, style=plot.style_columns, editable=false, color=wave_col_end0, offset = 0, show_last = 1)
这篇关于更新值或创建新系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!