
Strategi perdagangan trend hentian Heikin Ashi ATR yang disesuaikan dengan kadar turun naik adalah kaedah perdagangan sistematik yang direka khusus untuk mengenal pasti trend dan pengurusan risiko di pasaran kewangan. Strategi ini berdasarkan kepada teknik pemetaan Heikin Ashi untuk menyaring kebisingan pasaran, digabungkan dengan sistem hentian hentian yang disesuaikan secara dinamik dengan rata-rata gelombang sebenar (ATR), untuk menghasilkan isyarat perdagangan melalui penyambungan EMA (rata-rata bergerak indeks).
Prinsip utama strategi ini adalah berdasarkan kepada kerjasama antara beberapa komponen teknologi utama:
Haiken Achim mahu penapisanStrategi menyediakan tiga mod pengiraan Heiken-Ash yang berbeza: pengiraan manual, fungsi terbina dalam TradingView, dan grafik biasa untuk mengurangkan kebisingan jangka pendek pasaran dan menonjolkan arah trend yang berpotensi. Mod pengiraan manual memberikan hasil yang paling telus dan boleh dipercayai, sementara fungsi terbina dalam menggunakan tiang sejarah yang telah disahkan untuk mengelakkan penggambaran semula.
ATR menjejaki mekanisme henti rugi: Rata-rata Amplitude Real ((ATR) sebagai pengukur dinamik ketidakstabilan pasaran, digabungkan dengan parameter yang ditentukan oleh pengguna ((nilai utama dan kitaran ATR) untuk menyelaraskan sensitiviti pengesanan berhenti, yang membolehkan ia menyesuaikan diri dengan persekitaran pasaran yang berbeza. Mekanisme ini bertujuan untuk menyediakan titik keluar yang dinamik, melindungi dana dan mengunci keuntungan semasa perkembangan trend.
EMA menghasilkan isyarat silangSinyal masuk dan keluar dihasilkan oleh interaksi antara harga Heikhan Ashi dengan purata bergerak indeks (EMA). Peristiwa silang antara kedua-dua komponen ini digunakan untuk mengenal pasti secara objektif perubahan momentum dan menghantar isyarat masuk atau keluar yang berpotensi.
Pelaksanaan Hentikan Kerosakan yang ketatStrategi ini mengandungi pilihan fungsi hentian yang boleh dikonfigurasi sebagai peratusan harga masuk atau penyesuaian titik tetap. Yang penting, hentian dilaksanakan berdasarkan harga pasaran sebenar dan bukan nilai Hickenlooper yang disintesis, memastikan pengurusan risiko berdasarkan kelembapan pasaran dan tahap harga sebenar.
Protokol pengesanan: Strategi dikonfigurasi untuk penarikan balik realistik, menggunakan fill_orders_on_standard_ohlc=true untuk mensimulasikan pelaksanaan pesanan pada harga OHLC standard, dan mengandungi penapis tarikh yang boleh dikonfigurasi untuk menentukan tempoh sejarah tertentu untuk penilaian prestasi.
Visualisasi data: Skrip menyediakan isyarat beli/jual, ATR menjejaki stop loss dan level stop loss dengan overlay grafik, dan jadual maklumat yang memaparkan parameter strategi dalam masa nyata, status kedudukan semasa, arah trend dan tahap harga utama.
Penapisan bunyiTeknologi Heiken Achievement Chart secara berkesan menapis bunyi pasaran jangka pendek, membantu peniaga menumpukan perhatian kepada trend pasaran yang lebih penting, mengurangkan gangguan isyarat palsu.
Pengurusan risiko dinamikMekanisme Tracking Stop yang berasaskan ATR mampu menyesuaikan diri secara automatik dengan turun naik pasaran, memberikan hentian yang lebih longgar apabila turun naik meningkat, mengetatkan perlindungan apabila turun naik menurun, dan mengoptimumkan nisbah pulangan risiko.
Isyarat masuk dan keluar yang objektifSinyal yang dihasilkan oleh EMA menghilangkan penilaian subjektif, menjadikan keputusan perdagangan lebih sistematik dan berulang, membantu mengekalkan disiplin emosi.
Pelaksanaan harga pasaran sebenarStrategi: menggunakan harga pasaran sebenar (bukan harga sintetik Heiken Ashi) dalam pelaksanaan perdagangan dan hentian dalam pelacakan, memberikan hasil pelacakan yang lebih tepat dan lebih dekat dengan persekitaran perdagangan sebenar.
Maklum balas visual dan pemantauanTabel maklumat bersepadu dan penunjuk visual menyediakan status strategi dan titik data utama dalam masa nyata, memudahkan penilaian dan pemantauan yang cepat, dan meningkatkan keupayaan membuat keputusan.
Konfigurasi parameter yang fleksibelParameter utama yang boleh disesuaikan (nilai sensitiviti, kitaran ATR, kaedah Heiken-Ash dan tetapan henti) membolehkan strategi disesuaikan dengan keadaan pasaran yang berbeza dan pilihan risiko peniaga.
Hanya reka bentuk strategi berbilang kepalaFokus untuk menangkap trend naik, mengelakkan risiko penyemprotan kosong yang berpotensi, terutama sesuai untuk pasaran pesimis jangka panjang, seperti beberapa cryptocurrency.
Risiko pembalikan arah aliranSebagai strategi trend-following, ATR mungkin menghadapi kemunduran yang lebih besar apabila pasaran mendatar atau berpatah balik dengan cepat, dan ATR mungkin tidak dapat sepenuhnya mencegah kerugian seperti itu.
Perangkap pengoptimuman parameterParameter optimasi berlebihan boleh menyebabkan kecocokan kurva, menjadikan strategi berfungsi dengan baik pada data sejarah tetapi tidak berfungsi dengan baik di pasaran masa depan. Ujian disyorkan di beberapa pasaran dan jangka masa untuk memastikan kestabilan.
Risiko masa masukSinyal EMA silang mungkin muncul pada peringkat akhir trend yang telah berkembang, menyebabkan kedudukan masuk yang tidak sesuai. Dalam pasaran yang kuat, ini mungkin menyebabkan pembelian pada tahap yang tinggi.
Hentikan risiko pemicu kerosakanDalam pasaran yang sangat tidak menentu, walaupun trend keseluruhan adalah baik, harga mungkin sebentar menyentuh tahap stop loss, menyebabkan keluar yang tidak perlu. Perlu menetapkan parameter stop loss dengan berhati-hati mengikut ciri-ciri pasaran.
Kepercayaan kepada satu petunjuk teknikalStrategi ini bergantung kepada ATR dan EMA, tidak mengambil kira faktor asas atau petunjuk teknikal lain, dan mungkin terlepas titik perubahan pasaran yang penting.
Pertunjukan pasaran horizontal jangka panjang: Dalam pasaran horisontal jangka panjang, strategi ini mungkin menghasilkan beberapa isyarat yang salah, yang menyebabkan pengumpulan kerugian kecil berturut-turut. Ia disyorkan untuk digunakan apabila anda mengesahkan bahawa pasaran berada dalam keadaan trend.
Titik tergelincir dan risiko pelaksanaanWalaupun strategi mempertimbangkan slippage dalam pengukuran semula, slippage dan kelewatan pelaksanaan dalam transaksi sebenar mungkin lebih besar daripada nilai yang ditetapkan, terutamanya di pasaran yang kurang cair.
Integrasi analisis pelbagai kerangka masaPertimbangan untuk mengintegrasikan isyarat pengesahan trend pada jangka masa yang lebih tinggi, dan melakukan perdagangan hanya apabila arah trend pada jangka masa yang lebih tinggi selaras, dapat meningkatkan kadar kemenangan dan kadar ganjaran risiko dengan ketara.
Penapis kadar turun naikMenambah penapis berdasarkan kadar turun naik, menangguhkan dagangan atau menyesuaikan saiz kedudukan semasa turun naik yang luar biasa dapat mengurangkan risiko turun naik yang melampau di pasaran.
Pengurusan kedudukan dinamikMampu menyesuaikan saiz kedudukan dinamik berdasarkan turun naik dan keadaan pasaran, dan bukannya persentasenya yang tetap, yang dapat mengoptimumkan penggunaan dana dalam keadaan pasaran yang berbeza.
Pengesahan pelbagai indikatorMengintegrasikan petunjuk teknikal yang saling melengkapi (seperti RSI, MACD) sebagai pengesahan sekunder dapat mengurangkan kadar isyarat palsu dan meningkatkan kualiti perdagangan.
Peningkatan dalam strategi penghentian kerugianMemperkenalkan strategi hentian yang lebih kompleks, seperti menjejaki kelipatan ATR atau hentian berdasarkan tahap sokongan / rintangan, dan bukannya peratusan mudah atau mata tetap, dapat menyesuaikan diri dengan struktur pasaran.
Peningkatan strategi keluarPembangunan mekanisme keuntungan separa dan pengeluaran yang lebih halus, yang dapat mengunci sebahagian keuntungan sambil mengekalkan celah trend, mengoptimumkan keluk pulangan keseluruhan.
Pengenalan sistem pasaran: Menambah algoritma pengenalan sistem pasaran, menyesuaikan parameter strategi secara automatik untuk menyesuaikan diri dengan keadaan pasaran yang berbeza (trend, goyah atau berbalik), meningkatkan kemampuan penyesuaian strategi.
Integrasi Pembelajaran MesinPenyelidikan teknologi pembelajaran mesin untuk mengoptimumkan pilihan parameter atau meramalkan titik masuk / keluar yang terbaik dapat meningkatkan lagi prestasi strategi dan mengurangkan intervensi subjektif.
Strategi perdagangan trend HACKEN ACHIE ATR adalah sistem pemantauan trend yang dirancang dengan cara yang masuk akal dan terkawal risiko, yang sesuai untuk pasaran yang lebih tidak menentu. Dengan menggabungkan kebolehan penapisan bunyi dari carta HACKEN ACHIE, pengurusan risiko dinamik ATR dan fungsi pengenalan trend EMA, strategi ini menyediakan rangka kerja perdagangan yang objektif dan sistematik.
Kelebihan utama strategi ini adalah keupayaan pengurusan risiko yang beradaptasi dan dinamik, yang dapat menyesuaikan tahap stop loss secara automatik mengikut turun naik pasaran, melindungi dana dan mengunci keuntungan. Pada masa yang sama, pelaksanaan stop loss yang ketat dan mekanisme pelaksanaan berdasarkan harga pasaran sebenar memastikan kebolehpercayaan dan pengulangan hasil pengukuran.
Walau bagaimanapun, sebagai satu strategi trend-following, ia mungkin menghadapi cabaran apabila pasaran mendatar atau berbalik dengan cepat. Peningkatan seperti integrasi analisis jangka masa berbilang, penapis kadar turun naik tambahan, pengendalian kedudukan yang lebih baik, dan strategi keluar yang lebih halus dapat meningkatkan lagi kestabilan dan prestasi strategi.
Bagi peniaga yang ingin membina kaedah perdagangan sistematik, strategi ini memberikan asas yang kukuh yang boleh disesuaikan dan diperluas mengikut keutamaan risiko dan ciri-ciri pasaran individu, dengan potensi untuk mencapai pulangan yang disesuaikan dengan risiko yang stabil dalam pelbagai persekitaran pasaran.
/*backtest
start: 2024-08-18 00:00:00
end: 2025-08-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"DOGE_USDT","balance":5000}]
*/
//@version=6
strategy(title="Mutanabby_AI | ATR+ | ") // Ensures realistic execution
// 📊 INPUT PARAMETERS
//=============================================================================
a = input.int(1, title="🔧 Key Value (Sensitivity)", minval=1, maxval=10,
tooltip="Lower = More signals, Higher = Fewer signals")
c = input.int(10, title="📈 ATR Period", minval=1, maxval=500,
tooltip="Period for ATR calculation")
// 🕯️ HEIKIN ASHI METHOD SELECTION
//=============================================================================
ha_method = input.string("Manual Calculation", title="🕯️ Heikin Ashi Method",
options=["Manual Calculation", "ticker.heikinashi()", "Regular Candles"],
tooltip="Manual = Most reliable, ticker.heikinashi = Good, Regular = Standard OHLC")
// 🛡️ STOP LOSS SETTINGS
//=============================================================================
use_stop_loss = input.bool(false, title="🛡️ Enable Stop Loss",
tooltip="Enable stop loss at entry price level")
stop_loss_type = input.string("Percentage", title="📊 Stop Loss Type",
options=["Percentage", "Fixed Points"],
tooltip="Choose stop loss calculation method")
stop_loss_percent = input.float(2.0, title="📉 Stop Loss %", minval=0.1, maxval=50.0, step=0.1,
tooltip="Stop loss percentage below entry price")
stop_loss_points = input.float(10.0, title="📉 Stop Loss Points", minval=0.1, step=0.1, tooltip="Stop loss in price points below entry price")
// Date condition
date_condition = true
// 🎨 VISUAL SETTINGS
//=============================================================================
show_signals = input.bool(true, title="🎯 Show Buy/Sell Signals")
show_trailing_stop = input.bool(true, title="📈 Show ATR Trailing Stop")
show_stop_loss = input.bool(true, title="🛡️ Show Stop Loss Line")
show_bar_colors = input.bool(true, title="🎨 Color Bars")
show_position_info = input.bool(true, title="📊 Show Position Info")
// 🧮 HEIKIN ASHI CALCULATIONS
//=============================================================================
// METHOD 1: MANUAL HEIKIN ASHI CALCULATION (MOST RELIABLE)
//=============================================================================
// Manual HA calculation - most transparent and reliable
var float ha_open_manual = na
ha_close_manual = (open + high + low + close) / 4
ha_open_manual := na(ha_open_manual[1]) ? (open + close) / 2 : (ha_open_manual[1] + ha_close_manual[1]) / 2
ha_high_manual = math.max(high, math.max(ha_open_manual, ha_close_manual))
ha_low_manual = math.min(low, math.min(ha_open_manual, ha_close_manual))
// METHOD 2: TICKER.HEIKINASHI() (GOOD ALTERNATIVE)
//=============================================================================
// Get Heikin Ashi data via ticker.heikinashi() - non-repainting
ha_ticker = ticker.heikinashi(syminfo.tickerid)
[ha_open_ticker, ha_high_ticker, ha_low_ticker, ha_close_ticker] = request.security(ha_ticker, timeframe.period, [open[1], high[1], low[1], close[1]], lookahead=barmerge.lookahead_on) // Use confirmed bars to prevent repainting
// METHOD 3: REGULAR CANDLES
//=============================================================================
// Regular OHLC data
ha_open_regular = open
ha_high_regular = high
ha_low_regular = low
ha_close_regular = close
// SELECT METHOD BASED ON USER INPUT
//=============================================================================
src = ha_method == "Manual Calculation" ? ha_close_manual :
ha_method == "ticker.heikinashi()" ? ha_close_ticker : ha_close_regular
source_open = ha_method == "Manual Calculation" ? ha_open_manual :
ha_method == "ticker.heikinashi()" ? ha_open_ticker : ha_open_regular
source_high = ha_method == "Manual Calculation" ? ha_high_manual :
ha_method == "ticker.heikinashi()" ? ha_high_ticker : ha_high_regular
source_low = ha_method == "Manual Calculation" ? ha_low_manual :
ha_method == "ticker.heikinashi()" ? ha_low_ticker : ha_low_regular
// 📊 ATR TRAILING STOP CALCULATION
//=============================================================================
// Calculate True Range using selected method
tr1 = source_high - source_low
tr2 = math.abs(source_high - src[1])
tr3 = math.abs(source_low - src[1])
tr = math.max(tr1, math.max(tr2, tr3))
// ATR calculation
xATR = ta.sma(tr, c)
nLoss = a * xATR
// ATR Trailing Stop logic
var float xATRTrailingStop = na
xATRTrailingStop := if src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0)
math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0)
math.min(nz(xATRTrailingStop[1]), src + nLoss)
else if src > nz(xATRTrailingStop[1], 0)
src - nLoss
else
src + nLoss
// Position state tracking
var int pos = na
pos := if src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0)
1
else if src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0)
-1
else
nz(pos[1], 0)
// 🎯 SIGNAL GENERATION
//=============================================================================
// EMA for crossover detection
ema_val = ta.ema(src, 1)
// Crossover conditions
above = ta.crossover(ema_val, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema_val)
// Buy and sell signals
buy_signal = src > xATRTrailingStop and above
sell_signal = src < xATRTrailingStop and below
// Trend direction
is_uptrend = src > xATRTrailingStop
is_downtrend = src < xATRTrailingStop
// 🛡️ STOP LOSS CALCULATION
//=============================================================================
var float entry_price = na
var float stop_loss_level = na
// Calculate stop loss level
calculate_stop_loss(entry_price_val) =>
if stop_loss_type == "Percentage"
entry_price_val * (1 - stop_loss_percent / 100)
else
entry_price_val - stop_loss_points
// 📈 LONG ONLY STRATEGY LOGIC
//=============================================================================
var bool in_long_position = false
// Entry condition: Buy signal when not in position
long_entry = buy_signal and date_condition and not in_long_position
// Exit conditions - CRITICAL: Use real prices for stop loss, not HA prices
atr_exit = sell_signal and date_condition and in_long_position
stop_loss_hit = use_stop_loss and in_long_position and low <= stop_loss_level // Uses real low price
// Combined exit condition
long_exit = atr_exit or stop_loss_hit
// Execute trades - Orders execute at REAL market prices
if long_entry
strategy.entry("LONG", strategy.long, comment="🚀 LONG")
in_long_position := true
entry_price := close // REAL entry price, not HA price
stop_loss_level := use_stop_loss ? calculate_stop_loss(entry_price) : na
if long_exit
exit_reason = stop_loss_hit ? "🛡️ STOP LOSS" : "💰 ATR EXIT"
strategy.close("LONG", comment=exit_reason)
in_long_position := false
entry_price := na
stop_loss_level := na
// 🎨 VISUAL ELEMENTS
//=============================================================================
// Trailing stop line color
stop_color = pos == 1 ? color.green : pos == -1 ? color.red : color.blue
// Plot ATR Trailing Stop
plot(show_trailing_stop ? xATRTrailingStop : na,
color=stop_color,
linewidth=2,
title="ATR Trailing Stop")
// Plot Stop Loss Level
plot(show_stop_loss and use_stop_loss and in_long_position ? stop_loss_level : na,
color=color.new(color.red, 0),
linewidth=2,
style=plot.style_linebr,
title="Stop Loss Level")
// Plot buy/sell signals
plotshape(show_signals and buy_signal,
title="Buy Signal",
text="BUY",
style=shape.labelup,
location=location.belowbar,
color=color.new(color.green, 0),
textcolor=color.white,
size=size.small)
plotshape(show_signals and sell_signal,
title="Sell Signal",
text="SELL",
style=shape.labeldown,
location=location.abovebar,
color=color.new(color.red, 0),
textcolor=color.white,
size=size.small)
// Plot stop loss hit signal
plotshape(show_signals and stop_loss_hit,
title="Stop Loss Hit",
text="SL",
style=shape.labeldown,
location=location.abovebar,
color=color.new(color.orange, 0),
textcolor=color.white,
size=size.small)
// Bar coloring
barcolor(show_bar_colors ? (is_uptrend ? color.new(color.green, 70) :
is_downtrend ? color.new(color.red, 70) : na) : na)
// Position status background
bgcolor(show_position_info and strategy.position_size > 0 ? color.new(color.green, 95) : show_position_info and strategy.position_size == 0 ? color.new(color.gray, 98) : na, title="Position Status")
// Entry price line - shows REAL entry price
plot(show_position_info and strategy.position_size > 0 ? strategy.position_avg_price : na,
color=color.new(color.blue, 0),
linewidth=1,
style=plot.style_linebr,
title="Entry Price")
// 📊 INFORMATION TABLE
//=============================================================================
if show_position_info and barstate.islast
var table info_table = table.new(position.top_right, 3, 11,
bgcolor=color.white,
border_width=1,
border_color=color.gray,
frame_width=1,
frame_color=color.black)
// Table headers
table.cell(info_table, 0, 0, "Mutanabby_AI | Manual HA | ATR | SL", text_color=color.white, bgcolor=color.blue, text_size=size.small)
table.cell(info_table, 1, 0, "", text_color=color.white, bgcolor=color.blue)
table.cell(info_table, 2, 0, "", text_color=color.white, bgcolor=color.blue)
// Strategy info
table.cell(info_table, 0, 1, "HA Method:", text_color=color.rgb(10, 10, 10), text_size=size.small)
method_color = ha_method == "Manual Calculation" ? color.green :
ha_method == "ticker.heikinashi()" ? color.blue : color.gray
table.cell(info_table, 1, 1, ha_method, text_color=method_color, text_size=size.small)
table.cell(info_table, 0, 2, "Key Value:", text_color=color.rgb(10, 10, 10), text_size=size.small)
table.cell(info_table, 1, 2, str.tostring(a), text_color=color.blue, text_size=size.small)
table.cell(info_table, 0, 3, "ATR Period:", text_color=color.rgb(2, 2, 2), text_size=size.small)
table.cell(info_table, 1, 3, str.tostring(c), text_color=color.blue, text_size=size.small)
table.cell(info_table, 0, 4, "Stop Loss:", text_color=color.rgb(3, 3, 3), text_size=size.small)
table.cell(info_table, 1, 4, use_stop_loss ? "ON" : "OFF",
text_color=use_stop_loss ? color.green : color.gray, text_size=size.small)
table.cell(info_table, 0, 5, "Position:", text_color=color.rgb(3, 3, 3), text_size=size.small)
table.cell(info_table, 1, 5, strategy.position_size > 0 ? "LONG" : "NONE",
text_color=strategy.position_size > 0 ? color.green : color.gray, text_size=size.small)
table.cell(info_table, 0, 6, "Trend:", text_color=color.rgb(0, 0, 0), text_size=size.small)
table.cell(info_table, 1, 6, is_uptrend ? "UP" : "DOWN",
text_color=is_uptrend ? color.green : color.red, text_size=size.small)
table.cell(info_table, 0, 7, "Current Price:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 7, str.tostring(close, "#.##"), text_color=color.black, text_size=size.small)
table.cell(info_table, 0, 8, "Trailing Stop:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 8, str.tostring(xATRTrailingStop, "#.##"), text_color=color.blue, text_size=size.small)
// Show stop loss level if enabled and in position
if use_stop_loss and in_long_position
table.cell(info_table, 0, 9, "Stop Loss:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 9, str.tostring(stop_loss_level, "#.##"), text_color=color.red, text_size=size.small)
else
table.cell(info_table, 0, 9, "Stop Loss:", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, 9, "N/A", text_color=color.gray, text_size=size.small)
table.cell(info_table, 0, 10, "Last Signal:", text_color=color.black, text_size=size.small)
signal_text = buy_signal ? "BUY" : sell_signal ? "SELL" : stop_loss_hit ? "STOP LOSS" : "NONE"
signal_color = buy_signal ? color.green : sell_signal ? color.red : stop_loss_hit ? color.orange : color.gray
table.cell(info_table, 1, 10, signal_text, text_color=signal_color, text_size=size.small)
// 🚨 ALERTS
//=============================================================================
// Alert conditions
alertcondition(buy_signal, title="🚀 Mutanabby_AI | ATR+ LONG Entry",
message="Mutanabby_AI | ATR+ : BUY signal at {{close}}")
alertcondition(sell_signal, title="💰 Mutanabby_AI | ATR+ LONG Exit",
message="Mutanabby_AI | ATR+ : SELL signal at {{close}}")
alertcondition(stop_loss_hit, title="🛡️ Mutanabby_AI | ATR+ Stop Loss Hit",
message="Mutanabby_AI | ATR+ : STOP LOSS hit at {{close}}")
alertcondition(buy_signal or sell_signal or stop_loss_hit, title="🔔 Mutanabby_AI | ATR+ Any Signal",
message="Mutanabby_AI| ATR+ : {{ticker}} - {{close}} - Signal: {{strategy.position_size > 0 ? 'EXIT' : 'ENTRY'}}")
//=============================================================================
// 📝 STRATEGY NOTES:
//
// 🎯 OPTIMAL IMPLEMENTATION for realistic backtesting:
// 📈 Uses manual HA calculation for transparency and reliability
// 💰 Orders execute at REAL market prices (not synthetic HA prices)
// 🛡️ Stop loss uses real market prices for accurate risk management
// 🔧 Multiple HA methods available for comparison and validation
// ⚡ Added fill_orders_on_standard_ohlc=true for extra protection
//
// 🎯 METHOD COMPARISON:
// 🥇 Manual Calculation: Most reliable, transparent, no external dependencies
// 🥈 ticker.heikinashi(): Good alternative, uses confirmed bars to prevent repainting
// 🥉 Regular Candles: Standard OHLC for comparison purposes
//
// 💡 BEST PRACTICES IMPLEMENTED:
// ✅ Always run on regular candlestick charts (not native HA charts)
// ✅ Use confirmed/historical HA values to prevent repainting
// ✅ Execute all orders at real market prices
// ✅ Stop loss based on real prices, not synthetic HA prices
// ✅ Entry price tracking uses actual fill prices
// ✅ Transparent calculation methods for verification
//
// 🚨 AVOID:
// ❌ Running strategies directly on TradingView's native HA charts
// ❌ Using current bar HA values (causes repainting)
// ❌ Stop loss based on HA prices instead of real prices
//=============================================================================