
Эта стратегия объединяет среднелинейный индикатор и индикатор сверхтенденции для осуществления операций по сопровождению тренда. Делайте больше, когда тренд идет вверх, и пусто, когда тренд идет вниз.
Вычислить взвешенную скользящую среднюю MA. Используя объем сделки в качестве веса, вычислить взвешенную среднюю цену за определенный период.
Hull Moving Averages более чувствительны к изменениям цен.
Вычисление сверхтенденциального индикатора. Сверхтенденциальный индикатор в сочетании с ATR позволяет обнаружить изменения в ценовой тенденции.
Когда цена закрытия превышает верхнюю траекторию, делайте больше; когда цена закрытия падает ниже нижней траектории, делайте пустоту.
Картографирование вспомогательных показателей, таких как цена открытия, цена закрытия, цена максимума, цена минимума, более интуитивное наблюдение за изменениями цен.
Принимать решения о покупке и продаже на основе перекрестных показателей.
Эта стратегия, в сочетании с среднелинейным и сверхтенденционным индикаторами, позволяет более точно отслеживать изменения в тренде.
Средняя линия Hull более чувствительна к изменениям цен, что способствует своевременному обнаружению сдвигов в тренде.
Супертенденциальный индикатор может динамически менять позиции вверх и вниз, чтобы адаптироваться к рыночным колебаниям.
Вспомогательные индикаторы визуально отображают изменения цены, в сочетании с индикаторными сигналами для принятия решений.
Для оптимизации параметров стратегии имеется большое пространство, в котором можно регулировать параметры, такие как среднелинейный цикл, сверхтенденционный умножение и т. д.
В ходе сверки ситуации может возникнуть ложный сигнал, который может привести к ненужной сделке.
Необходимо одновременно отслеживать несколько показателей, а реализовать стратегию довольно сложно.
Параметры должны быть скорректированы в соответствии с характеристиками разных видов.
Необходимо строго контролировать стоп-лосс, чтобы избежать чрезмерных одиночных потерь.
Возможно, что количество сделок может быть большим, поэтому необходимо контролировать влияние комиссионных.
Можно тестировать параметры различных средних линий, выбирая более чувствительные к рынку средние показатели.
Можно тестировать различные супертенденционные умножения, выбирая значения, которые своевременно улавливают изменения тренда.
Можно использовать индикатор волатильности, чтобы снизить позицию при увеличении волатильности.
Можно добавить условия прорыва, чтобы избежать ложного сигнала при сворачивании.
Можно оптимизировать стратегию по прекращению убытков, чтобы она соответствовала рыночным особенностям.
Эта стратегия одновременно сочетает в себе среднелинейный индикатор и индикатор сверхтенденции для определения направления тенденции, чтобы следить за тенденцией. Преимущество заключается в том, что индикаторы могут быть взаимно проверены, чтобы более точно определить тенденцию. Однако необходимо остерегаться помех ложных сигналов.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rajukpatel
//@version=5
strategy('My RK Strategy with Alert', shorttitle='My RK Strategy with Alert', overlay=true )
src5 = input(close)
tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7
ma = ta.ema(src5 * volume, len5) / ta.ema(volume, len5)
//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/
src1 = ma
p(src1, len5) =>
n = 0.0
s = 0.0
for i = 0 to len5 - 1 by 1
w = (len5 - i) * len5
n += w
s += src5[i] * w
s
s / n
hm = 2.0 * p(src1, math.floor(len5 / 3)) - p(src1, len5)
vhma = p(hm, math.floor(math.sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title='VHMA', color=lineColor, linewidth=3)
hColor = true
vis = true
hu = hColor ? vhma > vhma[2] ? #00ff00 : #ff0000 : #ff9800
vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80)
fill(m1, m2, color=hu, transp=70)
//
b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7
//
res5 = input.timeframe('D')
o = request.security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = request.security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = request.security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = request.security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)
col = c >= o ? color.lime : color.red
ppo = plot(b ? o >= c ? hz : l : o, color=col, title='Open', style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title='Close', style=plot.style_stepline, transp=100)
plot(b and hz > c ? hz : na, color=col, title='High', style=plot.style_circles, linewidth=2, transp=60)
plot(b and l < c ? l : na, color=col, title='Low', style=plot.style_circles, linewidth=2, transp=60)
fill(ppo, ppc, col, transp=90)
//
// INPUTS //
st_mult = input.float(1, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(50, title='SuperTrend Period', minval=1)
// CALCULATIONS //
up_lev = l - st_mult * ta.atr(st_period)
dn_lev = hz + st_mult * ta.atr(st_period)
up_trend = 0.0
up_trend := c[1] > up_trend[1] ? math.max(up_lev, up_trend[1]) : up_lev
down_trend = 0.0
down_trend := c[1] < down_trend[1] ? math.min(dn_lev, down_trend[1]) : dn_lev
// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1 : c < up_trend[1] ? -1 : nz(trend[1], 1)
// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend
// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy = ta.crossover(c, st_line)
sell = ta.crossunder(c, st_line)
signal = input(false)
/////////////// Plotting ///////////////
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.new(color.lime, 0))
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0))
if buy
strategy.entry('My Long Entry Id', strategy.long)
if sell
strategy.entry('My Short Entry Id', strategy.short)