Эта стратегия представляет собой простую стратегию торговли пересечением скользящей средней, основанную на краткосрочных и долгосрочных пересечениях скользящей средней. Она использует 34-периодные и 89-периодные скользящие средние для наблюдения за их пересечением во время утренней сессии в качестве сигналов покупки и продажи. Когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю снизу, генерируется сигнал покупки. Когда она пересекает снизу сверху, генерируется сигнал продажи.
Основная логика этой стратегии основана на перекрестках между краткосрочными и долгосрочными скользящими средними в качестве торговых сигналов. В частности, стратегия определяет 34-периодные и 89-периодные краткосрочные и долгосрочные простые скользящие средние (SMA). Она наблюдает перекрестки между этими двумя SMA только в течение утренней сессии (08:00 - 10:00). Когда краткосрочная SMA пересекает длинную SMA снизу, рынок считается в восходящем тренде, тем самым генерируя сигнал покупки. Когда краткосрочная SMA пересекает длинную SMA сверху, рынок считается в нисходящем тренде, тем самым генерируя сигнал продажи.
При получении сигнала покупки или продажи стратегия вступает в позицию и устанавливает условие выхода из позиции, которое заключается в получении прибыли после удержания за определенное количество свечей (по умолчанию 3 свечи) с момента входа. Это позволяет зафиксировать частичную прибыль и избежать дальнейших потерь.
Следует отметить, что стратегия идентифицирует перекрестные сигналы только во время утренней сессии. Это связано с тем, что в этом временном периоде объемы торговли выше, а сигналы изменения тренда более надежные. Другие временные периоды имеют большие колебания цен и легче генерировать ложные сигналы.
Стратегия имеет следующие преимущества:
Использование простых и универсальных правил пересечения скользящей средней, легко понятных, подходящих для новичков
Идентификация сигналов только во время утренней сессии, когда качественные сигналы в изобилии, что фильтрует ложные сигналы в течение других временных рамок
Имеет условия стоп-лосса, которые позволяют своевременно остановить потерю, блокировать частичную прибыль и снизить риск потери
Многие настраиваемые параметры, которые могут быть скорректированы на основе рыночных условий и личного стиля торговли
Легко расширяется для объединения с другими показателями для разработки более сложных стратегий
Стратегия также сопряжена с определенными рисками, главным образом из следующих аспектов:
Движущиеся средние сами по себе имеют большие задержки, могут пропустить краткосрочные точки переворота цен.
Опирается исключительно на простые индикаторы, подверженные сбоям в определенных рыночных условиях (шоки тренда, диапазонные ограничения и т.д.)
Неправильное расположение стоп-лосса может привести к ненужным потерям
Неправильное настройка параметров (периоды скользящей средней, периоды хранения и т.д.) также может повлиять на эффективность стратегии.
Соответствующие решения:
Включить другие ведущие показатели для повышения чувствительности к краткосрочным изменениям
Добавить условия фильтрации, чтобы избежать воздействия ложных сигналов во время шоков и рынков с ограниченным диапазоном
Оптимизировать логику стоп-лосса и динамически регулировать диапазон стоп-лосса на основе волатильности рынка
Оптимизация нескольких параметров для поиска оптимальных параметров
Стратегия также обладает большим потенциалом для оптимизации, главным образом в следующих аспектах:
Добавление других условий фильтрации для предотвращения ложных сигналов во время шоков и рынков с диапазоном
Включить индикаторы импульса для выявления более сильных сигналов прорыва
Оптимизировать параметры скользящей средней продолжительности для поиска наилучшей комбинации параметров
Автоматически оптимизировать диапазон стоп-лосса на основе волатильности рынка
Попытка автоматической оптимизации всей стратегии на основе методов машинного обучения
Попытка объединить с другими стратегиями для разработки более сложных многостратегических систем
В целом, эта стратегия относительно проста и практична, подходит для обучения новичков. Она воплощает в себе типичную модель движущихся средних кроссовер стратегий и использует остановки для контроля рисков. Однако могут быть сделаны дальнейшие оптимизации для улучшения производительности для большего количества рыночных условий. Инвесторы могут использовать эту базовую основу для разработки более продвинутых количественных торговых стратегий.
/*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("34 89 SMA Crossover Strategy", overlay=true) // Define the length for the SMAs short_length = input(34, title="Short SMA Length") long_length = input(89, title="Long SMA Length") exit_candles = input(3, title="Exit after how many candles?") exit_at_open = input(true, title="Exit at Open?") // Define morning session morning_session = input("0800-1000", "Morning Session") // Calculate SMAs short_sma = ta.sma(close, short_length) long_sma = ta.sma(close, long_length) // Function to check if current time is within specified session in_session(session) => session_start = na(time(timeframe.period, "0800-1000")) ? na : true session_start // Condition for buy signal (short SMA crosses over long SMA) within specified trading hours buy_signal = ta.crossover(short_sma, long_sma) // Condition for sell signal (short SMA crosses under long SMA) within specified trading hours sell_signal = ta.crossunder(short_sma, long_sma) // Function to exit the trade after specified number of candles var int trade_entry_bar = na var int trade_exit_bar = na if (buy_signal or sell_signal) trade_entry_bar := bar_index if (not na(trade_entry_bar)) trade_exit_bar := trade_entry_bar + exit_candles // Exit condition exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar)) // Execute trades if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) if (exit_condition) strategy.close("Buy") strategy.close("Sell") // Plot SMAs on the chart plot(short_sma, color=color.blue, linewidth=1) plot(long_sma, color=color.red, linewidth=1)