Эта стратегия представляет собой многочасовую тенденционную систему, основанную на свечах Хайкина-Аши и экспоненциальных скользящих средних (EMA). Она сочетает в себе сглаживающие свойства свечей Хайкина-Аши с тенденционными возможностями скользящих средних в разных временных рамках, используя MACD в качестве дополнительного фильтра для точного улавливания рыночных тенденций. Стратегия использует иерархический дизайн временных рамок, вычисляя и проверяя сигналы в 60-минутных, 180-минутных и 15-минутных временных рамках.
Основная логика включает в себя несколько ключевых компонентов:
Эта стратегия строит полную тенденцию после торговой системы с использованием многочасовых систем Хайкина-Аши и EMA в сочетании с фильтрацией MACD. Дизайн тщательно учитывает надежность сигнала и стабильность системы, способную адаптироваться к различным рыночным условиям с помощью механизмов оптимизации параметров и контроля рисков. Основные сильные стороны стратегии заключаются в механизмах сглаживания сигнала и многократной проверки, в то время как внимание должно быть уделено нестабильным рыночным рискам и вопросам оптимизации параметров.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © tradingbauhaus //@version=5 strategy("Heikin Ashi Candle Time Frame @tradingbauhaus", shorttitle="Heikin Ashi Candle Time Frame @tradingbauhaus", overlay=true) // Inputs res = input.timeframe(title="Heikin Ashi Candle Time Frame", defval="60") hshift = input.int(1, title="Heikin Ashi Candle Time Frame Shift") res1 = input.timeframe(title="Heikin Ashi EMA Time Frame", defval="180") mhshift = input.int(0, title="Heikin Ashi EMA Time Frame Shift") fama = input.int(1, title="Heikin Ashi EMA Period") test = input.int(1, title="Heikin Ashi EMA Shift") sloma = input.int(30, title="Slow EMA Period") slomas = input.int(1, title="Slow EMA Shift") macdf = input.bool(false, title="With MACD filter") res2 = input.timeframe(title="MACD Time Frame", defval="15") macds = input.int(1, title="MACD Shift") // Heikin Ashi calculation var float ha_open = na ha_close = (open + high + low + close) / 4 ha_open := na(ha_open[1]) ? (open + close) / 2 : (ha_open[1] + ha_close[1]) / 2 ha_high = math.max(high, math.max(ha_open, ha_close)) ha_low = math.min(low, math.min(ha_open, ha_close)) // Adjusted Heikin Ashi Close for different timeframes mha_close = request.security(syminfo.tickerid, res1, ha_close[mhshift]) // MACD calculation [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) macdl = request.security(syminfo.tickerid, res2, macdLine[macds]) macdsl = request.security(syminfo.tickerid, res2, signalLine[macds]) // Moving Averages fma = ta.ema(mha_close[test], fama) sma = ta.ema(ha_close[slomas], sloma) plot(fma, title="Heikin Ashi EMA", color=color.green, linewidth=2) plot(sma, title="Slow EMA", color=color.red, linewidth=2) // Strategy Logic golong = ta.crossover(fma, sma) and (macdl > macdsl or not macdf) goshort = ta.crossunder(fma, sma) and (macdl < macdsl or not macdf) // Plot Shapes for Buy/Sell Signals plotshape(golong, color=color.green, text="Buy", style=shape.triangleup, location=location.belowbar) plotshape(goshort, color=color.red, text="SELL", style=shape.triangledown, location=location.abovebar) // Strategy Orders strategy.entry("Long", strategy.long, when=golong) strategy.close("Long", when=goshort) strategy.entry("Short", strategy.short, when=goshort) strategy.close("Short", when=golong) // Alerts alertcondition(golong, "Heikin Ashi BUY", "") alertcondition(goshort, "Heikin Ashi SELL", "")