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

HMA SL TP
Дата создания: 2024-09-26 16:12:36 Последнее изменение: 2024-09-26 16:12:36
Копировать: 2 Количество просмотров: 441
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

  1. Вычислить HMA на 104 цикла.
  2. Когда цена пересекает HMA вверх, открывайте позицию и делайте больше.
  3. Позиция открывается, когда цена пересекает HMA вниз.
  4. На каждой сделке устанавливается фиксированный стоп-лост ($1.25) и стоп-стоп ($37.5) уровней.
  5. Каждая сделка использует два контракта.

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

Стратегические преимущества

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

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

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

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

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

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

Стратегия самостоятельной торговли по цене с перекрестной равномерной линией является простым и эффективным методом количественной торговли. Используя преимущества 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