
Обзор
Эта стратегия использует движущиеся средние с двумя различными циклами (MA) для создания торговых сигналов. Когда краткосрочный MA пересекает длительный MA снизу вверх, создается сигнал покупки; когда краткосрочный MA пересекает длительный MA снизу вверх, создается сигнал продажи.
Стратегический принцип
- Вычислить скользящую среднюю за два различных периода ((MA), один - краткосрочный MA, другой - долгосрочный MA.
- Когда краткосрочный МА пересекает долгосрочный МА снизу вверх, это указывает на то, что может быть сформирована тенденция к росту, что создает сигнал к покупке.
- Когда кратковременный МА пересекает длительный МА сверху вниз, это указывает на то, что может быть сформирована нисходящая тенденция, что создает сигнал продажи.
- Торговля на основе сигналов покупки и продажи, открытие позиции при появлении сигнала покупки, открытие позиции при появлении сигнала продажи.
Стратегические преимущества
- Простые и понятные: логика стратегии ясна, ее легко понять и реализовать.
- Следить за тенденциями: с помощью перекрестных МА можно лучше адаптироваться к различным тенденциям рынка.
- Гибкость параметров: можно корректировать циклические параметры краткосрочных и долгосрочных МА в зависимости от различных рынков и временных циклов для оптимизации эффективности стратегии.
Стратегический риск
- Рынок в колебаниях: в колебаниях частое пересечение МА может привести к множеству ложных сигналов, что приводит к большему количеству убыточных сделок.
- Задержка тренда: MA является отстающим показателем, поэтому в начале изменения тренда стратегия может пропустить часть прибыли.
- Параметровая оптимизация: различные параметры могут существенно повлиять на эффективность стратегии. Параметровая оптимизация требует большого количества исторических данных и вычислительных ресурсов.
Направление оптимизации стратегии
- Добавление фильтрации тренда: после создания сигнала перекрестного MA, можно провести повторную подтверждение с помощью других трендовых показателей (например, MACD, DMI и т. Д.), чтобы отфильтровать некоторые ложные сигналы.
- Оптимизация стоп-лосса: разумная установка стоп-лосса, которая позволяет максимально снизить потери при задержке тренда, чтобы прибыль бежала.
- Оптимизация динамических параметров: в зависимости от различных состояний рынка, динамически корректируйте параметры цикла MA в соответствии с текущими рыночными характеристиками.
- Комбинирование других сигналов: сочетание MA с другими техническими индикаторами (например, RSI, BRI и т. д.) в более надежный торговый сигнал.
Подвести итог
Двухлинейная перекрестная стратегия - это простая и удобная стратегия для отслеживания трендов, которая используется для захвата перехода тренда через перекрестные два различных циклических МА. Преимущества этой стратегии заключаются в логической четкости, четкости сигнала и применимости к трендовым рынкам. Однако в нестабильных рынках стратегия может производить больше ложных сигналов и убыточных сделок.
Исходный код стратегии
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Combined Strategy", overlay=true)
// Moving Averages Length Inputs
short_length = input.int(20, "Short MA Length")
long_length = input.int(50, "Long MA Length")
// Moving Averages
ma_short = ta.sma(close, short_length)
ma_long = ta.sma(close, long_length)
// Buy Condition (Moving Average Crossover)
buy_condition = ta.crossover(ma_short, ma_long)
plotshape(series=buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
// Sell Condition (Moving Average Crossover)
sell_condition = ta.crossunder(ma_short, ma_long)
plotshape(series=sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Strategy Entry and Exit
if (buy_condition)
strategy.entry("Buy", strategy.long)
if (sell_condition)
strategy.entry("Sell", strategy.short)
// Debug statements
if (buy_condition)
label.new(x=bar_index, y=low, text="Buy Signal", color=color.green, style=label.style_label_up)
if (sell_condition)
label.new(x=bar_index, y=high, text="Sell Signal", color=color.red, style=label.style_label_down)