Движущаяся средняя перекрестная тенденция в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-02-05 14:12:27
Тэги:

img

Обзор

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

Логика стратегии

Основной принцип этой стратегии заключается в том, чтобы судить о рыночных тенденциях с использованием экспоненциальных скользящих средних (EMAs) с различными параметрами. Стратегия определяет быструю 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))


Больше