首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果价格高于/低于价格,则递归删除行。

如果价格高于/低于价格,则递归删除行。
EN

Stack Overflow用户
提问于 2020-08-12 01:58:59
回答 1查看 688关注 0票数 0

概述

  • 我创建了一个识别分形的脚本
  • 如果识别出分形,则创建一条线并将其扩展到右边。
  • 如果价格高于/低于该行的y1值,则删除该行

问题-不一致行为/错误

  • 每日时间框架:工作示例图的FX:CADJPY脚本作品
  • Tradingview说,“太多的图纸,不能删除最古老的”,如果我移动到H4的时间框架上相同的仪器:error1图片
  • Tradingview说“内部服务器学习错误”,如果我在任何时间框架内打开FX:EURAUD:error2图片

任何帮助都将不胜感激。它有我的头melted..thanks。

代码语言:javascript
复制
//@version=4
study("FRACTAL_LINES", shorttitle="FL", overlay=true, precision=0, max_bars_back=5000)
//////////////////////FRACTALS/////////////////////////////////
header_fractals         = input(false, title = "====== Fractal Settings ======")
display_fractals        = input(false, title="Display Fractal triangles")
fractal_join_line       = input(true, title='Display Fractal lines')
extend                  = input(true, title='Extend fractal lines to current bar if they remain uncrossed')

aggressive = false
price = hl2

// fractal calculation
n = 2
header_fractals4 = input(false, title = "========================")

// Identify FRACTAL TOPS
isBWFractalBullish(mode) => ret = mode == 1 ? ((high[n+2] < high[n]) and (high[n+1] < high[n]) and (high[n-1] < high[n]) 
 and (high[n-2] < high[n])) or ((high[n+3] < high[n]) and (high[n+2] < high[n]) 
 and (high[n+1] == high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n])) 
 or ((high[n+4] < high[n]) and (high[n+3] < high[n]) and (high[n+2] == high[n]) 
 and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n])) 
 or ((high[n+5] < high[n]) and (high[n+4] < high[n]) and (high[n+3] == high[n]) 
 and (high[n+2] == high[n]) and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n])) 
 or ((high[n+6] < high[n]) and (high[n+5] < high[n]) and (high[n+4] == high[n]) 
 and (high[n+3] <= high[n]) and (high[n+2] == high[n]) and (high[n+1] <= high[n]) 
 and (high[n-1] < high[n]) and (high[n-2] < high[n])) : false
 
// Identify FRACTAL BOTTOMS
isBWFractalBearish(mode) => ret = mode == -1 ? ((low[n+2] > low[n]) and (low[n+1] > low[n]) and (low[n-1] > low[n]) 
 and (low[n-2] > low[n]))or ((low[n+3] > low[n]) and (low[n+2] > low[n]) and (low[n+1] == low[n]) 
 and (low[n-1] > low[n]) and (low[n-2] > low[n])) or ((low[n+4] > low[n]) and (low[n+3] > low[n]) 
 and (low[n+2] == low[n]) and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) 
 or ((low[n+5] > low[n]) and (low[n+4] > low[n]) and (low[n+3] == low[n]) and (low[n+2] == low[n]) 
 and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) or ((low[n+6] > low[n]) 
 and (low[n+5] > low[n]) and (low[n+4] == low[n]) and (low[n+3] >= low[n]) and (low[n+2] == low[n]) 
 and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) : false
 
filteredtopf = isBWFractalBullish(1)
filteredbotf = isBWFractalBearish(-1)

plotshape(filteredtopf and display_fractals, title="Up-Fractal", style=shape.triangleup, location=location.abovebar, offset=-2, color=color.green, transp=0)
plotshape(filteredbotf and display_fractals, title="Down-Fractal", style=shape.triangledown, location=location.belowbar, offset=-2, color=color.red, transp=0)

