Эта стратегия основана на перекрестных сигналах Hull Moving Average (HMA). Hull Moving Average - это технический индикатор, разработанный Аланом Халлом, который направлен на сокращение отставания традиционных скользящих средних.
HMA рассчитывается следующим образом:
По сравнению с простой скользящей средней и взвешенной скользящей средней, скользящая средняя Hull имеет меньшее отставание, поэтому она может быстрее реагировать на изменения цен, улучшая реакцию стратегии.
Используя перекресток двух HMA с разными периодами для генерации сигналов, можно эффективно отфильтровать много шума и ложных сигналов, повышая надежность сигналов.
Параметры регулируемы, и путем настройки параметров периода HMA стратегия может быть адаптирована к различным рынкам и торговым инструментам.
Движущаяся средняя Hull является отстающим показателем, который может генерировать ложные сигналы на ранних стадиях переворота тренда.
Неправильный выбор параметров может привести к плохой эффективности стратегии. Если период слишком длинный, стратегия будет медленно реагировать; если период слишком короткий, это может привести к чрезмерным ложным сигналам.
Как и все стратегии, основанные на одном индикаторе, эта стратегия может плохо работать на боковых рынках, генерируя больше ложных сигналов и проигрышных сделок.
В качестве фильтров следует рассмотреть возможность введения других технических показателей или фундаментальных факторов, таких как объем торговли, индикаторы тренда и т.д., для дальнейшего подтверждения достоверности перекрестных сигналов HMA.
Для оптимизации параметров могут использоваться такие методы, как генетические алгоритмы и поиск сетки, чтобы найти оптимальную комбинацию параметров на исторических данных, которая лучше всего подходит для текущего рынка.
В стратегию должны быть включены механизмы стоп-лосса и тека-прибыли для контроля риска и доходности каждой сделки.
Принимая во внимание тенденции на рынке, путем внедрения индикаторов для оценки тенденций на рынке можно торговать на трендовых рынках и избегать боковых рынков.
Стратегия Hull Moving Average Crossover - это простая и удобная в использовании стратегия торговли. Благодаря быстрому реагированию HMA, она может своевременно отслеживать изменения цены. Однако, как и все стратегии, она также имеет свои ограничения, и на ее производительность будут влиять типы рынка и выбор параметров. В практическом применении она может быть объединена с другими методами анализа для дальнейшего подтверждения сигналов. В то же время разумные меры контроля риска, такие как стоп-лосс и взят-прибыль, управление позициями и т. д., также являются незаменимыми частями для стабильной работы стратегии.
/*backtest start: 2023-03-16 00:00:00 end: 2024-03-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Basic Hull Ma Pack tinkered by InSilico strategy("RKTD BETA - Hull Suite by InSilico", overlay=true) //INPUT src = input(close, title="Source") modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"]) length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)") lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)") useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)") htf = input("240", title="Higher timeframe", type=input.resolution) 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) // Alert Messages longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}' shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}' //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, int(length * lengthMult)) HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull 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) alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.") alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.") ///< Ending Filler fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color = candleCol ? (switchColor ? hullColor : na) : na) // Define Buy and Sell Conditions based on crossovers buyCondition = crossover(MHULL, SHULL) sellCondition = crossunder(MHULL, SHULL) // Plotting the Hull Moving Average (HMA) plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch) plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch) fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch) // Execute Strategy based on Buy and Sell Conditions strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage) strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage) // Additional elements like bar coloring remain unchanged barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)