Стратегия следования за трендом на основе пересечения скользящих средних


Дата создания: 2024-02-05 14:12:27 Последнее изменение: 2024-02-05 14:12:27
Копировать: 1 Количество просмотров: 543
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе пересечения скользящих средних

Обзор

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

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

Ключевым принципом стратегии является использование различных параметров для оценки рыночных тенденций с использованием индексальных движущихся средних (EMA). В стратегии определены быстрая EMA и медленная EMA. Когда быстрая EMA пересекает медленную EMA снизу, это означает, что рыночная тенденция становится бычьей; когда быстрая EMA пересекает медленную EMA снизу, это означает, что рыночная тенденция становится медленной.

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

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

Эта стратегия имеет следующие преимущества:

  1. Стратегическая логика проста, понятна, легко понятна и подходит для начинающих;
  2. Используйте EMA для сглаживания цен, чтобы эффективно отфильтровать рыночный шум и идентифицировать тенденции;
  3. Возможность гибко адаптировать параметры к рынку с разными циклами;
  4. Можно расширять стратегию на многократные версии для повышения стабильности.

Анализ рисков

Однако эта стратегия также несет в себе некоторые риски:

  1. В условиях кризиса может произойти многократная остановка, что может повлиять на прибыль;
  2. Невозможность эффективно определить тип тренда (бык и медведь), что может привести к серьезным убыткам;
  3. Неправильная настройка параметров EMA может привести к слишком высокой частоте торгов или задержке в распознавании.

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

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

Эта стратегия также может быть оптимизирована в следующих аспектах:

  1. Увеличение оценки типов трендов, чтобы избежать обратного открытия позиций;
  2. Улучшение качества сигнала с использованием более длительных временных циклов.
  3. Динамическая коррекция коэффициента остановки убытков, оптимизация точки выхода;
  4. В сочетании с другими показателями, фильтрующие сигналы, уменьшают ошибочную торговлю.

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

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

Исходный код стратегии
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Zhukov trade', overlay=true, calc_on_every_tick=true, currency=currency.USD)

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=10, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=20, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')

// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2030 23:59'))

// Set take profit and stop loss percentages
take_profit_percent = input(1.0, title ="Take Profit Percent") / 100.0
stop_loss_percent = input(1.0, title ="Stop Loss Percent") / 100.0

// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close, 200)

// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)

// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'

// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA) and inDateRange
shortCondition = ta.crossunder(fastEMA, slowEMA) and inDateRange

// ORDERS:

// Submit entry (or reverse) orders
if longCondition and longOK
    strategy.entry(id='long', direction=strategy.long)

if shortCondition and shortOK
    strategy.entry(id='short', direction=strategy.short)

// Exit orders
if strategy.position_size > 0 and longOK
    strategy.exit(id='exit long', from_entry='long', limit=strategy.position_avg_price * (1 + take_profit_percent), stop=strategy.position_avg_price * (1 - stop_loss_percent))

if strategy.position_size < 0 and shortOK
    strategy.exit(id='exit short', from_entry='short', limit=strategy.position_avg_price * (1 - take_profit_percent), stop=strategy.position_avg_price * (1 + stop_loss_percent))