В процессе загрузки ресурсов... загрузка...

ЕМА23/EMA50 Двойная скользящая средняя кроссоверная количественная стратегия торговли

Автор:Чао Чжан, Дата: 2024-04-26 15:29:21
Тэги:ЕМАEMA23EMA50

img

Обзор

Эта стратегия основана на перекрестных сигналах EMA23 и EMA50 для торговли. Когда EMA23 пересекается выше EMA50, она генерирует сигнал покупки, а когда пересекается ниже, она генерирует сигнал продажи. Стратегия также реализует стоп-лосс для длинных позиций, когда цена падает ниже EMA50 и для коротких позиций, когда цена поднимается выше EMA50. Кроме того, стратегия вновь входит на рынок, когда цена движется назад выше EMA50. Стратегия подходит для 30-минутного периода времени.

Принципы стратегии

  1. Вычислите две экспоненциальные скользящие средние: EMA23 и EMA50.
  2. Создать сигнал покупки, когда EMA23 пересекает EMA50, и сигнал продажи, когда EMA23 пересекает EMA50.
  3. Для длинных позиций применять стоп-лосс, если цена падает ниже EMA50 и цена закрытия ниже EMA50 предыдущей свечи.
  4. Для коротких позиций применять стоп-лосс, если цена поднимается выше EMA50 и цена закрытия выше EMA50 предыдущей свечи.
  5. Для длинных позиций вновь выходить на рынок, если цена опять перемещается выше EMA50, причем цена закрытия и высокая цена выше EMA50 и EMA23 выше EMA50.
  6. Для коротких позиций вновь выйти на рынок, если цена опять опустится ниже EMA50, при этом цена закрытия и низкая цена будут ниже EMA50 и EMA23 ниже EMA50.
  7. Установите уровень получения прибыли для длинных позиций в 1,6 раза выше вступительной цены, а для коротких позиций - в 0,75 раза выше вступительной цены.

Преимущества стратегии

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

Стратегические риски

  1. EMA, как индикатор, следующий за трендом, имеет отставание и может пропустить оптимальные точки входа.
  2. Размещение уровней стоп-лосса может быть не оптимизировано, что приводит к преждевременным стоп-аутам.
  3. Частая торговля может увеличить затраты на транзакции и повлиять на прибыльность.
  4. Стратегия может генерировать больше ложных сигналов на рыночном диапазоне.
  5. Фиксированные уровни прибыли могут ограничивать потенциал прибыли стратегии.

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

  1. Рассмотреть возможность внедрения других технических индикаторов для определения тренда и улучшения точек входа и выхода, таких как MACD, RSI и т.д.
  2. Оптимизировать размещение уровней стоп-лосса, учитывая использование показателей волатильности, таких как ATR, для динамической корректировки позиций стоп-лосса.
  3. Контролировать частоту торговли путем установления соответствующих условий фильтрации торговли для уменьшения ложных сигналов.
  4. Использовать различные параметры стратегии для рыночных диапазонов и тенденций.
  5. Увеличить гибкость уровней получения прибыли, например, динамически корректировать их в зависимости от волатильности рынка, соотношения риск-прибыль и т.д.

Резюме

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


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy", overlay=true)

// EMA 23 ve EMA 50'nin hesaplanması
ema23 = ta.ema(close, 23)
ema50 = ta.ema(close, 50)

// Ana alım kuralı: EMA 23 ve EMA 50'nin yukarı kesilmesi
buySignal = ta.crossover(ema23, ema50)

// Ana satış kuralı: EMA 23 ve EMA 50'nin aşağı kesilmesi
sellSignal = ta.crossunder(ema23, ema50)

// Long pozisyon stop seviyesi
longStopLoss = low < ema50 and close < ema50[1]

// Short pozisyon stop seviyesi
shortStopLoss = high > ema50 and close > ema50[1]

// Long pozisyon için tekrar giriş kuralı
longReEntry = high > ema50 and close > ema50 and close > ema50 and ema23 > ema50

// Short pozisyon için tekrar giriş kuralı
shortReEntry = low < ema50 and close < ema50 and close < ema50 and ema23 < ema50

// Long işlemde kar alma seviyesi (%60)
longTakeProfit = strategy.position_avg_price * 1.60

// Short işlemde kar alma seviyesi (%25)
shortTakeProfit = strategy.position_avg_price * 0.75

// Long işlem için yeniden giriş koşulu
longReEntryCondition = strategy.position_size <= 0 and longReEntry

// Short işlem için yeniden giriş koşulu
shortReEntryCondition = strategy.position_size >= 0 and shortReEntry

// Geriye dönük test için başlangıç tarihi (01.01.2022)
startDate = timestamp(2022, 01, 01, 00, 00)

if (time >= startDate)
    if (buySignal)
        strategy.entry("Buy", strategy.long)

    if (sellSignal)
        strategy.entry("Sell", strategy.short)

    if (strategy.position_size > 0 and (longStopLoss or close >= longTakeProfit))
        strategy.close("Buy")

    if (strategy.position_size < 0 and (shortStopLoss or close <= shortTakeProfit))
        strategy.close("Sell")

    if (longReEntryCondition)
        strategy.entry("Buy", strategy.long)

    if (shortReEntryCondition)
        strategy.entry("Sell", strategy.short)


Связанные

Больше