如何在Pine Script中有条件地删除行

ughpines

我正在尝试创建一个TradingView研究,以绘制一条从当前横线上的下横线到前一横线上的横下线的线,其中前一横线小于返回的最大设定横线数。

我只想绘制具有负斜率的线(即,以前的下划线发生在较高的值),而且我也不想多条线具有相同的起点(没有重叠的线)。

我能够正确地绘制线条,但是我不知道重叠的线条(起点相同)如何删除。

当绘制一条将与旧线重叠的新线时,如何获得对旧线的引用以便可以将其删除?

在pine脚本中似乎无法执行以下操作:

  • 迭代行系列中的先前值以检查其x,y值
  • 通过类似bar_index的索引访问线系列
  • 访问前一行的值而不创建新行
//@version=4
study(title='MACD trend')
src = input(close)
fast = input(12)
slow = input(26)
smooth = input(9)
numBarsBack = input(50)

fast_ma = wma(src, fast)
slow_ma = wma(src, slow)
macd = fast_ma-slow_ma
signal = wma(macd, smooth)
hist = macd - signal

if (crossunder(macd, signal))
// cross under happened on previous bar
    for i = 1 to numBarsBack
    // inspect previous bars up to 'numBarsBack'
        if (crossunder(macd,signal)[i])
            if (macd - macd[i] < 0)
            // located a previous cross under with a higher macd value
                l = line.new(bar_index[1], macd[1], bar_index[i+1], macd[i+1], width=1, color=color.red)
                // drew line from previous cross under to current cross under, 
                // offset x's by 1 bar since crossunder returns true based on previous bar's cross under
                for k = 1 to i
                // inspect previous bars up to the starting point of drawn line
                    if (crossunder(macd, signal)[k] and macd > macd[k])
                    // if the previous cross under value is less than the current one
                        line.delete(l[1])
                        // not sure what the 1 here indexes???

plot(title='MACD', series=macd,transp=0,linewidth=2, color=color.yellow)
plot(title='SIGNAL', series=signal,transp=0,linewidth=2, color=color.red)
松树编码器

查看代码中的注释。使线条更粗,以便于查看和在脚本末尾添加调试图。

基本思想是var在初始化l变量使用非常方便的关键字传播先前创建的行的行ID 这样,在创建新行之前,我们获取了y2用于创建前一行的行,因此,如果该行y2与我们要创建的行匹配(因此是从同一峰绘制的),则可以删除该行

穿越峰检测使用内置的Pine而不是for循环。这样,代码将运行得更快。

//@version=4
study(title='MACD trend2')
src = input(close)
fast = input(12)
slow = input(26)
smooth = input(9)
numBarsBack = input(50)

fast_ma = wma(src, fast)
slow_ma = wma(src, slow)
macd = fast_ma-slow_ma
signal = wma(macd, smooth)
hist = macd - signal

xDn = crossunder(macd, signal)
// Get macd at at highest xDn in last numBarsBack bars. If no Xdn found, set value to -10e10.
highestXDnMacd = highest(xDn ? macd : -10e10, numBarsBack)
// Get offset to that point.
highestXDnOffset = - highestbars(xDn ? macd : -10e10, numBarsBack)

// Detect if previous xDn meets all criteria.
lastXDnWasHigher = xDn and macd < highestXDnMacd
// Make l persistent, so that it always contains the line id of the last line created.
var line l = na
if lastXDnWasHigher
    // Retrieve y2 used to draw previous line.
    if line.get_y2(l) == highestXDnMacd
        // Last line drawn used same y2 as the one we are about to use; delete it.
        // No more than one line back can have same peak since previous ones have already been deleted.
        line.delete(l)
    // The line id we assign to l here will persist through future bars,
    // which is what will allow us to delete the corresponding line using the line.delete() above, if needed.
    l := line.new(bar_index[1], macd[1], bar_index - highestXDnOffset, macd[highestXDnOffset], width=3, color=color.black)

plot(title='MACD', series=macd,transp=0,linewidth=2, color=color.yellow)
plot(title='SIGNAL', series=signal,transp=0,linewidth=2, color=color.red)

