Тенденционная стратегия, основанная на перекрестности HULL SMA и EMA

Автор:Чао Чжан, Дата: 2023-10-30 12:32:38
Тэги:

img

Обзор

Эта стратегия генерирует сигналы покупки и продажи путем расчета перекрестка между линией HULL Smoothed Moving Average и линией экспоненциальной скользящей средней для определения направления тренда рынка.

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

  1. Вычислить 5-периодный HULL Smoothed Moving Average (HULL SMA). HULL SMA реагирует быстрее на изменения цен, используя взвешенные скользящие средние и квадратный корень периода.

  2. Вычислите 5-периодный экспоненциальный скользящий средний (EMA). EMA придает большее значение недавним ценам и более чувствителен, чем SMA при отслеживании тренда.

  3. Создание сигналов покупки и продажи на основе перекрестного взаимодействия между HULL SMA и EMA.

  • Когда HULL SMA пересекает EMA, генерируется сигнал покупки, указывающий на то, что краткосрочная тенденция превышает долгосрочную тенденцию, что предполагает движение цены вверх.

  • Когда HULL SMA пересекается ниже EMA, генерируется сигнал продажи, указывающий на снижение краткосрочной тенденции, предполагающий движение цены вниз.

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

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

  1. HULL SMA чувствителен к изменениям цен и может обнаруживать изменения тренда раньше.

  2. EMA смягчает шум рынка и отслеживает долгосрочные тенденции.

  3. Сигналы перекрестного движения своевременно улавливают поворотные моменты тренда.

  4. Параметры могут регулироваться для различных временных рамок торговли.

  5. Гибко фиксирует тенденции вверх и вниз.

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

  1. Больше ложных сигналов может возникнуть на рынках с диапазоном.

  2. Невозможность определить силу тренда может привести к повторным потерям в слабых тенденциях.

  3. Движения цен между интервалами среднего значения могут быть упущены.

  4. Неправильные параметры влияют на качество сигнала.

  5. Высокая частота торговли увеличивает затраты и риски скольжения.

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

Руководство по оптимизации

  1. Добавьте такие индикаторы, как MACD, RSI для подтверждения сигнала.

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

  3. Оптимизировать параметры скользящей средней для лучших комбинаций.

  4. Использовать стоп-лосс для контроля потери одной сделки.

  5. Управлять частотой торговли и расходами.

  6. Включить анализ нескольких временных рамок для выявления тенденций в разных циклах.

  7. Разработать программы автоматической оптимизации параметров.

Резюме

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


/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © spiritedPerson95700

inSession = true


HULL_INP = input.int(5, "Hull EMA Value")
EMA_INP = input(5, "EMA Value")

/// Indicator
HULL_EMA = ta.hma(close, HULL_INP)
EMA = ta.ema(close, EMA_INP)

prevSignal = ''
if (prevSignal == '')  
    prevSignal := HULL_EMA > EMA ? 'buy' : 'sell'

/// buy and sell signal
buy = ta.crossover(HULL_EMA, EMA)
short = ta.crossover(EMA, HULL_EMA)

sell = short
cover = buy

if inSession
    if buy 
        prevSignal := 'na'
        strategy.entry("long", direction = strategy.long, comment = "Buy")

    if sell
        prevSignal := 'na'
        strategy.close("long", comment = "Sell")

    if short
        strategy.entry("short", direction = strategy.short, comment = "Short")

    if cover
        strategy.close("short", comment = "Cover")


plot(HULL_EMA, color = color.green)
plot(EMA, color = color.blue)

// if ( hour(time) == 15 and minute(time) > 25  )  
//     strategy.close("long", comment="EOD")
//     strategy.close("short", comment="EOD")
//     buy := false
//     sell := false
//     prevSignal := ''


Больше