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

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

Автор:Чао Чжан, Дата: 2024-09-26 16:12:36
Тэги:HMASLТП

img

Обзор

Adaptive Price-Crossing Moving Average Trading Strategy - это количественный торговый метод, основанный на Hull Moving Average (HMA). Эта стратегия генерирует сигналы купли-продажи с использованием ценовых кроссоверов с HMA, реализуя при этом фиксированные уровни стоп-лосса и взятки прибыли для управления рисками и прибылью. Стратегия использует 104-периодную HMA в качестве основного индикатора, в сочетании с ценовыми кроссоверами для запуска сделок.

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

Основой этой стратегии является использование Hull Moving Average (HMA) в качестве основного индикатора. HMA - это продвинутая скользящая средняя, которая быстро реагирует на изменения цен при сокращении задержки. Логика стратегии следующая:

  1. Вычислить 104-периодную HMA.
  2. Откройте длинную позицию, когда цена пересечет HMA.
  3. Открыть короткую позицию, когда цена пересекает HMA.
  4. Установите фиксированные уровни стоп-лосса ($1,25) и прибыли ($37,5) для каждой сделки.
  5. Используйте 2 контракта на каждую сделку.

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

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

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

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

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

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

  1. Внедрение дополнительных индикаторов: комбинировать с другими техническими индикаторами (например, RSI или MACD), чтобы подтвердить сигналы и улучшить точность.
  2. Динамическая стоп-лосс/приобретение прибыли: корректировка уровней стоп-лосса и приобретения прибыли на основе волатильности рынка для адаптации к различным рыночным условиям.
  3. Добавить рыночные фильтры: включить фильтры силы тренда или волатильности, чтобы избежать торговли в неблагоприятных рыночных условиях.
  4. Оптимизация параметров HMA: тестирование различных периодов HMA для поиска наиболее подходящих параметров для конкретных рынков.
  5. Внедрить управление позициями: динамически корректировать размер сделки на основе рыночного риска и размера счета.
  6. Добавьте временные фильтры: избегайте торговли в периоды высокой волатильности рынка, например, во время выпуска важных экономических данных.

Резюме

Adaptive Price-Crossing Moving Average Trading Strategy - это простой, но эффективный количественный торговый метод. Используя преимущества Hull Moving Average, эта стратегия может улавливать рыночные тенденции, защищая при этом капитал с помощью фиксированных мер управления рисками. Хотя стратегия имеет некоторые потенциальные риски, ее можно дальнейшее улучшать и адаптировать посредством непрерывной оптимизации.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SHIESTD", overlay=true)

// Function to calculate Hull Moving Average (HMA)
hma(src, length) =>
    wma1 = ta.wma(src, length)
    wma2 = ta.wma(src, length / 2)
    hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length)))
    hma

// Parameters
hma_length = 104

// Calculate Hull Moving Average
hma_value = hma(close, hma_length)

// Plot HMA
plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2)

// Define SL and TP values in dollars
long_sl_amount = 1.25
long_tp_amount = 37.5
short_sl_amount = 1.25
short_tp_amount = 37.5

// Number of contracts
contracts = 2

// Function to calculate SL and TP prices based on entry price and dollar amounts
long_sl_price(entry_price) =>
    entry_price - long_sl_amount

long_tp_price(entry_price) =>
    entry_price + long_tp_amount

short_sl_price(entry_price) =>
    entry_price + short_sl_amount

short_tp_price(entry_price) =>
    entry_price - short_tp_amount

// Trading conditions
price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value)

// Long and Short Conditions based on price intersecting HMA
long_condition = ta.crossover(close, hma_value)
short_condition = ta.crossunder(close, hma_value)

// Track open positions
var bool long_open = false
var bool short_open = false

// Handle Long Positions
if (long_condition and not long_open)
    entry_price = close
    strategy.entry("Long", strategy.long, qty=contracts)
    strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price))
    long_open := true

// Handle Short Positions
if (short_condition and not short_open)
    entry_price = close
    strategy.entry("Short", strategy.short, qty=contracts)
    strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price))
    short_open := true

// Reset flags when the position is closed
if (strategy.opentrades == 0)
    long_open := false
    short_open := false


Связанные

Больше