Эта стратегия использует кроссоверные паттерны между скользящими средними (MA) различных временных рамок и индикатором RSI для определения сроков входа и выхода на рынок, нацеленного на долгосрочное удержание.
Основной механизм этой стратегии заключается в определении точек входа и выхода через золотой крест и смертельный крест линий EMA. Он также включает в себя индикатор RSI для определения условий перекупа и перепродажи.
В частности, логика сигнала покупки проверяет следующее: цена пересекается ниже EMA20 и выше EMA50, образуя золотой крест, который помогает более точно идентифицировать изменение тренда по сравнению с единой системой EMA. Дополнительные критерии на закрытие цены ниже, чем открытие, и предыдущий день низкий далее фильтрует ложные прорывы.
Вышеперечисленные критерии покупки выполнены с использованием различных параметров для формирования 4 правил покупки, соответствующих различным периодам и количествам EMA. Это позволяет постепенно наращивать позиции посредством траншевых покупок, достигая снижения средних затрат.
При выходе стратегия проверяет смертельный перекресток выше EMA10, с сигналом перекупленного RSI; или смертельный перекресток ниже EMA10, с сигналом перепроданного RSI. Также реализуется правило получения прибыли на основе определенного процента доходности. Использование комбинаций RSI с перекрестными EMA снижает риск ложных сигналов.
Наибольшая сила этой стратегии заключается в ее эффективности выявления точек обратного движения тренда с пересечениями EMA, что позволяет следовать за трендом. По сравнению с единой системой EMA, двойные пересечения EMA помогают устранить ложные сигналы. Кроме того, использование RSI добавляет подтверждение перед входом в зоны перекупа / перепродажи, еще больше снижая торговые риски.
Еще одним преимуществом является внедрение пирамиды и снижение средних затрат. Такой траншевый покупка распределяет количества на разных ценовых уровнях, обеспечивая максимальную прибыль, когда тенденция возобновляется.
К основным рискам, связанным с этой стратегией, относятся:
Отсталость системы EMA делает ее медленной в реагировании на внезапные изменения цен, неспособной своевременно выходить из позиций.
Отсутствие ограничений на временные рамки вступления может привести к преждевременному вступлению, попавшему в консолидацию рынка.
Пирамидальные ордера на покупку могут привести к чрезмерным позициям, создавая уязвимость к рискам однонаправленного выхода.
Стратегия может быть дополнительно оптимизирована в следующих областях:
Включить правила стоп-лосса для сокращения потерь при нарушении ключевых уровней поддержки на стороне снижения, контролируя риски снижения.
Добавить модуль проверки торговли для проверки основного направления тренда, вводя сделки только тогда, когда общий тренд указывает вверх, избегая рисков контртенда.
Установьте более строгие ограничения на зону покупки, чтобы предотвратить преждевременные пирамидальные входы до подтверждения.
Использовать алгоритмы машинного обучения с многофакторным анализом для улучшения точности ввода и показателей выигрыша.
Подводя итог, эта статья подробно иллюстрирует долгосрочную количественную стратегию, использующую двойной кроссовер EMA и индикатор 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"}] */ //@version=5 strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true) // Input parameters qt1 = input.int(1, title="Quantity 1", minval=1) qt2 = input.int(2, title="Quantity 2", minval=1) qt3 = input.int(3, title="Quantity 3", minval=1) qt4 = input.int(4, title="Quantity 4", minval=1) ema10 = ta.ema(close, 10) ema20 = ta.ema(close, 20) ema50 = ta.ema(close, 50) ema100 = ta.ema(close, 100) ema200 = ta.ema(close, 200) // RSI(14) condition rsi_threshold = 65 rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold // Date range filter start_date = timestamp(year=2021, month=1, day=1) end_date = timestamp(year=2024, month=1, day=1) in_date_range = true // Profit condition profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed // Pyramiding setting pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10) // Buy conditions buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1] buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1] buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1] buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1] // Exit conditions profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2] exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2] // Strategy logic strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1) strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2) strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3) strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4) strategy.close("Buy1", when=exit_condition_1 or exit_condition_2) strategy.close("Buy2", when=exit_condition_1 or exit_condition_2) strategy.close("Buy3", when=exit_condition_1 or exit_condition_2) strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)