更新值或创建新系列 [英] Updating values or creating a new series

查看:16
本文介绍了更新值或创建新系列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此脚本是根据指定条件生成累积音量的波。 在最后一根柱子上,有些情况下,条件不能决定哪个浪是向上形成的,还是向下形成的。这是一个事实,我们同意等待下一个栅栏的形成。 在新的棒子决定了这波浪的方向之后,应该把之前的棒子加进去,作为这波新浪的开始。 假设形成波的条件的满足将存储在一个系列中,并在转移到另一个系列时进行修正。 是否可以修复编写的代码或通过其他方法实现,例如,通过数组或偏移量?

我修改了脚本以使用数组。 关于算法还有几点澄清。 构建了&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)

[更新]

问题的替代描述。

  1. 存在创建一系列wavetemp值的条件。

  2. 从系列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)

这篇关于更新值或创建新系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