Эта стратегия сочетает в себе скользящий средний кроссовер, индекс относительной силы (RSI) и значительно увеличенный объем торговли, чтобы занять длинные/короткие позиции после обнаружения определенного процента отклонения цены на высоких пиках объема.
Кроссовер быстрых и медленно движущихся средних дает ранние сигналы изменения направления тренда. Индикатор RSI оценивает условия перекупки / перепродажи, чтобы избежать этих сценариев для более сильных сигналов входа. Значительное увеличение по сравнению со средним объемом сигналов потенциального движения цены, привлекающего внимание рынка. Эти пики объема усиливают силу сигналов входа. После пика объема и роста цены, ордера на вход запускаются, когда цена и объем отступили определенный процент, указывая на потенциальную коррекцию или обратный ход. Три шаг TP ордера используются для получения прибыли. Каждый уровень TP закрывает часть позиции при достижении предопределенной цели прибыли.
Такие же принципы применяются к коротким сигналам входа и выхода, что облегчает как длинные, так и короткие сделки.
Основные преимущества этой стратегии:
Скрещивание быстрых/медленных МА в сочетании с RSI формирует сильные сигналы входа, избегая перекупленных/перепроданных зон для увеличения коэффициентов выигрыша.
Всплески объема обеспечивают зафиксирование больших колебаний цен для установления позиции, укрепляя силу сигнала.
Механизм отклонения цены/объема повышает точность сроков входа, чтобы уловить возможности реверсии или роста.
Трехуровневые ТП используют тенденцию роста цен для закрепления прибыли на основе терпимости к риску.
Факультативная остановка позволяет обеспечить гибкость для сохранения капитала, сохраняя при этом возможность получения более высокой прибыли в зависимости от волатильности рынка.
Применимо как к длинным, так и к коротким сделкам, прибыль может быть реализована на рынках с восходящим или нисходящим трендом, повышая полезность.
Несмотря на тщательное планирование, торговля любыми финансовыми продуктами сопряжена с рисками.
Кроссоверы MA не всегда точно определяют тренд. Если используются ненадлежащие параметры MA, могут возникнуть неправильные сигналы.
Неправильное установление периода RSI может привести к неспособности избежать перекупленных/перепроданных зон. Период необходимо корректировать в зависимости от рынка.
В результате увеличения объема не обязательно идеально совпадает с значительными изменениями цен.
Чрезмерное или недостаточное снижение цены/объема влияет на сроки входа.
Предварительно установленные уровни получения прибыли не могут гарантировать полное исполнение TP-заказов.
Чрезмерно широкая стоп-лосс может преждевременно выйти из позиций, лишаясь большей прибыли.
Эти риски требуют оптимизации кода, настройки параметров и строгих обратных тестов для обеспечения надежности стратегии.
Дальнейшие улучшения:
Добавьте другие индикаторы, такие как полосы Боллинджера или KD, чтобы помочь принятию решений о входе, улучшая точность.
Включить модели машинного обучения, такие как LSTM, для создания динамических MAs, автоматически адаптирующих параметры к последним рыночным условиям, улучшая улавливание тенденций.
Встройте в динамический стоп-лосс/прибыль на основе волатильности рынка, чтобы автоматически корректировать уровни соответственно.
Использование анализа коинтеграции для оптимального выбора фактора отклонения по движению цен по всему рынку по сравнению с отдельными корреляциями акций, получая оптимальное время входа.
Использование многофакторных моделей с анализом настроений, поиском правил ассоциации и т. д. для выбора акций с наивысшей корреляцией ценовых/объемных изменений для реализации стратегии повышения производительности.
Это отличная стратегия для средне- и краткосрочных трейдеров после усовершенствования. Благодаря все более надежным и интеллектуальным функциям, построенным на оптимизации, она имеет большие практические преимущества для живой торговли, стремясь обеспечить более высокую доходность рынка с твердо контролируемыми рисками.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true) // Parametreler fastLength = input(12, minval=1, title="Fast Moving Average") slowLength = input(26, minval=1, title="Slow Moving Average") rsiPeriod = input(14, minval=1, title="RSI Period") volLength = input(20, minval=1, title="Volume MA Length") volMultiplier = input(2.0, title="Volume Spike Multiplier") trailOffset = input(1, title="Trailing Offset (%)") usdtPerTrade = input(50000, title="USDT per Trade") retraceFactor = input(0.8, title="Retracement Factor for Entry") takeProfit1 = input(1, title="Take Profit 1 (%)") takeProfit2 = input(2, title="Take Profit 2 (%)") takeProfit3 = input(3, title="Take Profit 3 (%)") trailForTP = input(true, title="Use Trailing Stop for Take Profits") // Hesaplamalar fastMA = sma(close, fastLength) slowMA = sma(close, slowLength) rsi = rsi(close, rsiPeriod) volMA = sma(volume, volLength) volumeSpike = volume > volMA * volMultiplier // Durum Değişkenleri ve Saklanan Değerler var float spikeVolume = na var float spikePrice = na var int direction = 0 // Alım/Satım Sinyalleri longCondition = crossover(fastMA, slowMA) and rsi < 70 shortCondition = crossunder(fastMA, slowMA) and rsi > 30 // Hacim Spike ve Fiyat Hareketinin Saklanması if (longCondition and volumeSpike) spikeVolume := volume spikePrice := close direction := 1 else if (shortCondition and volumeSpike) spikeVolume := volume spikePrice := close direction := -1 // Retracement Kontrolü ve Giriş Emirleri if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100)) strategy.entry("Long", strategy.long, qty=usdtPerTrade / close) spikeVolume := na direction := 0 else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100)) strategy.entry("Short", strategy.short, qty=usdtPerTrade / close) spikeVolume := na direction := 0 // Take Profit Emirleri if strategy.position_size > 0 strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na) strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na) strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na) if strategy.position_size < 0 strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na) strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na) strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na) // Pozisyon çıkışları strategy.close("Long", when=shortCondition) strategy.close("Short", when=longCondition)