Стратегия торговли двойной скобной скобной средней является количественной торговой стратегией, которая использует двойную скобную скобную среднюю в качестве торговых сигналов.
В основе стратегии торговли двойной скобной скобной средней является двойная скобная скобная средняя (DHMA). DHMA состоит из трех линий: средних, верхних и нижних рельсов, представляющих различные средние цены.
Средний рельс: режим ((modeSwitch, src, len)
Верхняя рельса: корпус[0]
Нижняя рельса: HULL[2]
Здесь функция Mode может выбирать между различными вариантами Hull MA, такими как HMA, EHMA или THMA. Src означает источник цены, а len - параметр периода.
Стратегия использует средний рельс DHMA в качестве отсчета для определения ценовых отношений и генерации торговых сигналов:
Другими словами, если цена закрытия текущей панели выше цены среднего рельса, выделите длинную позицию на следующей панели; если цена закрытия ниже, закрывайте длинную позицию на следующей панели.
Стратегия торговли двойной скользящей средней имеет следующие преимущества:
Использует механизм трех полос вместо одной скользящей средней линии для улучшения эффектов поддержки/сопротивления и отслеживания тренда.
По сравнению с обычными МА, скользящие средние Hull имеют меньшее отставание и лучше реагируют на изменения цен.
Использует традиционные методы технического анализа для легкого понимания, подходящий для торговли алгоритмами.
Логика проста и ясна, легко внедряется, подходит для высокочастотного алгоритмического трейдинга.
Настраиваемые типы и параметры Hull MA для оптимизации для различных продуктов и временных рамок.
Хотя стратегия имеет много преимуществ, она также несет некоторые риски:
Более высокие показатели могут возникнуть во время бурных рыночных сборов.
Стратегия в основном отслеживает тенденции, менее эффективная в плоские периоды.
В некоторых случаях, особенно в краткосрочной перспективе, задержка в управлении корпусом остается.
Частые сигналы могут привести к чрезмерной торговле.
Вот некоторые основные аспекты, которые необходимо оптимизировать для стратегии:
Оптимизировать типы и параметры Hull MA для тонкой настройки чувствительности среднего рельса для различных продуктов.
Добавьте механизмы остановки потери, такие как остановка отслеживания или инкрементальная остановка потери, чтобы контролировать сумму потери одной сделки.
Комбинировать с другими индикаторами для определения направления и силы тренда, избегая ловушек, например MACD, KD и т.д.
Добавление условий активации стратегии на основе количества сделок или коэффициента прибыли для контроля количества закрытий цикла, уменьшение выходов.
Используйте более высокие TF для определения общей тенденции, чтобы избежать шума.
Уточните логику входа, подтвердите вход с помощью шаблонов свечей, чтобы повысить уверенность в входе.
В целом, стратегия двойного корпуса движущихся средних - это количественный подход, использующий быстро реагирующие, тенденции, следующие за корпусом движущихся средних для построения торговых сигналов. По сравнению с традиционными МА, он имеет более быстрый ответ и лучшие возможности отслеживания. Логика стратегии проста и ясна, легко автоматизировать для алгоритмной торговли.
/*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")