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

时间:2020-08-12 12:02:23

标签: session pine-script breakout

//@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, style=plot.style_circles, 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", 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, high, color = color.orange, width = 2, extend = extend.both)
var loLine   = line.new(bar_index, low,  bar_index, low,  color = color.orange, width = 2, 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, na, "", color = color(na), style = label.style_none, 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,  bar_index, hi)   
    line.set_xy1(  loLine,  bar_index - 1, lo)   
    line.set_xy2(  loLine,  bar_index, lo)
    // Update labels.
    label.set_xy(  hiLabel, bar_index, hi)
    label.set_text(hiLabel, tostring(hi, f_tickFormat()))
    label.set_xy(  loLabel, bar_index, 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", "▼", location.abovebar, color.fuchsia, size = size.tiny)

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

1 个答案:

答案 0 :(得分:0)

版本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, high, color = color.orange, width = 2, extend = extend.both)
var loLine  = line.new(bar_index, low,  bar_index, low,  color = color.orange, width = 2, 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, na, "", color = color(na), style = label.style_none, textcolor = color.silver)
if new_session
    // Update lines.
    line.set_xy1(  hiLine,  bar_index - 1, high)   
    line.set_xy2(  hiLine,  bar_index, high)   
    line.set_xy1(  loLine,  bar_index - 1, low)   
    line.set_xy2(  loLine,  bar_index, low)
    // Update labels.
    label.set_xy(  hiLabel, bar_index, high)
    label.set_text(hiLabel, tostring(high, f_tickFormat()))
    label.set_xy(  loLabel, bar_index, 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", 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, high, color = color.orange, width = 2, extend = extend.both)
var loLine   = line.new(bar_index, low,  bar_index, low,  color = color.orange, width = 2, 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, na, "", color = color(na), style = label.style_none, 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,  bar_index, hi)   
    line.set_xy1(  loLine,  bar_index - 1, lo)   
    line.set_xy2(  loLine,  bar_index, lo)
    // Update labels.
    label.set_xy(  hiLabel, bar_index, hi)
    label.set_text(hiLabel, tostring(hi, f_tickFormat()))
    label.set_xy(  loLabel, bar_index, 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, "new_session", "•", location.abovebar, size = size.tiny)
plotchar(xUp, "xUp", "▲", location.belowbar, color.lime, size = size.tiny)
plotchar(xDn, "xDn", "▼", location.abovebar, color.fuchsia, size = size.tiny)

enter image description here