
Индексная подвижная средняя линия Stop-Down Trading Strategy - это количественная торговая система, основанная на признании падений форм и тенденций в подвижной средней. Эта стратегия основана на идентификации конкретных падений форм (то есть сигналов “стоп-Down”) в качестве точек входа, в то же время в сочетании с EMA (индексная подвижная средняя линия) перекрестно подтверждает общую рыночную тенденцию и использует динамические уровни поддержки и сопротивления для идентификации рыночных прорывов.
Ключевым принципом стратегии является выявление конкретных падений на рынке, которые обычно представляют собой вероятность краткосрочного переворота рынка. Механизм действия стратегии таков:
Определение тренда: определение тренда рынка путем сравнения относительной позиции EMA20 и EMA90. Когда EMA20 находится выше EMA90, он определяется как восходящий тренд; когда EMA20 находится ниже EMA90, он определяется как нисходящий тренд.
В результате, на улице появилась информация о том, что в здании находится пожар.
Детекция прорыва: выявление прорыва на рынке путем сравнения текущей цене закрытия с уровнем поддержки/сопротивления (вычисление минимальных/максимальных цен на основе 30 циклов).
Условия для входа: в случае появления сигнала остановки падения, когда рынок находится в определенном тренде и не находится в состоянии прорыва, стратегия входит в соответствии с заданным параметром риска (риск 2.5% на одну сделку).
Стоп-страх: для многообещающих позиций стоп-страх устанавливается на 2,5% ниже начальной цены; для свободных позиций стоп-страх устанавливается на 2,5% выше начальной цены.
Стоп-условия: комбинированные условия, основанные на процентном соотношении прибыли и риска к доходности. Многоголовые требуют не менее 7% прибыли и не менее 3 риска к доходности; пустые головы требуют не менее 6% прибыли и не менее 3 риска к доходности.
Четкие сигналы входа и выхода: предоставление четких торговых сигналов с помощью определенных падений и движущихся средних трендов, уменьшение эмоционального воздействия субъективных суждений.
Комплексный механизм подтверждения трендов: использование показателей EMA на несколько временных периодов для подтверждения тенденций рынка, повышения надежности торговых сигналов.
Идентификация динамических уровней поддержки и сопротивления: динамические уровни поддержки и сопротивления, рассчитанные с помощью прокрутки, позволяют стратегии адаптироваться к различным этапам рынка.
Строгое управление рисками: предусматривает параметры риска (риск 2,5% на одну сделку) и условия остановки, основанные на соотношении риска и прибыли, чтобы обеспечить рациональность управления средствами.
Дифференцированные критерии многоголовной торговли: для многоголовной и пустой торговли устанавливаются различные условия входа и целевые показатели прибыли, адаптируемые к асимметричным характеристикам рынка.
Динамический расчет позиции: расчет подходящего размера позиции на основе автоматического расчета стоп-лоста, чтобы обеспечить согласованность риска для каждой сделки.
Задержка индикатора: EMA, как задержанный индикатор, может предоставлять задержанные сигналы в быстро меняющихся рынках, что приводит к плохим временям входа.
Риск ложного прорыва: на рынке может возникнуть феномен ложного прорыва, что приводит к получению ошибочного сигнала. Решением является введение подтверждения количества сделок или увеличение цикла подтверждения прорыва.
Проблема с корректировкой чувствительности: параметры для остановки сигнала (например, пропорции теневой линии к объекту) должны быть скорректированы в зависимости от различных рынков и циклов. Слишком чувствительные могут привести к чрезмерной торговле, а слишком строгие - к упущенным возможностям.
Риск перехода в тренд: во время перехода в тренд стратегия может привести к ряду убыточных сделок. Решение заключается в добавлении фильтра силы тренда или уменьшении частоты сделок при неопределенности тренда.
Неприемлемость фиксированного стоп-распада: использование одинакового процента стоп-распада (,5%) для всех сделок может быть неуместным для различных рыночных колебаний. Можно рассмотреть возможность использования динамического стоп-распада, основанного на волатильности.
Ограничения условий RSI-фильтрации: использование RSI-фильтрации только для холостых сделок может привести к дисбалансированной частоте сделок. Можно рассмотреть возможность введения аналогичных механизмов фильтрации для многоголосных сделок или оптимизации текущих RSI-параметров.
Параметры самостоятельной адаптации волатильности: введение волатильности показателей (например, ATR) для динамической корректировки требований соотношения теневой линии и стоп-дистанции для остановки сигналов, что позволяет стратегии лучше адаптироваться к различным рыночным условиям.
Подтверждение многократных временных рамок: подтверждение тенденции к повторному введению более высоких временных рамок (например, 1-часовой график), повышение надежности торговых сигналов и уменьшение влияния ложных сигналов.
Оптимизация времени входа: оптимизация времени входа, повышение успешности сделки путем добавления дополнительных фильтров (например, индикатор силы тренда, подтверждение объема сделки).
Частичный стоп-механизм: введение стадионного стоп-механизма, который при достижении определенной прибыли переносит стоп-убытки на стоимость или блокирует часть прибыли, чтобы лучше сбалансировать риск и отдачу.
Расширение циклов отсчета: более полный отсчет в разных рыночных циклах и условиях для проверки стабильности и адаптивности стратегии.
Оптимизация с помощью машинного обучения: использование методов машинного обучения для автоматической оптимизации параметров стратегии, чтобы найти оптимальную комбинацию параметров для конкретного рынка.
Контроль частоты сделок: введение ограничений на количество сделок или механизмов охлаждения, чтобы избежать чрезмерной торговли в неблагоприятных рыночных условиях.
Стратегия остановки торговли с индексированным движением равновесия - это количественная торговая система, объединяющая технический анализ и управление рисками, которая генерирует торговые сигналы, идентифицируя конкретные формы падения и объединяя их с подтверждением тенденций. Основные преимущества этой стратегии заключаются в четких торговых правилах и строгом механизме контроля риска, что делает торговые решения более систематизированными и дисциплинированными. Однако, как и любая стратегия технического анализа, она также сталкивается с такими проблемами, как отсталость показателей и адаптация к изменениям на рынке.
Стратегия имеет потенциал для более устойчивой работы в различных рыночных условиях путем внедрения улучшений в таких направлениях, как адаптация параметров волатильности, подтверждение и оптимизация времени входа в несколько временных рамок. В частности, применение методов машинного обучения для оптимизации параметров может значительно повысить адаптивность стратегии и ее общую производительность. В любом случае, перед фактической развертыванием стратегии рекомендуется провести полное обратное тестирование и перспективное тестирование, чтобы проверить ее эффективность в реальных рыночных условиях.
/*backtest
start: 2024-02-26 00:00:00
end: 2025-02-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Advanced Candle Stop Strategy Backtest - Tuned v9 - Max Trades", overlay=true)
// --- EMA Variables ---
ema5_length = 5
ema20_length = 20
ema90_length = 90
ema5 = ta.ema(close, ema5_length)
ema20 = ta.ema(close, ema20_length)
ema90 = ta.ema(close, ema90_length)
// --- Support, Resistance, and Volume Calculation ---
lookback_support_resistance = 30
support_level = ta.lowest(low, lookback_support_resistance)
resistance_level = ta.highest(high, lookback_support_resistance)
// --- Volume Condition for Short (Removed) ---
avg_volume_lookback = 20
avg_volume = ta.sma(volume, avg_volume_lookback)
// --- RSI Condition for Short (Removed) ---
rsi_length = 14
rsi_overbought = 70
rsi = ta.rsi(close, rsi_length)
// --- Candle Stop Function ---
is_candle_stop(trend) =>
body = math.abs(close - open)
upper_shadow = high - math.max(open, close)
lower_shadow = math.min(open, close) - low
if trend == "up"
lower_shadow >= 0.8 * body and upper_shadow < body and close > open // Shadow ratio reduced to 0.8 for longs
else if trend == "down"
upper_shadow >= 0.8 * body and lower_shadow < body and close < open // Shadow ratio reduced to 0.8 for shorts - EMA5 and Volume conditions removed
else
false
// --- Trend Determination (only 15m, no 1H confirmation) ---
trend = ema20 > ema90 ? "up" : ema20 < ema90 ? "down" : "neutral"
final_trend = trend // حذف تأیید با تایمفریم 1H
// --- Breakout Detection ---
var bool breakout_detected = false
if final_trend == "up" and close > resistance_level
breakout_detected := true
alert("شکست صعودی تشخیص داده شد! منتظر پولبک 🚀", alert.freq_once_per_bar)
else if final_trend == "down" and close < support_level
breakout_detected := true
alert("شکست نزولی تشخیص داده شد! منتظر پولبک 📉", alert.freq_once_per_bar)
// --- Entry and Exit Conditions ---
var float position = 0.0
var float entry_price = 0.0
var float stop_loss_price = na
var bool take_profit_long = false // Declare take_profit_long
var bool stop_loss_hit_long = false // Declare stop_loss_hit_long
var bool take_profit_short = false // Declare take_profit_short
var bool stop_loss_hit_short = false // Declare stop_loss_hit_short
risk_per_trade_percent = 2.5 // افزایش ریسک به 2.5٪ برای موقعیتهای بیشتر
if not breakout_detected
if position == 0 and is_candle_stop(final_trend)
risk_amount_usd = strategy.initial_capital * (risk_per_trade_percent / 100)
if final_trend == "up"
stop_loss_price := close * 0.975 // Stop loss at 2.5% below entry for longs
if (close - stop_loss_price) != 0
position_size_usd = risk_amount_usd / (close - stop_loss_price)
amount = position_size_usd / close
strategy.entry("Long", strategy.long, qty=amount)
position := amount
entry_price := close
else if final_trend == "down"
stop_loss_price := close * 1.025 // Stop loss at 2.5% above entry for shorts
if (stop_loss_price - close) != 0
position_size_usd = risk_amount_usd / (stop_loss_price - close)
amount = position_size_usd / close
if rsi >= rsi_overbought // RSI condition for short entry - No Change, still using RSI but not enforcing it for now - Consider removing RSI condition as well for max trades
strategy.entry("Short", strategy.short, qty=amount)
position := amount
entry_price := close
if position > 0
profit_percent_long = (close - entry_price) / entry_price * 100
profit_percent_short = (entry_price - close) / entry_price * 100
loss_percent_long = (entry_price - close) / entry_price * 100
loss_percent_short = (close - entry_price) / entry_price * 100
risk_reward_long = loss_percent_long != 0 ? profit_percent_long / loss_percent_long : (profit_percent_long != 0 ? 99999 : 0)
risk_reward_short = loss_percent_short != 0 ? profit_percent_short / loss_percent_short : (profit_percent_short != 0 ? 99999 : 0)
take_profit_long := profit_percent_long >= 7 and risk_reward_long >= 3
stop_loss_hit_long := close <= stop_loss_price
take_profit_short := profit_percent_short >= 6 and risk_reward_short >= 3 // Reduced Take Profit for Shorts to 6% - No Change
stop_loss_hit_short := close >= stop_loss_price
if (final_trend == "up" and (take_profit_long or stop_loss_hit_long)) or (final_trend == "down" and (take_profit_short or stop_loss_hit_short))
if final_trend == "up"
strategy.close("Long")
else
strategy.close("Short")
position := 0
entry_price := 0.0
breakout_detected := false
// --- Plotting EMAs and Support/Resistance Levels ---
plot(ema5, color=color.blue, title="EMA5")
plot(ema20, color=color.red, title="EMA20")
plot(ema90, color=color.green, title="EMA90")
plot(resistance_level, color=color.orange, style=plot.style_line, title="Resistance")
plot(support_level, color=color.orange, style=plot.style_line, title="Support")