Эта стратегия включает в себя полосы Боллинджера, индикатор RSI и многочасовой анализ для определения направления среднесрочных и долгосрочных тенденций. Она определяет точки обратного движения тренда через прорывы полос Боллинджера в сочетании с сигналами перекупления / перепродажи RSI для низкого риска входа. Между тем, применяются более высокие временные рамки для фильтрации рыночных диапазонов и избегания попадания в ловушку.
Применять полосы Боллинджера для определения ценового прорыва. Средняя полоса представляет собой скользящую среднюю цену закрытия за N дней. Верхняя и нижняя полосы размещаются на расстоянии одного стандартного отклонения по обе стороны средней полосы. Прорыв выше верхней полосы сигнализирует о рост, а прорыв ниже нижней полосы сигнализирует о снижении.
Включите индикатор RSI для выявления уровней перекупленности / перепродажи. RSI выше 70 предполагает условия перекупленности, а ниже 30 предполагает условия перепродажи. Взлет RSI выше 70 подтверждает ослабление подъемного импульса. Взлет RSI ниже 30 подтверждает ослабление подъемного импульса.
Используйте более высокие временные рамки, чтобы отфильтровать ложные прорывы.
Интеграция нескольких индикаторов повышает стабильность и рентабельность стратегии.
Включение RSI уменьшает потери от ложных прорывов.
Многочасовой анализ эффективно отфильтровывает различные рынки и предотвращает попадание в ловушку.
Оптимизированное определение сигналов прорыва (прорывы в течение 3 последовательных строк) обеспечивает достаточный уровень зрелости тренда перед входами.
Индикатор вихря определяет направление зарождающейся тенденции на ранней стадии.
Недостаточная параметризация полос Боллинджера приводит к ошибочным сигналам о перекуплении/перепродаже.
Разумные значения параметров RSI должны определяться отдельно для различных продуктов.
Сигналы прорыва могут оказаться ложными.
Поддерживать достаточную маржу стоп-лосса, например, в 3 раза ATR.
Применение алгоритмов машинного обучения для автоматической настройки параметров для полос Боллинджера и RSI.
Оптимизировать уровни стоп-лосса на основе показателей волатильности.
Включить модуль размещения позиций для калибровки позиций на основе меняющихся рыночных условий.
Ограничение максимальных потерь на одну сделку на основе принципов управления деньгами.
Оцените стабильность сигнала на разных торговых сеансах.
Эта стратегия всесторонне рассматривает определение тренда, условия перекупки / перепродажи и несколько временных рамок для контроля рисков, ищет оптимальное время входа для захвата качественных средне- и долгосрочных тенденций для привлекательных профилей риска и прибыли.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Noway0utstorm //@version=5 strategy(title='Vortex0.71.3 + bb 3bar breakout + rsi - close hit upper or lower', shorttitle='truongphuthinh', format=format.price, precision=4,overlay = true) length = input(20, title="Length") mult = input(2.0, title="Multiplier") source = close basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upperBand = basis + dev lowerBand = basis - dev isClosedBar = ta.change(time("15")) var bool closeAboveUpperBand = false var bool closeBelowLowerBand = false // Vortex Indicator Settings period_ = input.int(14, title='Period', minval=2) VMP = math.sum(math.abs(high - low[1]), period_) VMM = math.sum(math.abs(low - high[1]), period_) STR = math.sum(ta.atr(1), period_) VIP = VMP / STR VIM = VMM / STR // lengthrsi = input(14, title="RSI Length") overboughtLevel = input(70, title="Overbought Level") oversoldLevel = input(30, title="Oversold Level") sourcersi = close rsiValue = ta.rsi(sourcersi, lengthrsi) shouldShort = rsiValue > overboughtLevel shouldLong = rsiValue < oversoldLevel if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3]) if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel strategy.entry("Short", strategy.short) closeAboveUpperBand := false // Reset the condition when entering a new Short position if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel strategy.entry("Long", strategy.long) closeBelowLowerBand := false // Reset the condition when entering a new Long position if strategy.position_size > 0 // Check if there is an open Long position closeAboveUpperBand := close > upperBand // Update the condition based on close price if closeAboveUpperBand strategy.close("Long",disable_alert=true) // Close the Long position if close price is above upper band if strategy.position_size < 0 // Check if there is an open Short position closeBelowLowerBand := close < lowerBand // Update the condition based on close price if closeBelowLowerBand strategy.close("Short",disable_alert=true) // Close the Short position if close price is below lower band // Plots plot(basis, color=color.orange, title="Basis") p1 = plot(upperBand, color=color.blue, title="Upper Band") p2 = plot(lowerBand, color=color.blue, title="Lower Band") fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))