//// FRACTAL TOPS AND BOTTOMS Plots //////
plot(fractal_join_line ? valuewhen(filteredtopf, high[2], 0) : na, title="Fractal Tops",style=plot.style_cross, linewidth=1, offset=-2, color=#b71c1c, transp=0) 
plot(fractal_join_line ? valuewhen(filteredbotf, low[2], 0) : na, title="Fractal Bottoms",style=plot.style_cross, linewidth=1, offset=-2, color=#1b5e20, transp=0) 

var line fractal_top_line = na
var line fractal_bottom_line = na

//// Draw fractal lines if extend option is TRUE
if extend

    if filteredtopf
        fractal_top_line := line.new(x1=bar_index[2], y1=valuewhen(filteredtopf, high[2], 0), x2=bar_index, y2=valuewhen(filteredtopf, high[2], 0), color=color.red)
        line.set_extend(fractal_top_line, extend.right)
       
    if filteredbotf
        fractal_bottom_line := line.new(x1=bar_index[2], y1=valuewhen(filteredbotf, low[2], 0), x2=bar_index, y2=valuewhen(filteredbotf, low[2], 0), color=color.green)
        line.set_extend(fractal_bottom_line, extend.right)
 
//////////////////////////////////////////////
//// **HERE'S WHERE I RUN INTO TROUBLE** ////
////////////////////////////////////////////

//// Delete fractal lines if price crosses them
    for i=0 to bar_index
        if (barssince(high > line.get_y1(fractal_top_line[i]))) < (bar_index - line.get_x1(fractal_top_line[i]))
            line.delete(fractal_top_line[i]) 
        
        if (barssince(low < line.get_y1(fractal_bottom_line[i]))) < (bar_index - line.get_x1(fractal_bottom_line[i]))
            line.delete(fractal_bottom_line[i])
EN

回答 1

Stack Overflow用户

发布于 2020-08-13 11:30:44

这显示了理论上应该工作的代码,但这并不是因为在过去的历史中如何处理绘图is的检查存在问题。修复计划在最高优先级的任务列表中,但还没有ETA。

Afaik,目前除了创建单独的变量以包含您正在绘制的所有行的ids外,没有其他方法可以可靠地实现您想要的结果,这将是一种痛苦。

代码语言:javascript
复制
//@version=4
LOOKBACK = 1000
study("FRACTAL_LINES", shorttitle="FL2", overlay=true, precision=0, max_bars_back=LOOKBACK)
//////////////////////FRACTALS/////////////////////////////////
header_fractals         = input(false, title = "====== Fractal Settings ======")
display_fractals        = input(false, title="Display Fractal triangles")
fractal_join_line       = input(true, title='Display Fractal lines')
extend                  = input(true, title='Extend fractal lines to current bar if they remain uncrossed')

aggressive = false
price = hl2

// fractal calculation
n = 2
header_fractals4 = input(false, title = "========================")

// Identify FRACTAL TOPS
isBWFractalBullish(mode) => ret = mode == 1 ? ((high[n+2] < high[n]) and (high[n+1] < high[n]) and (high[n-1] < high[n]) 
 and (high[n-2] < high[n])) or ((high[n+3] < high[n]) and (high[n+2] < high[n]) 
 and (high[n+1] == high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n])) 
 or ((high[n+4] < high[n]) and (high[n+3] < high[n]) and (high[n+2] == high[n]) 
 and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n])) 
 or ((high[n+5] < high[n]) and (high[n+4] < high[n]) and (high[n+3] == high[n]) 
 and (high[n+2] == high[n]) and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n])) 
 or ((high[n+6] < high[n]) and (high[n+5] < high[n]) and (high[n+4] == high[n]) 
 and (high[n+3] <= high[n]) and (high[n+2] == high[n]) and (high[n+1] <= high[n]) 
 and (high[n-1] < high[n]) and (high[n-2] < high[n])) : false
 
// Identify FRACTAL BOTTOMS
isBWFractalBearish(mode) => ret = mode == -1 ? ((low[n+2] > low[n]) and (low[n+1] > low[n]) and (low[n-1] > low[n]) 
 and (low[n-2] > low[n]))or ((low[n+3] > low[n]) and (low[n+2] > low[n]) and (low[n+1] == low[n]) 
 and (low[n-1] > low[n]) and (low[n-2] > low[n])) or ((low[n+4] > low[n]) and (low[n+3] > low[n]) 
 and (low[n+2] == low[n]) and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) 
 or ((low[n+5] > low[n]) and (low[n+4] > low[n]) and (low[n+3] == low[n]) and (low[n+2] == low[n]) 
 and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) or ((low[n+6] > low[n]) 
 and (low[n+5] > low[n]) and (low[n+4] == low[n]) and (low[n+3] >= low[n]) and (low[n+2] == low[n]) 
 and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) : false
 
filteredtopf = isBWFractalBullish(1)
filteredbotf = isBWFractalBearish(-1)

plotshape(filteredtopf and display_fractals, title="Up-Fractal", style=shape.triangleup, location=location.abovebar, offset=-2, color=color.green, transp=0)
plotshape(filteredbotf and display_fractals, title="Down-Fractal", style=shape.triangledown, location=location.belowbar, offset=-2, color=color.red, transp=0)

//// FRACTAL TOPS AND BOTTOMS Plots //////
plot(fractal_join_line ? valuewhen(filteredtopf, high[2], 0) : na, title="Fractal Tops",style=plot.style_cross, linewidth=1, offset=-2, color=#b71c1c, transp=0) 
plot(fractal_join_line ? valuewhen(filteredbotf, low[2], 0) : na, title="Fractal Bottoms",style=plot.style_cross, linewidth=1, offset=-2, color=#1b5e20, transp=0) 


//// Draw fractal lines if extend option is TRUE
line fractal_top_line    = na
line fractal_bottom_line = na
int fractal_top_bar      = na
int fractal_bottom_bar   = na
yTop = valuewhen(filteredtopf, high[2], 0)
yBot = valuewhen(filteredbotf, low[2], 0)
if extend

    if filteredtopf
        fractal_top_line := line.new(x1=bar_index[2], y1=yTop, x2=bar_index, y2=yTop, color=color.red)
        line.set_extend(fractal_top_line, extend.right)
    if filteredbotf
        fractal_bottom_line := line.new(x1=bar_index[2], y1=yBot, x2=bar_index, y2=yBot, color=color.green)
        line.set_extend(fractal_bottom_line, extend.right)

    // Delete fractal lines if price crosses them
    // float linePrice = na
    // lineCrossed = false
    // for i=0 to LOOKBACK
    //     if not na(fractal_top_bar[i])
    //         linePrice := line.get_price(fractal_top_line[i], bar_index)
    //         lineCrossed := (close[i+1] < linePrice and close[i] > linePrice) or (close[i+1] > linePrice and close[i] < linePrice)
    //         if lineCrossed
    //             line.delete(fractal_top_line[i])
        
    //     if not na(fractal_bottom_bar[i])
    //         linePrice := line.get_price(fractal_bottom_line[i], bar_index)
    //         lineCrossed := (close[i+1] < linePrice and close[i] > linePrice) or (close[i+1] > linePrice and close[i] < linePrice)
    //         if lineCrossed
    //             line.delete(fractal_bottom_line[i]) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63368668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档