Если мне нужно получить доступ к ежедневному значению закрытия предыдущего дня в текущем внутридневном периоде, тогда я просто использую функцию безопасности с закрытием [1], как описано в следующем https://getsatisfaction.com/tradingview/topics/using-pine-script-to-retrieve-previous-days-close-from-within-intraday-chart.
Однако этоМне не понятно, использую ли я ту же концепцию при расчете показателя.Есть некоторые упоминания об этом при обсуждении параметра просмотра в будущее на https://www.tradingview.com/wiki/Context_Switching,The%E2%80%98security%E2%80%99_Function,, но я не совсем уверен в своем понимании ..
Могут ли люди посмотреть этот фрагмент кода
В этом примере индикатор ADX рассчитывается по дневному значению, а затем к нему применяется 30-минутный период времени и на следующий день.Если ADX больше 25 и он бычий, мы открыли длинную позицию.Если ADX меньше 25 или медвежий, мы закрываем позицию.
В качестве конкретного примера предполагается следующее: во вторник утром в конце первых 30 минут торговли мы рассмотрим ADX, построенный на конце дня закрытия в понедельник вечером.,
Чтобы достичь этого, я просто заменил ссылки на high и low в функции для вычисления ADX на high [1] и low [1].
Пожалуйста, сообщите, является ли этот код рекомендуемым способом достижения этого, или если есть какие-либо возможные ошибки.
Спасибо
//@version=3
strategy("ADX daily long", overlay=true,initial_capital=100000, currency='USD', commission_type='strategy.commission,cash_per_order',commission_value=1, default_qty_type=strategy.cash,default_qty_value=100000)
length = input(title="Length", type=integer, defval=14)
src = input(title="Source", type=source, defval=close)
// Begin ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
adx_threshold = input(title="ADX threshold", type=integer, defval=25)
hd_period = '1D'
dirmovdirection(len) =>
up = change(high[1])
down = -change(low[1])
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr[1], len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
direction = (plus>minus)?1:0
dirmov(len) =>
up = change(high[1])
down = -change(low[1])
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = security(tickerid, hd_period, adx(dilen, adxlen))
direction = security(tickerid, hd_period, dirmovdirection(dilen))
// plot(sig, color=red, title="ADX")
// End ADX
if sig > 25 and direction == 1
strategy.entry("ADX daily long", strategy.long)
if (sig< 25 or direction == 0)
strategy.close("ADX daily long")