
Эта стратегия является короткой линейной торговой стратегией, которая использует ADX-индикатор для фильтрации сигналов прорыва. Когда цена прорывает Bollinger Bollinger Bandwagon, и ADX падает, делайте пробел; когда цена прорывает Bollinger Bollinger Bandwagon, и ADX растет, делайте больше.
В качестве основного сигнала для прорыва в этой стратегии используется Bollinger Bollinger Bands. Понижение Bollinger Bands представляет собой двойную стандартную разницу в цене, а прорыв Bollinger Bands обычно означает, что цена вошла в период сильной тенденции. Кроме того, чтобы избежать ложных прорывов, в стратегию добавлен показатель ADX в качестве фильтрующего условия.
В частности, в этой стратегии используется диапазон бурин для вычисления цены закрытия длиной 33 цикла. Средняя орбитальная линия буринского пояса представляет собой 33-циклическую простой скользящую среднюю цену закрытия, причем верхняя и нижняя линии являются соответственно двумя стандартными разницами на средней линии.
Это прорывная стратегия, которая сочетает в себе тенденции и частотные индикаторы фильтрации сигналов, и имеет следующие преимущества:
Однако есть и другие риски:
Чтобы снизить эти риски, мы можем скорректировать параметры пояса Бурин, уменьшить диапазон пояса Бурин; скорректировать параметры цикла ADX, чтобы избежать чрезмерного просчёта сигнала; адекватно уменьшить стоп-дистанцию, чтобы контролировать одиночные потери. Конечно, эти оптимизации должны быть проверены путем обратной проверки, чтобы избежать чрезмерной совместимости.
В этой стратегии есть место для дальнейшей оптимизации:
Эта стратегия в целом является простой и практичной стратегией фильтрации прорыва. С помощью определения тенденции по Бринской полосе, ADX фильтрует сигналы, чтобы в какой-то степени избежать шума из колебаний рынка и использовать возможности тренда.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)
Price = close
Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev
ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))
Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2
Take_Profit = input(800)
Stop_Loss = input(400)
strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)