
Strategi ini ialah aliran tempoh berbilang masa mengikut sistem berdasarkan persilangan batang lilin terlicin (Heikin-Ashi) dan purata bergerak eksponen (EMA). Dengan menggabungkan ciri pelicinan batang lilin Heikin-Ashi dan keupayaan menjejak arah aliran purata bergerak dalam tempoh masa yang berbeza, dan menggunakan penunjuk MACD sebagai penapis, penangkapan arah aliran pasaran yang tepat boleh dicapai. Strategi ini menggunakan reka bentuk hierarki tempoh masa, dan melakukan pengiraan dan pengesahan isyarat dalam tiga tempoh masa: 60 minit, 180 minit dan 15 minit.
Logik teras strategi merangkumi bahagian penting berikut:
Strategi ini menggunakan sistem Heikin-Ashi dan EMA berbilang tempoh masa digabungkan dengan penapis MACD untuk membina sistem perdagangan mengikut arah aliran yang lengkap. Reka bentuk strategi mempertimbangkan sepenuhnya kebolehpercayaan isyarat dan kestabilan sistem, dan boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza melalui pengoptimuman parameter dan penambahbaikan mekanisme kawalan risiko. Kelebihan teras strategi terletak pada kelancaran isyarat dan mekanisme pengesahan berganda, tetapi pada masa yang sama, perhatian juga harus diberikan kepada risiko pasaran yang tidak menentu dan isu pengoptimuman parameter.
/*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", "")