如何在关闭上方蜡烛后实现线移除

问题描述 投票:0回答:2

我寻求帮助。 我写了一个指标,但我陷入困境 - 我找不到解决方案。

所以 - 历史中有一些信号,会自动从中绘制一条水平线 - 创建一个数组。 我相应地调整显示的行数。

因此,显示的延续线与蜡烛有交叉点 - 即蜡烛收盘价高于该线。

我需要移除蜡烛穿过的线,或者改变颜色......

相应地,当出现新信号时,就会出现新线路...

关闭蜡烛线上方的蜡烛后,严格发生移除或颜色变化...

我尝试了很多选项 - 但没有一个能正常工作......

我附上了一个我无法超越的代码...

谢谢你...

//@version=5
indicator("NHNHNHNH", overlay = true)
Kol_Linii = input(2, "Количество линий")

Signal = open[3] < close[3] and open[2] < close[2] and open[1] < close[1] and close < open and high[1] > high and high[1] > close[1] and high > open)

X_for_LINIA = ta.valuewhen(Signal, bar_index, 0)
Y_for_LINIA = ta.valuewhen(Signal, high, 0)

var b = array.new_float()
array.push(b, Y_for_LINIA)

peresechenie = ta.crossover(close, Y_for_LINIA)
var p = array.new_bool()
array.push(p, peresechenie)

if Signal
    LINIA = line.new(X_for_LINIA, Y_for_LINIA,X_for_LINIA+1,Y_for_LINIA, extend = extend.right, color = color.fuchsia, width = 1)
    var a = array.new_line()
    array.push(a, LINIA)
    
    var line_price = array.new_float()
    array.push(line_price, line.get_price(LINIA, bar_index))

     
    if array.size(a) > Kol_Linii
        ln = array.shift(a)
        line.delete(ln) `

pine-script line after-effects del
2个回答
0
投票

您应该使用数组来存储您的线条。
然后,在每次关闭时,循环遍历该数组中的所有行。
如果该线的 Y 值低于实际收盘价(= 蜡烛收盘价位于该线之上),则删除该线并删除相应的数组行。 我测试了这段代码,效果很好:

//@version=5
indicator("NHNHNHNH", overlay = true)
Kol_Linii = input(2, "Количество линий")

Signal = open[3] < close[3] and open[2] < close[2] and open[1] < close[1] and close < open and high[1] > high and high[1] > close[1] and high > open

X_for_LINIA = ta.valuewhen(Signal, bar_index, 0)
Y_for_LINIA = ta.valuewhen(Signal, high, 0)

var b = array.new_float()
array.push(b, Y_for_LINIA)

peresechenie = ta.crossover(close, Y_for_LINIA)
var p = array.new_bool()
array.push(p, peresechenie)

var ArrayLine = array.new_line()

if Signal
    LINIA = line.new(X_for_LINIA, Y_for_LINIA,X_for_LINIA+1,Y_for_LINIA, extend = extend.right, color = color.fuchsia, width = 1)
    array.push(ArrayLine, LINIA)
    label.new(bar_index, close, str.tostring(array.size(ArrayLine))+" : " + str.tostring(line.get_y1(LINIA)), color= color.white, yloc=yloc.abovebar)
    
if array.size(ArrayLine) > 0
    NumberOfLine = array.size(ArrayLine) 
    Complete = false
    Index = NumberOfLine - 1
    while not(Complete)
        Line = array.get(ArrayLine, Index)
        if line.get_y1(Line) < close
            line.delete(Line)
            array.remove(ArrayLine, Index)
        Index := Index - 1
        if Index < 0
            Complete := true

我放置了一个带有 ArrayLine 数组大小和 Y 线值的标签用于测试目的,您可以将其删除:


0
投票

这并不意味着我们当中还有如此乐于助人的人..恭喜你..

那么,有一位乐于助人的朋友也可以帮助我吗?

指示器;它会在您选择的时间间隔的最大/最小处绘制一条线。直到下一个时期到来...

当蜡烛的最高点触及这条线时,我希望这条线不再出现。

你能帮我吗?enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.