Стратегия тренда кросс-таймфрейма на основе скользящей средней и EMA


Дата создания: 2024-02-21 15:59:43 Последнее изменение: 2024-02-21 15:59:43
Копировать: 1 Количество просмотров: 713
1
Подписаться
1617
Подписчики

Стратегия тренда кросс-таймфрейма на основе скользящей средней и EMA

Обзор

Эта стратегия является стратегией, использующей среднюю линию и EMA для осуществления торговли трендами в течение различных временных рамок. Стратегия позволяет использовать SMA, EMA и K-линию для определения направления тенденции в сочетании с различными циклами для достижения низкого риска.

Стратегический принцип

Эта стратегия основана на сравнении средних линий SMA с тремя различными циклами для определения движения цены. Кроме того, в качестве вспомогательного метода используется EMA для определения направления объекта.

В частности, в стратегии используются средние значения SMA трех циклов - 3, 8 и 10 циклов соответственно. Цена считается пониженной, когда она находится ниже трех средних линий, и подает сигнал покупки, когда цена возвращается к средней линии.

Кроме того, в стратегии используется 5-циклическая EMA, которая помогает определить направление K-линии, чтобы обеспечить покупку вверх.

В управлении позицией, стратегия устанавливает количество выигрышей или максимальный период удержания позиции в качестве метода остановки убытков.

Анализ преимуществ

Эта стратегия в сочетании с средней линией различных временных периодов позволяет эффективно отфильтровывать рыночный шум, отслеживать средние и длинные тенденции. Параметры стратегии оптимизированы, и они хорошо работают в историческом отсчете.

Кроме того, при включении стратегии в оценку EMA можно избежать покупки в сторону снижения K-линии, что снижает ненужные потери в скольжениях.

В целом, эта стратегия стабильна, надежна и подходит для средне- и долговременного отслеживания.

Риски и противодействие

  • Эта стратегия чувствительна к параметрам, неправильная настройка трех циклов SMA или циклов EMA может привести к снижению качества торгового сигнала. Необходимо оптимизировать параметры для разных сортов.

  • Стратегия не учитывает значительные скачки или пробелы. Если существенные новости приводят к значительному скачку цены, это может привести к определенным потерям. Для предотвращения этого риска можно установить ценовой стоп.

Направление оптимизации

  • Можно рассмотреть возможность добавления дополнительных циклических параметров, формирующих сравнение EMA или SMA в нескольких временных рамках, что позволяет стратегии более точно судить о тенденции.

  • Можно протестировать ценовую установку стоп-лосса в определенном диапазоне, чтобы снизить убытки в экстремальных ситуациях при условии, что будет гарантирована прибыль.

  • Можно попытаться внедрить машинное обучение для динамической оптимизации параметров, чтобы параметры стратегии могли быть скорректированы в соответствии с реальными рыночными условиями.

Подвести итог

Стратегия в целом стабильна и надежна, используя сопоставление средних линий для определения направления тенденции, дополненной фильтрующими сигналами EMA. С помощью параметровой оптимизации и настройки ветроуправления можно еще больше повысить победную и доходность стратегии.

Исходный код стратегии
/*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=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))