Стратегия торговли на основе двунаправленной скользящей средней Холла


Дата создания: 2023-12-11 11:30:15 Последнее изменение: 2023-12-11 11:30:15
Копировать: 0 Количество просмотров: 826
1
Подписаться
1621
Подписчики

Стратегия торговли на основе двунаправленной скользящей средней Холла

Обзор

Двунаправленная трейдинговая стратегия с подвижной средней Холла - это количественная торговая стратегия, которая использует подвижную среднюю Холла как торговый сигнал. Эта стратегия, основанная на методе использования единой подвижной средней в традиционном техническом анализе, использует подвижную среднюю Холла, чтобы покупать и продавать на прорыве.

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

В центре стратегии торговли ДВХМ является ДВХМ (Dual Hull Moving Average). ДВХМ состоит из трех линий, представляющих собой средние, верхние и нижние линии, которые представляют собой разные средние цены.

Средняя полоса:Mode{modeSwitch, src, len) Вперёд: HULL[0] Нижняя линия: HULL[2]

Функция Mode позволяет выбирать различные варианты Hull Moving Average, включая HMA, EHMA и THMA.

Стратегия использует среднюю полосу двунаправленных холевых скользящих средних для определения отношений цены и средней полосы и формирования торговых сигналов:

  • Когда цены поднимаются, делайте больше
  • “Всего на один день”, - говорит он.

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

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

Двунаправленная стратегия трейдинга с помощью холера имеет следующие преимущества:

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

  2. По сравнению с обычными скользящими средними, Hull Moving Average имеет меньшую задержку и может быстрее реагировать на изменения цен.

  3. Внедряет традиционные методы технического анализа, простые в понимании и подходят для автоматизации торгов.

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

  5. Настраиваемые типы и параметры Hull Moving Average, которые могут быть оптимизированы для различных сортов и временных рамок торгов.

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

Несмотря на много преимуществ, существуют некоторые риски, о которых следует помнить:

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

  2. Эта стратегия основана на следовании тренду и неэффективна при поперечном движении цены. Можно использовать другие индикаторы или механизмы для определения тренда.

  3. Сам Hull Moving Average также имеет отсталость, особенно в краткосрочной перспективе. Оптимизация параметров и комбинированные показатели могут быть частично решены.

  4. Частые торговые сигналы, способные к чрезмерной торговле. Надлежащее управление позициями и частота торгов.

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

Существует несколько основных направлений оптимизации стратегии торговли двунаправленными холлами:

  1. Оптимизация типов и параметров Hull Moving Averages, адаптация чувствительности средней полосы к различным видам торгов.

  2. Присоединение к механизму стоп-убытков. Trailing stop или нарастающий стоп, эффективно контролирующий одиночные потери.

  3. В сочетании с другими показателями, чтобы определить направление и силу тренда, избегайте подставки. Например, MACD, KD и т. Д.

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

  5. Объединение нескольких временных рамок. Используйте более высокие временные рамки для определения направления тенденций, чтобы избежать заблуждения от шума.

  6. Оптимизация логики выхода из игры. Может быть основана на формате свечи, чтобы увеличить определенность выхода из игры.

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

Двусторонняя стратегия трейдинга с подвижной средней Холла в целом является количественной стратегией построения торговых сигналов с использованием подвижной средней трендового индекса. По сравнению с традиционными подвижными средними, она реагирует быстрее и лучше отслеживает эффективность. Логика стратегии проста, ясна, проста в реализации и подходит для автоматизированной торговли.

Исходный код стратегии
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
//Converted to Strategy by DashTrader
strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close)
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na
      
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)


if HULL[0] > HULL[2] and testPeriod()
    strategy.entry("long", strategy.long)
if HULL[0] < HULL[2] and testPeriod()
    strategy.close("long")