
Эта стратегия является короткой линейной торговой стратегией, основанной на системе многоиндикаторного подтверждения и ранжирования. Она оценивает силу торговых сигналов, анализируя размер диаграммы, изменение объема торговли и индикатор RSI, разделяя сигналы на три уровня A, B и C, в которых сильнейший сигнал класса A, слабейший сигнал класса C.
В основе этой стратегии лежит сочетание следующих ключевых элементов:
Оценка тенденцийИспользуйте 200 EMA в качестве основного инструмента для определения тенденции. Цены ищут возможности для увеличения выше 200 EMA, ищут возможности для уменьшения выше 200 EMA.
Сигнал равнолинейного пересечения: Стратегия использует 20-циклические EMA и SMA, когда эти две равнолинейные линии пересекаются, чтобы создать начальный сигнал. Для многосигнала необходимо пройти через SMA на EMA, для пустого сигнала необходимо пройти через SMA под EMA.
RSI подтверждает: Используйте 9-циклический RSI-индикатор, при условии, что RSI больше 50, при условии, что RSI меньше 50.
Оценка размера корпуса: Стратегический анализ размера корпуса и сравнение его с средним объемом за последние 20 корпусов, чтобы оценить текущую динамику цен.
Подтверждение объема сделкиТребование, чтобы текущий объем торгов был больше, чем в предыдущем периоде, чтобы обеспечить достаточное участие в рынке.
Система ранжирования сигналов:
Управление рискамиВключает регулируемые уровни стоп (по умолчанию 0,5%) и стоп (по умолчанию 0,3%), настраиваемые в процентах от цены входа.
С помощью этих условий многократного подтверждения стратегия гарантирует, что сделки будут заключаться только при наличии достаточного количества динамики рынка и подтверждения тенденции, что снижает количество ложных сигналов.
Система ранжированияНаибольшим преимуществом является уникальная система ранжирования сигналов, которая позволяет трейдерам выбирать только самые сильные сигналы (классы “А”) в зависимости от их предпочтений в отношении риска, или включать в себя больше возможностей для торговли (классы “Б” и “С”).
Механизм многократного подтверждения: в сочетании с техническими показателями (RSI, средняя линия), ценовым поведением (размер ядра) и многократным подтверждением участия в рынке (объем сделок), эффективно снижает вероятность ложных сигналов.
Встроенное управление рискамиАвтоматизированная система Stop Loss обеспечивает контроль риска каждой сделки и предотвращает чрезмерные потери от одной сделки.
Система визуальной обратной связи: При запуске торгового сигнала автоматически наносится ярлык на графике, чтобы четко показать направление торговли и силу сигнала, что позволяет операторам быстро идентифицировать.
Функция оповещенияИнтегрированная система оповещений TradingView, которая позволяет предупреждать трейдеров через всплывающее окно, электронную почту или мобильный телефон.
Адаптация к различным рыночным условиям: подтверждение, что стратегия может поддерживать относительно стабильную производительность в различных волатильных условиях с помощью классификации сигналов и многочисленных показателей.
Настройка: Предоставляет настраиваемые параметры для нескольких ключевых параметров, включая длину RSI, средний цикл, стоп-стоп-лосс, а также уровень сигналов для торговли, что позволяет приспосабливать стратегию к личным предпочтениям и рыночным условиям.
Тенденции, связанные с динамикой: Стратегия эффективно сочетает в себе трендовое следование ((средняя линия) и динамическое подтверждение ((RSI, размер кристалла), образуя более полную торговую систему.
Слишком много фильтровПри использовании механизма многократного подтверждения можно упустить некоторые эффективные торговые возможности, особенно если торговать только сигналами класса А, что может значительно снизить частоту торгов.
Параметр ЧувствительностьСтратегия использует несколько технических показателей и параметров, незначительные изменения которых могут привести к значительным различиям в производительности. Например, критерии для определения длины RSI, среднелинейного цикла и размера корпуса могут нуждаться в корректировке в зависимости от различных рыночных условий.
фиксированный процент стоп-стоп: Стратегия использует фиксированный процент стоп-стоп, который может не подходить для всех рыночных условий. В условиях высокой волатильности фиксированный уровень стоп-стоп может быть слишком маленьким, а в условиях низкой волатильности - слишком большим.
Влияние шума на рынокНа 1-минутных временных рамках рыночный шум может привести к большему количеству ложных сигналов, особенно в периоды, когда рынок горизонтален или менее волатилен.
Риск ликвидности: В неторговый период или в период низкой ликвидности качество торгового сигнала может снизиться, а риск проскальзывания возрастает.
Продолжающийся риск убытковДаже при использовании системы ранжирования, в случае резких изменений на рынке могут возникнуть непрерывные убытки, что требует соответствующей стратегии управления капиталом.
Риск обратной тенденцииСтратегия основана на краткосрочных среднелинейных перекрестках и подтверждении RSI, что может привести к ошибочным сигналам в условиях сильного контр-тенденционного тренда.
Способы смягчения этих рисков включают: использование фильтрующих условий в более длительных временных рамках, динамическое регулирование уровня остановочных стоп-лосс, торговля в определенные периоды рынка (например, в периоды высокой волатильности или достаточной ликвидности), регулярное отслеживание и оптимизация параметров, а также строгое управление рисковым порогом для каждой сделки.
atr = ta.atr(14)
longSL = close - atr * slMultiplier
longTP = close + atr * tpMultiplier
timeFilter = (hour >= 14 and hour < 16) or (hour >= 9 and hour < 11)
higherTimeframeTrend = request.security(syminfo.ticker, "15", close > ta.ema(close, 200))
longCondition = longBase and higherTimeframeTrend
consecutiveLongSignals = longBase and longBase[1]
adaptiveLength = math.round(ta.atr(14) / ta.atr(14)[20] * baseLength)
adaptiveRsi = ta.rsi(close, math.max(2, adaptiveLength))
if setupGrade == "A"
tpMultiplier = 2.0
else if setupGrade == "B"
tpMultiplier = 1.5
else
tpMultiplier = 1.0
volatilityFilter = ta.atr(14) > ta.sma(ta.atr(14), 20) * 0.8
if (strategy.position_size > 0 and close > entryPrice * (1 + partialTpPerc/100))
strategy.exit("Partial", "Long", qty_percent=50)
Эти направления оптимизации в основном решают проблемы адаптации стратегии в различных рыночных условиях, повышают качество сигнала и лучше управляют рисками, сохраняя при этом основную логику стратегии.
Эта US30 многоуровневая стратегия подтверждения трендов и управления рисками - это система коротких линий торговли, которая сочетает в себе несколько технических показателей, подтверждение трендов и анализ динамики. Ее уникальность заключается в том, что она использует систему поэтапной оценки качества торговых сигналов (уровни A, B, C), позволяя трейдерам выбирать качество сигнала в соответствии с их собственными предпочтениями в отношении риска.
Встроенные функции управления рисками и четкая визуальная обратная связь делают его относительно полноценной торговой системой. Однако при работе в короткие временные рамки стратегия может столкнуться с такими проблемами, как высокий уровень рыночного шума, чувствительность к параметрам и недостаточная гибкость фиксированных стоп-лоев. Благодаря интеграции таких направлений оптимизации, как динамическое управление рисками, анализ многовременных рамок и фильтрация рыночных условий, стратегия имеет потенциал для дальнейшего повышения адаптивности и стабильности в различных рыночных условиях, сохраняя при этом основные преимущества.
Для трейдеров, предпочитающих четкие правила и управляемую риском стратегию торговли на коротких линиях, эта система является хорошей отправной точкой, которая может быть настроена на индивидуальный стиль торговли и особенности целевого рынка путем дальнейшей обратной связи и оптимизации.
/*backtest
start: 2025-02-01 00:00:00
end: 2025-03-31 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("US30 1-min Strategy with TP/SL, Grades, Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Inputs ===
rsiLength = input.int(9, title="RSI Length")
maLength = input.int(20, title="MA Length (SMA & EMA)")
ema200Length = input.int(200, title="200 EMA Length")
tpPerc = input.float(0.5, title="Take Profit %", step=0.1)
slPerc = input.float(0.3, title="Stop Loss %", step=0.1)
// Grade filters
allowA = input.bool(true, title="Trade A-Grade Setups")
allowB = input.bool(true, title="Trade B-Grade Setups")
allowC = input.bool(false, title="Trade C-Grade Setups")
// === Indicators ===
rsi = ta.rsi(close, rsiLength)
sma = ta.sma(close, maLength)
ema = ta.ema(close, maLength)
ema200 = ta.ema(close, ema200Length)
volumeRising = volume > volume[1]
// === Candle Size Helpers ===
avgBody = ta.sma(math.abs(close - open), 20)
candleBody = math.abs(close - open)
candleLarge = candleBody > avgBody
candleVeryLarge = candleBody > avgBody * 2
// === Setup Grade Conditions ===
gradeA = candleVeryLarge and volumeRising and rsi > 55 or rsi < 45
gradeB = candleLarge and volumeRising
gradeC = candleLarge
// === Setup Conditions ===
// --- Long ---
longBase = close > ema200 and ta.crossover(ema, sma) and rsi > 50 and close > ema and close > sma
// --- Short ---
shortBase = close < ema200 and ta.crossunder(ema, sma) and rsi < 50 and close < ema and close < sma
// === Determine Grade ===
setupGrade = ""
isTrade = false
if longBase
if gradeA and allowA
setupGrade := "A"
isTrade := true
else if gradeB and allowB
setupGrade := "B"
isTrade := true
else if gradeC and allowC
setupGrade := "C"
isTrade := true
if shortBase
if gradeA and allowA
setupGrade := "A"
isTrade := true
else if gradeB and allowB
setupGrade := "B"
isTrade := true
else if gradeC and allowC
setupGrade := "C"
isTrade := true
// === Entry & TP/SL ===
longTP = close * (1 + tpPerc / 100)
longSL = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)
// Entry
if longBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
strategy.entry("Long " + setupGrade, strategy.long)
strategy.exit("TP/SL", "Long " + setupGrade, limit=longTP, stop=longSL)
label.new(bar_index, high, "Long " + setupGrade, style=label.style_label_up, color=color.green, textcolor=color.white)
alert("LONG " + setupGrade + " setup triggered!", alert.freq_once_per_bar)
if shortBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
strategy.entry("Short " + setupGrade, strategy.short)
strategy.exit("TP/SL", "Short " + setupGrade, limit=shortTP, stop=shortSL)
label.new(bar_index, low, "Short " + setupGrade, style=label.style_label_down, color=color.red, textcolor=color.white)
alert("SHORT " + setupGrade + " setup triggered!", alert.freq_once_per_bar)
// === Plotting MAs ===
plot(ema, title="20 EMA", color=color.red)
plot(sma, title="20 SMA", color=color.blue)
plot(ema200, title="200 EMA", color=color.green)