
Тренд-дирижирующая пирамида с восстановлением равнолинейной скрещивания является комплексной количественной торговой системой, которая сочетает в себе отслеживание трендов, распознавание обратных сигналов и восстановление пирамидальных позиций. Эта стратегия основана на многочисленных пересечениях движущихся средних (EMA) для определения направления рыночных тенденций, используя поглощающие формы для подтверждения входных сигналов, а также в сочетании с пирамидальным управлением капиталом и мобильными функциями остановки убытков, чтобы создать целостный торговый замкнутый круг.
Стратегия основывается на движущихся средних индексов трех различных периодов (EMA20, EMA50 и EMA200) для определения тенденций на рынке, а также использует графические формы в качестве условия для ввода сигналов. В частности, стратегия работает следующим образом:
Механизм определения тенденций:
Сигнал входа:
Отбор:
Управление рисками:
Механизм восстановления пирамиды:
В кодовой реализации сначала определены три показателя EMA ((20, 50, 200), а затем построена логика отбора, чтобы исключить колебания. Существует два типа условий для покупки стратегии: трендовые покупки и обратные покупки.
Всеобщая адаптивность рынкаВключая одновременно отслеживание тенденций и стратегию обратного отсчета, система позволяет искать торговые возможности в различных рыночных условиях, а не ограничиваться одной рыночной ситуацией.
Многоуровневое управление рисками: в сочетании с фиксированным стопом, пропорциональным стопом и тройным механизмом защиты от стоп-убытков, не ограничивая потенциальную прибыль при защите средств.
Механизм восстановления пирамиды: инновационное внедрение системы восстановления, повышение эффективности восстановления средств путем научного увеличения позиций для устранения последовательных убытков. Этот механизм позволяет быстрее восстанавливать чистую стоимость счетов после краткосрочного вывода.
Динамичное управление позициями: автоматически корректирует размер позиции в зависимости от результатов торговли, сохраняет базовую позицию во время прибыли, постепенно увеличивает позицию во время убытка, чтобы ускорить восстановление.
Технические показатели и форма: не только полагается на технические показатели, такие как движущиеся средние, но и в сочетании с формографическим анализом, чтобы повысить качество сигнала с помощью многократного подтверждения.
Фильтрация входа: Отфильтровывайте неохотность через параметры body_ratio, чтобы снизить риск ложного сигнала.
Краткие визуальные знакиИнтуитивное отображение торговых сигналов на графике для обратной связи, анализа и мониторинга в режиме реального времени.
Риск быстрого расширения позиций: механизм восстановления пирамиды может привести к быстрому увеличению позиций при последовательных убытках, которые могут усугубить потери, если рынок будет продолжаться неблагоприятно. Рекомендуется контролировать параметр max_recovery в разумных пределах и корректировать base_position в зависимости от общего объема капитала.
Отставание при смене тенденцийСистемы, основанные на движущихся средних, могут реагировать медленно в начале сдвига тенденции, что приводит к задержке времени входа или выхода. В качестве вспомогательного решения можно рассмотреть более чувствительные показатели, такие как RSI или MACD.
Риск потери фиксированного баллаПри изменении волатильности рынка фиксированный стоп может быть слишком широким или слишком узким. Рекомендуется рассмотреть возможность использования ATR для динамической корректировки стоп-дистанции.
Ложный сигнал, поглощающий формы: На рынке поперечного диска поглощение может привести к большему количеству ложных сигналов. Качество сигнала может быть улучшено за счет увеличения подтверждения объема сделки или других вспомогательных показателей.
Ограничение односторонних сделокПримечание: В настоящее время стратегия выполняет только несколько операций, и в период медвежьего рынка может быть пропущена возможность позиционирования. Подумайте о добавлении симметричной логики позиционирования для адаптации к двусторонним рынкам.
Стресс в управлении деньгамиПри максимальном уровне восстановления требуется большая финансовая поддержка. Рекомендуется осторожно настроить параметры pyramid_factor и max_recovery в зависимости от размера общего счета.
Динамический механизм остановки убытков: замена фиксированного точечного стоп-порога на динамический стоп-порог на основе ATR, чтобы лучше адаптироваться к изменению волатильности рынка. Реализация состоит в том, чтобы рассчитать текущее значение ATR, а затем установить стоп-порог как кратность вступительной цены минус ATR.
Добавить логику вакуумаДобавление симметричных условий дисконтирования позволяет стратегии быть эффективными в условиях падения рынка. Метод реализации заключается в копировании существующей логики покупки, обратной установки условий и направления входа.
Улучшение оценки тенденцийВ дополнение к EMA, введены дополнительные инструменты подтверждения тренда, такие как ADX (индикатор силы тренда), фильтрация более сильной тенденционной среды. Можно добавить условия, такие как “ADX > 25” в качестве фильтра силы тренда.
Оптимизация рисковВ зависимости от исторических данных, для поиска оптимального соотношения стоп-стоп может потребоваться корректировка параметра tp_multiplier.
Фильтр времениУвеличение временных фильтров, избегание периодов низкой волатильности или нестабильности рынка. Особенно для торговли индексами, можно сосредоточиться на активных периодах рынка.
Оптимизация системы восстановления: рассматривает динамическую корректировку pyramid_factor, основанную на выигрыше и проигрыше, а не на использовании фиксированного множителя. Можно реализовать механизм самостоятельной корректировки, основанный на недавних результатах.
Увеличение части прибылиПосле достижения определенного уровня прибыли, вывод позиций в пакеты для блокирования части прибыли, сохраняя при этом оставшиеся позиции для отслеживания тенденции.
Интеграция эмоциональных показателей: внедрение индикаторов рыночной сентиментальности, таких как VIX или индикатор рыночной широты, изменение параметров стратегии или приостановка торговли в случае крайней эмоциональности.
Тренд-дирижирующая пирамида восстановления - это комплексная система, объединяющая несколько торговых идей, основанная на перекрестном суждении трендов с помощью EMA, поглощении сигналов подтверждения формы и совмещении с инновационным механизмом восстановления пирамиды для управления рисками и оптимизации эффективности капитала. Ключевое преимущество стратегии заключается в том, что она может адаптироваться к различным рыночным условиям, обеспечивая при этом совершенный механизм контроля риска.
Эта стратегия особенно подходит для трейдеров, которые имеют некоторое знание технического анализа и готовы принимать умеренный риск в поисках долгосрочной стабильной прибыли. Благодаря реализации вышеупомянутых направлений оптимизации, стабильность и адаптивность стратегии могут быть дополнительно повышены, особенно в условиях значительных изменений волатильности рынка.
В целом, эта стратегия представляет собой типичный метод комплексного применения технического анализа, управления рисками и управления капиталом в современных количественных сделках, предоставляя трейдерам масштабируемую структуру, которая может быть настроена и оптимизирована в соответствии с личными потребностями и рыночной обстановкой.
/*backtest
start: 2024-06-23 00:00:00
end: 2025-06-21 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("DJ30 Sniper (Trend + Reversal Buy + Pyramid Recovery + Trailing)", overlay=true, default_qty_value=1)
// === INPUTS ===
ema_fast = input.int(20, "EMA Fast")
ema_mid = input.int(50, "EMA Mid")
ema_slow = input.int(200, "EMA Slow")
rsi_period = input.int(14, "RSI Period")
sl_points = input.int(650, "Stop Loss (Points)")
tp_extra = input.int(200, "Extra TP Points")
tp_multiplier = 5
trailing_trigger = input.int(100, "Activate Trailing SL After (Points)")
trailing_stop = input.int(500, "Trailing Stop Size (Points)")
// === Recovery Settings ===
max_recovery = input.int(3, "Max Pyramid Levels", minval=1)
base_position = input.float(1000, "Base Order Size ($)") // 🔁 doubled from 500 to 1000
pyramid_factor = input.float(2.0, "Recovery Multiplier")
// === MAs ===
ema20 = ta.ema(close, ema_fast)
ema50 = ta.ema(close, ema_mid)
ema200 = ta.ema(close, ema_slow)
// === Candle Filter ===
body = math.abs(close - open)
candle_range = high - low
body_ratio = candle_range != 0 ? body / candle_range : 0
not_indecision = body_ratio > 0.3
// === Buy Conditions ===
bull_trend = ema20 > ema50 and ema50 > ema200 and close > ema200
engulfing_bullish = close > open and close > close[1] and open < open[1]
buy_trend = bull_trend and engulfing_bullish and not_indecision
bear_trend = ema20 < ema50 and ema50 < ema200 and close < ema200
engulfing_bearish = close < open and close < close[1] and open > open[1]
buy_reversal = bear_trend and engulfing_bearish and not_indecision
buy_condition = buy_trend or buy_reversal
// === SL/TP ===
tp_points = sl_points * tp_multiplier + tp_extra
sl_buy = close - sl_points * syminfo.mintick
tp_buy = close + tp_points * syminfo.mintick
// === Recovery Logic ===
var int recovery_level = 0
var float position_size = base_position
if strategy.closedtrades > 0
last_trade = strategy.closedtrades - 1
last_profit = strategy.closedtrades.profit(last_trade)
if last_profit > 0
recovery_level := 0
else
recovery_level := math.min(recovery_level + 1, max_recovery)
position_size := base_position * math.pow(pyramid_factor, recovery_level)
// === Trade Execution ===
if buy_condition and strategy.opentrades == 0
strategy.entry("Buy DJ30", strategy.long, qty=position_size)
// === Exit Logic ===
if strategy.opentrades > 0
entry_price = strategy.opentrades.entry_price(0)
unrealized_points = (close - entry_price) / syminfo.mintick
if unrealized_points >= trailing_trigger
strategy.exit("Trail Exit", from_entry="Buy DJ30", trail_points=trailing_stop, trail_offset=trailing_stop)
else
strategy.exit("Fixed Exit", from_entry="Buy DJ30", stop=sl_buy, limit=tp_buy)
// === Visual Markers ===
plotshape(buy_trend, location=location.belowbar, style=shape.labelup, color=color.green, text="TrendBuy")
plotshape(buy_reversal, location=location.belowbar, style=shape.labelup, color=color.orange, text="RevBuy")