
Anda tahu, taktik ini adalah seperti membuat carta yang menari di atas kayu yang seimbang! Ia mengubah carta K biasa menjadi lebih halus Heiken Ashi, dan kemudian berkerjasama dengan peta awan Ichimoku sebagai garis panduan, yang merupakan “skating skating dua orang” dalam bidang analisis teknikal.
Inti strategi ini adalah “sistem penapisan tiga”, sama ketatnya seperti anda memilih objek alat detektor jantung! Pertama, penapisan Heiken Ashi mesti berada di sisi yang betul dari garis dasar Ichimoku (ini adalah ambang asas); kedua, 200-siklus EMA memastikan anda mengikuti trend besar (jangan melawan arus); dan terakhir, Ichimoku berada di belakang penapis untuk memastikan arah momentum betul (mengelakkan lubang pecah palsu).
Ia seperti memandu kereta: lampu hijau menyala (sinyal HA), keadaan jalan raya baik (penapis trend), dan tiada kenderaan yang bergerak ke belakang di hadapan (penegasan berpatah balik). Tiga syarat yang dipenuhi untuk memberi isyarat perdagangan!
Tempat paling bijak dalam strategi ini ialah menggunakan ATR (Average True Range) untuk menetapkan stop loss. Ia akan menyesuaikan diri secara automatik dengan turun naik pasaran, seperti sistem jelajah auto-adaptasi dalam kereta. Apabila pasaran bergelombang besar, jarak stop loss akan meluas secara automatik; apabila turun naik kecil, stop loss akan ketat.
Lebih hebat lagi, ia juga menggunakan pelbagai bingkai masa: ATR dalam bingkai masa yang tinggi digunakan untuk menghentikan (membuat keuntungan berjalan dengan baik), ATR dalam bingkai masa yang rendah digunakan untuk menghentikan kerugian (mempertahankan dana perlindungan kerugian yang cepat).
Strategi ini sangat sesuai untuk keadaan pasaran yang jelas trend. Apabila pasaran bergoyang di sisi, disarankan untuk menunggu sementara, kerana Heiken Ashi mudah menghasilkan isyarat palsu di pasaran yang bergoyang. Skenario penggunaan terbaik adalah: 4 jam atau carta kitaran pasangan mata wang utama, terutama pada tahap pengesahan trend selepas pengumuman data ekonomi penting.
Ingatlah bahawa tidak ada strategi yang boleh digunakan untuk semua perkara! Strategi ini mempunyai kekuatan untuk menangkap trend jangka panjang dan menengah, dan jika anda seorang peniaga yang suka berdagang garis pendek, anda mungkin perlu menyesuaikan parameter atau mencari strategi lain.
/*backtest
start: 2024-10-20 00:00:00
end: 2025-10-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MahdiSalari8
//@version=6
strategy("Heiken Ashi Bas", overlay=true,
default_qty_type=strategy.fixed,
default_qty_value=0.1,
commission_type=strategy.commission.percent,
commission_value=0.07,
initial_capital=10000000,
pyramiding=0) // Changed to 0
// Inputs
useTrendFilter = input.bool(true, "Use 200 EMA Trend Filter", group="Filters")
showSignals = input.bool(true, "Show Buy/Sell Signals", group="Visuals")
showEma = input.bool(false, "Show 200 EMA", group="Visuals")
atrPeriod = input.int(14, "ATR Period", minval=1, group="Risk Management")
htf = input.timeframe("5", "Higher Timeframe for TP", group="Timeframes")
ltf = input.timeframe("1", "Lower Timeframe for SL", group="Timeframes")
tpMultiplier = input.float(2.0, "TP Multiplier", minval=0.1, group="Risk Management")
slMultiplier = input.float(1.0, "SL Multiplier", minval=0.1, group="Risk Management")
// Ichimoku Divergence Settings
useDivergenceFilter = input.bool(true, "Use Ichimoku Divergence Filter", group="Ichimoku Divergence")
showDivergenceLine = input.bool(true, "Show Divergence Line", group="Ichimoku Divergence")
divergenceLookback = input.int(2, "Divergence Lookback (bars)", minval=1, maxval=20, group="Ichimoku Divergence")
divergenceLineWidth = input.int(5, "Divergence Line Width", minval=1, maxval=5, group="Ichimoku Divergence")
// Heiken Ashi Calculation
var float haOpen = na
var float haClose = na
var float haHigh = na
var float haLow = na
haClose := (open + high + low + close) / 4
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh := math.max(high, math.max(haOpen, haClose))
haLow := math.min(low, math.min(haOpen, haClose))
// Ichimoku Baseline (Kijun-sen)
kijunPeriod = 26
kijunSen = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2
// Ichimoku Baseline Divergence Calculation
currentBaseline = kijunSen
pastBaseline = kijunSen[divergenceLookback]
// Calculate slope (divergence)
baselineSlope = (currentBaseline - pastBaseline) / divergenceLookback
// Determine bullish/bearish divergence (exclude when slope is 0)
bullishDivergence = baselineSlope > 0
bearishDivergence = baselineSlope < 0
slopeIsZero = baselineSlope == 0
// Trend Filter (200 EMA)
ema200 = ta.ema(close, 200)
// ATR Calculation for different timeframes
htfAtr = request.security(syminfo.tickerid, htf, ta.atr(atrPeriod))
ltfAtr = request.security(syminfo.tickerid, ltf, ta.atr(atrPeriod))
// Enhanced Entry Conditions with Divergence Filter (exclude when slope is 0)
longCondition = haClose > kijunSen and
haClose[1] >= kijunSen[1] and
haClose > haOpen and
(haHigh - haClose) >= (haClose - haOpen) * 0.3 and
(not useTrendFilter or close > ema200) and
(not useDivergenceFilter or (bullishDivergence and not slopeIsZero))
shortCondition = haClose < kijunSen and
haClose[1] <= kijunSen[1] and
haClose < haOpen and
(haClose - haLow) >= (haOpen - haClose) * 0.3 and
(not useTrendFilter or close < ema200) and
(not useDivergenceFilter or (bearishDivergence and not slopeIsZero))
// Dynamic TP/SL based on ATR
longTp = close + (htfAtr * tpMultiplier)
longSl = close - (ltfAtr * slMultiplier)
shortTp = close - (htfAtr * tpMultiplier)
shortSl = close + (ltfAtr * slMultiplier)
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", limit=longTp, stop=longSl)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", limit=shortTp, stop=shortSl)
// Plotting
plot(kijunSen, color=color.blue, title="Ichimoku Baseline", linewidth=2, display=display.all)
// Plot Divergence Line (gray when slope is 0)
plot(showEma ? ema200 : na, color=color.purple, title="200 EMA", linewidth=1, display=display.all)
// Heiken Ashi Candles with 25% opacity
candleColor = haClose > haOpen ? color.new(color.green, 75) : color.new(color.red, 75)
plotcandle(haOpen, haHigh, haLow, haClose, title="Heiken Ashi", color=candleColor, wickcolor=candleColor, bordercolor=candleColor, display=display.all)
// Plot Buy/Sell Signals with labelup/labeldown shapes
plotshape(showSignals and longCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="Buy Signal", display=display.all)
plotshape(showSignals and shortCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, title="Sell Signal", display=display.all)
// Plot TP/SL levels - TP as lines with breaks, SL hidden by default
plot(strategy.position_size > 0 ? longTp : na, "Long TP", color=color.green, style=plot.style_linebr, linewidth=1, display=display.all)
plot(strategy.position_size > 0 ? longSl : na, "Long SL", color=color.red, style=plot.style_linebr, linewidth=1, display=display.none)
plot(strategy.position_size < 0 ? shortTp : na, "Short TP", color=color.green, style=plot.style_linebr, linewidth=1, display=display.all)
plot(strategy.position_size < 0 ? shortSl : na, "Short SL", color=color.red, style=plot.style_linebr, linewidth=1, display=display.none)
// Alerts
alertcondition(longCondition, "Long Signal", "HA Cross Above Kijun-sen with Bullish Divergence")
alertcondition(shortCondition, "Short Signal", "HA Cross Below Kijun-sen with Bearish Divergence")