// Debugging.
plot(highestXDnMacd != -10e10 ? highestXDnMacd : na, "highestXDnMacd", color.silver, 2, plot.style_circles)
plotchar(highestXDnOffset, "highestXDnOffset", "", location.top)    // For Data Window display.
bgcolor(lastXDnWasHigher ? color.green : xDn ? color.silver : na, 60)

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何有条件地在熊猫中删除行

来自分类Dev

如何在Aurelia repeat.for中有条件地添加或删除CSS类?

来自分类Dev

如何在Django Admin 1.5中有条件地否决删除尝试?

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

如何在Excel中有条件地匹配

来自分类Dev

如何在Excel中有条件地VLOOKUP?

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

如何在一行中有条件地设置变量值?

来自分类Dev

如何在python中有条件地选择上一行的值?

来自分类Dev

如何在一行中有条件地设置变量值?

来自分类Dev

如何在HTML / Javascript中有条件地隐藏表格行?

来自分类Dev

Python:如何从python的数据框中的列中有条件地删除字母?

来自分类Dev

如何在useEffect中更新状态的条件组件中有条件地渲染?

来自分类Dev

如何有条件地删除生成的javascript文件?

来自分类Dev

如何在R中的数据框中有条件地选择列

来自分类Dev

如何在AngularJS模板中有条件地显示跨度?

来自分类Dev

如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

来自分类Dev

如何在Swift中有条件地为tvOS编译

来自分类Dev

如何在angularJS指令中有条件地应用属性?

来自分类Dev

如何在React Native Component中有条件地包含图像?

来自分类Dev

如何在Spring Data REST投影中有条件地公开数据?

来自分类Dev

如何在asp.net MVC视图中有条件地设置模型?

来自分类Dev

如何在熊猫中有条件地从不同的列中进行选择

来自分类Dev

如何在Vim中有条件地编辑文件

来自分类Dev

如何在AngularJS中有条件地应用指令?

来自分类Dev

如何在AngularJS中有条件地设置所选属性

来自分类Dev

如何在Oracle Merge Update中有条件地设置X = Y?

来自分类Dev

如何在Ionics中有条件地隐藏和显示选项卡?

来自分类Dev

如何在函数链接中有条件地调用函数?

Related 相关文章

  1. 1

    如何有条件地在熊猫中删除行

  2. 2

    如何在Aurelia repeat.for中有条件地添加或删除CSS类?

  3. 3

    如何在Django Admin 1.5中有条件地否决删除尝试?

  4. 4

    如何在Angular中有条件地渲染?

  5. 5

    如何在Excel中有条件地匹配

  6. 6

    如何在Excel中有条件地VLOOKUP?

  7. 7

    如何在有条件的js中有条件地应用标题

  8. 8

    如何在一行中有条件地设置变量值?

  9. 9

    如何在python中有条件地选择上一行的值?

  10. 10

    如何在一行中有条件地设置变量值?

  11. 11

    如何在HTML / Javascript中有条件地隐藏表格行?

  12. 12

    Python:如何从python的数据框中的列中有条件地删除字母?

  13. 13

    如何在useEffect中更新状态的条件组件中有条件地渲染?

  14. 14

    如何有条件地删除生成的javascript文件?

  15. 15

    如何在R中的数据框中有条件地选择列

  16. 16

    如何在AngularJS模板中有条件地显示跨度?

  17. 17

    如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

  18. 18

    如何在Swift中有条件地为tvOS编译

  19. 19

    如何在angularJS指令中有条件地应用属性?

  20. 20

    如何在React Native Component中有条件地包含图像?

  21. 21

    如何在Spring Data REST投影中有条件地公开数据?

  22. 22

    如何在asp.net MVC视图中有条件地设置模型?

  23. 23

    如何在熊猫中有条件地从不同的列中进行选择

  24. 24

    如何在Vim中有条件地编辑文件

  25. 25

    如何在AngularJS中有条件地应用指令?

  26. 26

    如何在AngularJS中有条件地设置所选属性

  27. 27

    如何在Oracle Merge Update中有条件地设置X = Y?

  28. 28

    如何在Ionics中有条件地隐藏和显示选项卡?

  29. 29

    如何在函数链接中有条件地调用函数?

热门标签

归档