Стратегия трейдинга с движущейся средней колеблеткой корпуса

Автор:Чао Чжан, Дата: 2023-10-07 15:24:31
Тэги:

Обзор

Эта стратегия является краткосрочной торговой стратегией, основанной на индикаторе Hull Moving Average. Стратегия использует золотой крест и мертвый крест линий Hull Moving Average для генерации торговых сигналов, относящихся к стратегии, следующей за трендом.

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

Эта стратегия основана в основном на индикаторе Hull Moving Average. Линия Hull Moving Average состоит из двух скользящих средних. Сначала она вычисляет медианную скользящую среднюю линию nma цены, с периодом hullperiod. Затем она вычисляет быструю скользящую среднюю линию n2ma, с периодом половины nmas. Когда n2ma пересекает nma, генерируется сигнал покупки. Когда n2ma пересекает ниже nma, генерируется сигнал продажи.

Для отфильтрации некоторых ложных сигналов стратегия также вводит линию Hull (Hull_Line). Линия Hull является результатом линейной регрессии разницы между nma и n2ma. Когда есть расхождение между ценой и линией Hull, стратегия пропустит торговый сигнал.

В частности, правила стратегии следующие:

  1. Вычислить nma с периодом корпуса

  2. Вычислить n2ma с периодом половины периода nma

  3. Вычислите разницу между n2ma и nma

  4. Moving average the diff with period sqrt ((hullperiod), получает and get the Hull Line Hull_Line (получает и получает Hull_Line)

  5. Когда цена пересекает линию Халла, генерируется сигнал покупки.

  6. Когда цена переходит ниже линии корпуса, генерируется сигнал продажи.

  7. Если есть расхождение между ценой и Hull Line, пропустите сигнал

  8. Вход с определенным процентом позиции, принятие выхода стоп-лосс

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

Преимущества этой стратегии включают:

  1. Основанный на Hull Moving Average, он может быстро улавливать тенденцию и следовать тренду

  2. Используйте Hull Line для фильтрации ложных сигналов и улучшения качества сигнала

  3. Хорошее соотношение риск-прибыль и привлечение, подходящее для краткосрочной торговли

  4. Гибкая настройка параметров, адаптируемая к различным рыночным условиям

  5. Использовать обратный стоп-потеря, может остановить потерю вовремя и контролировать риски

  6. Сочетание сезонности для предотвращения системных рисков в конкретные периоды времени

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

Эта стратегия также сопряжена с некоторыми рисками:

  1. Тенденционная стратегия, не может торговать весь день

  2. Большие убытки при обратном тренде

  3. Отставание от скользящих средних значений, невозможность своевременно зафиксировать переломные моменты

  4. Высокая частота торговли приводит к более высоким затратам на торговлю

  5. Ненадлежащие параметры могут привести к снижению рентабельности на рынках с ограниченным диапазоном

Чтобы контролировать эти риски, мы можем принять следующие меры:

  1. Принять стратегию стоп-лосса мартингейла для контроля одиночных потерь

  2. Оптимизация параметров и надежность испытаний в различных рыночных условиях

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

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

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

Эта стратегия также может быть оптимизирована в следующих аспектах:

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

  2. Добавление моделей машинного обучения для оценки направления и силы тренда

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

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

  5. Комбинировать показатели объема для предотвращения ложных прорывов с недостаточной динамикой

  6. Добавление модели размещения позиций на основе волатильности для динамической корректировки размеров позиций на основе волатильности

Резюме

Стратегия Hull Moving Average Swing Trading - это эффективная краткосрочная стратегия следования тренду. Она использует систему Hull Moving Average для определения направления тренда с целью следования тренду. По сравнению с едиными системами движущихся средних, она имеет более высокое качество сигнала и гибкость параметров. Преимущество этой стратегии заключается в быстром улавливании изменений тренда с относительно небольшими снижениями.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//                               Hull Moving Average Swing Trader by SEASIDE420
strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1)
price = input(open, type=input.source, title="Price data")
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2017)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
n2ma = 2 * wma(price, round(hullperiod / 2))
nma = wma(price, hullperiod)
diff = n2ma - nma
sqn = round(sqrt(hullperiod))
n2ma1 = 2 * wma(price[1], round(hullperiod / 2))
nma1 = wma(price[1], hullperiod)
diff1 = n2ma1 - nma1
n1 = wma(diff, sqn)
n2 = wma(diff1, sqn)
Hull_Line = n1 / n1 * n2
Hull_retracted = if n1 > n2
    Hull_retracted = Hull_Line - 2
else
    Hull_retracted = Hull_Line + 2
c1 = Hull_retracted + n1 - price
c2 = Hull_retracted - n2 + price
c4 = n1 > n2 ? color.green : color.red
c2p = plot(c2, color=color.black, linewidth=1)
c3p = plot(price, color=color.black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
//plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4)
if price < c2
    strategy.close("BUY", when=window())
if price > c2
    strategy.close("SELL", when=window())
if price > c2 and price[1] > c1
    strategy.entry("BUY", strategy.long, when=window())
if price < c1 and price[1] < c2
    strategy.entry("SELL", strategy.short, when=window())  //        /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D


Больше