我寻求帮助。 我写了一个指标,但我陷入困境 - 我找不到解决方案。
所以 - 历史中有一些信号,会自动从中绘制一条水平线 - 创建一个数组。 我相应地调整显示的行数。
因此,显示的延续线与蜡烛有交叉点 - 即蜡烛收盘价高于该线。
我需要移除蜡烛穿过的线,或者改变颜色......
相应地,当出现新信号时,就会出现新线路...
关闭蜡烛线上方的蜡烛后,严格发生移除或颜色变化...
我尝试了很多选项 - 但没有一个能正常工作......
我附上了一个我无法超越的代码...
谢谢你...
//@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) `
您应该使用数组来存储您的线条。
然后,在每次关闭时,循环遍历该数组中的所有行。
如果该线的 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