如何为条件的所有出现绘制从条件到当前收盘价的线
How to draw line from condition to current close for all occurences of the condition
condition = ta.barssince(ta.rsi(close, 14) > 20) == 1
var flag = false
if ta.ema(close, 50) > ta.ema(close, 200)
flag := true
var theLine = line.new(0, 0, 0, 0)
if flag
line.set_xy1(theLine, bar_index - ta.barssince(condition), ta.valuewhen(condition, close, 0))
line.set_xy2(theLine, bar_index, close)
上面的代码将绘制一条从最近一次出现的收盘价到当前收盘价的线。如何为当前收盘价的每一次条件绘制一条线?
编辑:(这是我要传达的内容的视觉表示。)
这里需要多行,所以我会用数组来完成。
基本上,跟踪最后 n 次出现并相应地更新数组。然后在每个柱上更新数组中的 xy2
行。
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vitruvius
//@version=5
indicator("My script", overlay=true, max_lines_count=500)
line_cnt = input.int(5)
var line_arr = array.new_line()
_ema = ta.ema(close, 50)
cond = ta.crossover(close, _ema)
len = array.size(line_arr)
if (cond)
id = line.new(bar_index, close, bar_index, close, color=color.yellow)
if (len < line_cnt)
array.push(line_arr, id)
else
l = array.get(line_arr, 0)
line.delete(l)
array.shift(line_arr)
array.push(line_arr, id)
if (len > 0)
for i=0 to len-1
l = array.get(line_arr, i)
line.set_xy2(l, bar_index, close)
plotshape(cond, size=size.small)
plot(_ema, "EMA", color.white, 2)
这里我画了一条线,从条件的最后五次出现的收盘价到当前收盘价。
如果您想对所有事件都这样做,请从等式中删除 line_cnt
。
Vitruvius 的一个很好的回答,但是,我喜欢最近添加的 for..in
结构并想演示它,希望这也有帮助!
PS:我还删除了多余的 flag,因为它在第一次出现后变为 true图表上的均线交叉并且没有变回来。
//@version=5
indicator("Lines to the current close", overlay = true)
condition = ta.barssince(ta.rsi(close, 14) > 20) == 1
var line[] lines = array.new<line>()
if condition
array.unshift(lines, line.new(bar_index, close, bar_index, close))
for line in lines
line.set_xy2(line, bar_index, close)
condition = ta.barssince(ta.rsi(close, 14) > 20) == 1
var flag = false
if ta.ema(close, 50) > ta.ema(close, 200)
flag := true
var theLine = line.new(0, 0, 0, 0)
if flag
line.set_xy1(theLine, bar_index - ta.barssince(condition), ta.valuewhen(condition, close, 0))
line.set_xy2(theLine, bar_index, close)
上面的代码将绘制一条从最近一次出现的收盘价到当前收盘价的线。如何为当前收盘价的每一次条件绘制一条线?
编辑:(这是我要传达的内容的视觉表示。)
这里需要多行,所以我会用数组来完成。
基本上,跟踪最后 n 次出现并相应地更新数组。然后在每个柱上更新数组中的 xy2
行。
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vitruvius
//@version=5
indicator("My script", overlay=true, max_lines_count=500)
line_cnt = input.int(5)
var line_arr = array.new_line()
_ema = ta.ema(close, 50)
cond = ta.crossover(close, _ema)
len = array.size(line_arr)
if (cond)
id = line.new(bar_index, close, bar_index, close, color=color.yellow)
if (len < line_cnt)
array.push(line_arr, id)
else
l = array.get(line_arr, 0)
line.delete(l)
array.shift(line_arr)
array.push(line_arr, id)
if (len > 0)
for i=0 to len-1
l = array.get(line_arr, i)
line.set_xy2(l, bar_index, close)
plotshape(cond, size=size.small)
plot(_ema, "EMA", color.white, 2)
这里我画了一条线,从条件的最后五次出现的收盘价到当前收盘价。
如果您想对所有事件都这样做,请从等式中删除 line_cnt
。
Vitruvius 的一个很好的回答,但是,我喜欢最近添加的 for..in
结构并想演示它,希望这也有帮助!
PS:我还删除了多余的 flag,因为它在第一次出现后变为 true图表上的均线交叉并且没有变回来。
//@version=5
indicator("Lines to the current close", overlay = true)
condition = ta.barssince(ta.rsi(close, 14) > 20) == 1
var line[] lines = array.new<line>()
if condition
array.unshift(lines, line.new(bar_index, close, bar_index, close))
for line in lines
line.set_xy2(line, bar_index, close)