Chiến lược này là một hệ thống theo xu hướng nhiều khung thời gian dựa trên các cây nến Heikin-Ashi và chéo trung bình chuyển động theo cấp số (EMA). Nó kết hợp các tính chất làm mịn của các cây nến Heikin-Ashi với khả năng theo xu hướng của các đường trung bình chuyển động trên các khung thời gian khác nhau, sử dụng MACD như một bộ lọc bổ sung để nắm bắt chính xác xu hướng thị trường. Chiến lược sử dụng thiết kế khung thời gian phân cấp, tính toán và xác nhận các tín hiệu trên các khung thời gian 60 phút, 180 phút và 15 phút.
Logic cốt lõi bao gồm một số thành phần chính:
Chiến lược này xây dựng một hệ thống giao dịch theo xu hướng hoàn chỉnh bằng cách sử dụng các hệ thống Heikin-Ashi và EMA nhiều khung thời gian kết hợp với lọc MACD. Thiết kế xem xét kỹ lưỡng độ tin cậy tín hiệu và sự ổn định của hệ thống, có khả năng thích nghi với các môi trường thị trường khác nhau thông qua tối ưu hóa tham số và cơ chế kiểm soát rủi ro.
/*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", "")