松脚本-自定义会话突破问题 版本1 版本2

问题描述

//@version=4
study("custom Session breakout",overlay=true)
my_session = input("1145-1215",type=input.session,title='Custom Session')


// Determine if we are in a session
// ----------------------------------
in_session = time(timeframe.period,my_session)
is_new_session(res,sess) =>
    t = time(res,sess)
    na(t[1]) and not na(t) or t[1] < t

new_session = is_new_session("1400",my_session)

// Get the High/Low of the EMA for the session
highH = float(na)
lowH = float(na)

highH := new_session ? close : in_session ? max(high,highH[1]) : high
lowH := new_session ? close : in_session ? min(low,lowH[1]) : low

plot(highH,color=color.green,style=plot.style_circles,title='High')
plot(lowH,color=color.red,title='Low')

在我编写的代码上方(来自https://www.pinecoders.com/的帮助),但没有在我们的自定义会话上绘制突破行。任何帮助将不胜感激。

图片网址- https://prnt.sc/tzpiff

错误的蜡烛标记问题-https://prnt.sc/tzzwdj

使用Alertcondition更新了代码-下面的代码

//@version=4
study("custom Session breakout",overlay=true)
my_session = input("0945-1015",title='Custom Session')

is_new_session(res,sess)
    na(t[1]) and not na(t) or t[1] < t

f_tickFormat() =>
    _s = tostring(syminfo.mintick)
    _s := str.replace_all(_s,"25","00")
    _s := str.replace_all(_s,"5","0")
    _s := str.replace_all(_s,"1","0")

new_session  = is_new_session("1400",my_session)
var hiLine   = line.new(bar_index,high,bar_index,color = color.orange,width = 2,extend = extend.both)
var loLine   = line.new(bar_index,low,extend = extend.both)
var hiLabel  = label.new(bar_index,na,"",color = color(na),style = label.style_none,textcolor = color.silver)
var loLabel  = label.new(bar_index,textcolor = color.silver)
var float hi = na
var float lo = na
if new_session
    // Update hi and lo.
    hi := high
    lo := low
    // Update lines.
    line.set_xy1(  hiLine,bar_index - 1,hi)   
    line.set_xy2(  hiLine,hi)   
    line.set_xy1(  loLine,lo)   
    line.set_xy2(  loLine,lo)
    // Update labels.
    label.set_xy(  hiLabel,hi)
    label.set_text(hiLabel,tostring(hi,f_tickFormat()))
    label.set_xy(  loLabel,lo)
    label.set_text(loLabel,tostring(lo,f_tickFormat()))

// Crosses
xUp = crossover( close,hi)
xDn = crossunder(close,lo)

//Alert
alertcondition(xUp,title='Up Breakout',message='Up Breakout')
alertcondition(xDn,title='Down Breakout',message='Down Breakout')


// Mark session beginnings for debugging.
plotchar(new_session,"new_session","•",location.abovebar,size = size.tiny)
plotchar(xUp,"xUp","▲",location.belowbar,color.lime,size = size.tiny)
plotchar(xDn,"xDn","▼",color.fuchsia,size = size.tiny)

注意-我在pinescript中添加了警报条件,并在TradingView中设置了警报,但是警报未按时激活,即突破高/低。

解决方法

版本1

这将在上一个交易日的第一个柱线的高点和低点画线,并在其上显示价格。我们的想法是先绘制一条无用的线条和标签,然后在找到新的会话开始时对其进行调整。如果需要更改颜色,请在if语句之前的变量声明中更改颜色。

f_tickformat()一词用图表符号的刻度精度格式化价格的小数。

//@version=4
study("custom Session breakout",overlay=true)
my_session = input("1145-1215",type=input.session,title='Custom Session')

is_new_session(res,sess) =>
    t = time(res,sess)
    na(t[1]) and not na(t) or t[1] < t

f_tickFormat() =>
    _s = tostring(syminfo.mintick)
    _s := str.replace_all(_s,"25","00")
    _s := str.replace_all(_s,"5","0")
    _s := str.replace_all(_s,"1","0")

new_session = is_new_session("1400",my_session)
var hiLine  = line.new(bar_index,high,bar_index,color = color.orange,width = 2,extend = extend.both)
var loLine  = line.new(bar_index,low,extend = extend.both)
var hiLabel = label.new(bar_index,na,"",color = color(na),style = label.style_none,textcolor = color.silver)
var loLabel = label.new(bar_index,textcolor = color.silver)
if new_session
    // Update lines.
    line.set_xy1(  hiLine,bar_index - 1,high)   
    line.set_xy2(  hiLine,high)   
    line.set_xy1(  loLine,low)   
    line.set_xy2(  loLine,low)
    // Update labels.
    label.set_xy(  hiLabel,high)
    label.set_text(hiLabel,tostring(high,f_tickFormat()))
    label.set_xy(  loLabel,low)
    label.set_text(loLabel,tostring(low,f_tickFormat()))

// Mark session beginnings for debugging.
plotchar(new_session,"new_session","•",location.abovebar,size = size.tiny)

enter image description here

版本2

这将在级别的十字上显示标记。您可以使用相同的条件通过alertcondition()定义警报:

//@version=4
study("custom Session breakout","0")

new_session  = is_new_session("1400",my_session)
var hiLine   = line.new(bar_index,extend = extend.both)
var loLine   = line.new(bar_index,extend = extend.both)
var hiLabel  = label.new(bar_index,textcolor = color.silver)
var loLabel  = label.new(bar_index,textcolor = color.silver)
var float hi = na
var float lo = na
if new_session
    // Update hi and lo.
    hi := high
    lo := low
    // Update lines.
    line.set_xy1(  hiLine,hi)   
    line.set_xy2(  hiLine,hi)   
    line.set_xy1(  loLine,lo)   
    line.set_xy2(  loLine,lo)
    // Update labels.
    label.set_xy(  hiLabel,hi)
    label.set_text(hiLabel,tostring(hi,lo)
    label.set_text(loLabel,tostring(lo,f_tickFormat()))

// Crosses
xUp = crossover( close,hi)
xDn = crossunder(close,lo)

// Mark session beginnings for debugging.
plotchar(new_session,size = size.tiny)
plotchar(xUp,"xUp","▲",location.belowbar,color.lime,size = size.tiny)
plotchar(xDn,"xDn","▼",color.fuchsia,size = size.tiny)

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...