Я написал индикатор для отображения значений OHLC за день и за предыдущий день. Я знаю, что это делалось уже миллион раз, но я хотел сделать ненавязчивую версию, за которой было бы легко следить. Я хочу сделать переключатель, чтобы дать возможность отображать данные только для текущей сессии или для каждой торговой сессии. Что-то вроде этого:
showCurrent = input(true, title='Display current period only')
Я также нашел фрагмент кода, который отображает данные только за текущий торговый день.
currentOnly = false
if year(timenow) == year(time) and month(timenow) == month(time) and dayofmonth(timenow) == dayofmonth(time)
currentOnly:= true
Я хотел бы знать, как их объединить, чтобы при showCurrent == true вчерашние и сегодняшние уровни отображались только в текущем сеансе.
Вот как выглядит код. Очень простой:
//@version=5
indicator(title='Daily OHLC', overlay=true)
showCurrent = input(true, title='Display current period only')
showOpen = input(true, title='Daily open')
showPrevClose = input(true, title='Previous day close')
showHiLo = input(true, title='Daily high & low')
showPrevHiLo = input(false, title='Previous day high & low')
currentOnly = false
if year(timenow) == year(time) and month(timenow) == month(time) and dayofmonth(timenow) == dayofmonth(time)
currentOnly:= true
dailyOpen = request.security(syminfo.tickerid, 'D', open, lookahead=barmerge.lookahead_on)
prevClose = request.security(syminfo.tickerid, 'D', close[1], lookahead=barmerge.lookahead_on)
dailyHigh = request.security(syminfo.tickerid, 'D', high, lookahead=barmerge.lookahead_on)
dailyLow = request.security(syminfo.tickerid, 'D', low, lookahead=barmerge.lookahead_on)
prevHigh = request.security(syminfo.tickerid, 'D', high[1], lookahead=barmerge.lookahead_on)
prevLow = request.security(syminfo.tickerid, 'D', low[1], lookahead=barmerge.lookahead_on)
openColour = dailyOpen!= dailyOpen[1]? na: close < dailyOpen? #F23645: #4CAF50
prevCloseColour = prevClose!= prevClose[1]? na: close < prevClose? #F23645: #4CAF50
highColour = dailyHigh!= dailyHigh[1]? na: #4CAF50
lowColour = dailyLow!= dailyLow[1]? na: #F23645
plot(timeframe.multiplier < 60? showOpen and dailyOpen? dailyOpen: na: na, title='Daily Open', style=plot.style_line, linewidth=1, color=openColour, transp=20)
plot(timeframe.multiplier < 60? showPrevClose and prevClose? prevClose: na: na, title='Previous Day Close', style=plot.style_line, linewidth=1, color=prevCloseColour, transp=60)
plot(timeframe.multiplier < 60? showHiLo and dailyHigh? dailyHigh: na: na, title='Daily High', style=plot.style_circles, linewidth=1, color=highColour, transp=20)
plot(timeframe.multiplier < 60? showHiLo and dailyLow? dailyLow: na: na, title='Daily Low', style=plot.style_circles, linewidth=1, color=lowColour, transp=20)
plot(timeframe.multiplier < 60? showPrevHiLo and prevHigh? prevHigh: na: na, title='Previous Day High', style=plot.style_circles, linewidth=1, color=highColour, transp=20)
plot(timeframe.multiplier < 60? showPrevHiLo and prevLow? prevLow: na: na, title='Previous Day Low', style=plot.style_circles, linewidth=1, color=lowColour, transp=20)

Я хочу иметь возможность переключаться между этим и этим

Решение проблемы
Это должно сделать то, что вы намеревались.
//@version=5
indicator(title='Daily OHLC', overlay=true)
showCurrent = input.bool(true, title='Display current period only')
showOpen = input.bool(true, title='Daily open')
showPrevClose = input.bool(true, title='Previous day close')
showHiLo = input.bool(true, title='Daily high & low')
showPrevHiLo = input.bool(false, title='Previous day high & low')
[dailyOpen, prevClose, dailyHigh, dailyLow, prevHigh, prevLow] = request.security(syminfo.tickerid, 'D', [open, close[1], high, low, high[1], low[1]], lookahead=barmerge.lookahead_on)
openColour = color.new(dailyOpen!= dailyOpen[1]? na: close < dailyOpen? #F23645: #4CAF50, 20)
prevCloseColour = color.new(prevClose!= prevClose[1]? na: close < prevClose? #F23645: #4CAF50, 60)
highColour = color.new(dailyHigh!= dailyHigh[1]? na: #4CAF50, 20)
lowColour = color.new(dailyLow!= dailyLow[1]? na: #F23645, 20)
isToday = year(timenow) == year and month(timenow) == month and dayofmonth(timenow) == dayofmonth
canShow = timeframe.multiplier < 60 and isToday or not showCurrent
plot(canShow and showOpen and dailyOpen? dailyOpen: na, title='Daily Open', style=plot.style_line, linewidth=1, color=openColour)
plot(canShow and showPrevClose and prevClose? prevClose: na, title='Previous Day Close', style=plot.style_line, linewidth=1, color=prevCloseColour)
plot(canShow and showHiLo and dailyHigh? dailyHigh: na, title='Daily High', style=plot.style_circles, linewidth=1, color=highColour)
plot(canShow and showHiLo and dailyLow? dailyLow: na, title='Daily Low', style=plot.style_circles, linewidth=1, color=lowColour)
plot(canShow and showPrevHiLo and prevHigh? prevHigh: na, title='Previous Day High', style=plot.style_circles, linewidth=1, color=highColour)
plot(canShow and showPrevHiLo and prevLow? prevLow: na, title='Previous Day Low', style=plot.style_circles, linewidth=1, color=lowColour)
Комментариев нет:
Отправить комментарий