Эта стратегия является стратегией торговли короткой линией, основанной на индикаторе Hull Moving Average. Стратегия использует Hull Moving Average для формирования сигнала покупки и продажи, которая относится к стратегии отслеживания тенденций.
Эта стратегия основана на индикаторе Hull Moving Average, который состоит из двух движущихся средних. Сначала рассчитывается средняя движущаяся средняя цены nma, с периодом hullperiod. Затем рассчитывается быстрая движущаяся средняя цены n2ma, с периодом nma.
Для отфильтрования некоторых ложных сигналов в стратегии также введена линия Hull ((Hull_Line). Линия Hull является линейной регрессией, которая вычисляет разницу между nma и n2ma. Когда цена отклоняется от линии Hull, стратегия пропускает сигнал о покупке или продаже.
В частности, правила тактики следующие:
Вычислить nma, период hullperiod
Вычислить n2ma, цикл - половина цикла nma
Рассчитайте разницу между n2ma и nma
Hull_Line - переходящая средняя для диффикции с периодом sqrt{\displaystyle \sqrt{\mathrm {hull} }
Сигнал “купить” появляется, когда цена пересекает линию “хулл”
Сигнал продажи появляется, когда цена пересекает линию Hull
Если цена отклоняется от линии Hull, пропустите сигнал
При входе в определенную пропорциональную позицию, при использовании стоп-убытков на выезде
Эта стратегия имеет следующие преимущества:
На основе Hull Moving Average можно быстро определить тенденцию, и она будет зависеть от динамики.
Фильтрация ложных сигналов с помощью Hull-кабеля для улучшения качества сигнала
Хорошее соотношение вывода и прибыли, подходящее для коротких операций
Гибкость в регулировании параметров, адаптация к различным рыночным условиям
Использование реверсивной остановки, которая позволяет своевременно остановить убытки и контролировать риск
Системные риски, связанные с сезонностью, которые можно избежать в определенный период времени
Однако эта стратегия также несет в себе некоторые риски:
Трендовые стратегии не позволяют торговать круглосуточно
Когда тенденция изменится, будет больше потерь
Система подвижных средних задерживается и не может вовремя зафиксировать переломные моменты
Частые короткие транзакции и высокие комиссионные
Неправильная настройка параметров может привести к падению доходов на рынке волатильности
В связи с вышеуказанными рисками можно принять следующие меры по их борьбе:
Мартингельская стоп-стратегия для борьбы с единичными потерями
Оптимизация параметров, тестирование их устойчивости в различных рыночных условиях
Показатели трендового анализа, чтобы избежать реверсивной борьбы с падением
Увеличение срока хранения и снижение частоты торгов
Эта стратегия также может быть оптимизирована в следующих аспектах:
В сочетании с динамическими показателями, определить начальную точку тренда, лучшее вхождение в строй
Добавление моделей машинного обучения, которые помогут определить направление и силу тенденций
Использование адаптивных параметров для корректировки параметров в соответствии с рынком в реальном времени
Конфигурация системы Hull с несколькими временными периодами и различными позициями в разных периодах
Вместе с энергетическими показателями объема торгов, избегайте ложных прорывов с недостаточным количеством энергии
Добавление модуля управления позициями на основе волатильности, динамическая коррекция позиций в соответствии с волатильностью
Hull Moving Average Oscillating Trading Strategy в целом является очень практичной стратегией слежения за короткой линией. Она использует систему 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