Strategi Perdagangan Tren Trailing Stop Heiken Asch ATR Adaptif Volatilitas

ATR EMA HEIKIN ASHI Trailing Stop TREND FOLLOWING volatility STOP LOSS
Tanggal Pembuatan: 2025-08-18 17:33:13 Akhirnya memodifikasi: 2025-08-18 17:33:13
menyalin: 0 Jumlah klik: 283
2
fokus pada
319
Pengikut

Strategi Perdagangan Tren Trailing Stop Heiken Asch ATR Adaptif Volatilitas Strategi Perdagangan Tren Trailing Stop Heiken Asch ATR Adaptif Volatilitas

Ringkasan

Strategi ini didasarkan pada teknik Heikin Ashi untuk memfilter kebisingan pasar, menggabungkan sistem tracking stop loss yang disesuaikan secara dinamis dengan rata-rata gelombang riil (ATR) untuk menghasilkan sinyal perdagangan melalui indeks moving average (EMA) crossover. Strategi ini hanya melakukan perdagangan multihead, dan meningkatkan stabilitas sinyal dan manajemen perdagangan melalui komponen yang disesuaikan dengan volatilitas. Strategi ini sangat cocok untuk pasar yang sangat volatil seperti cryptocurrency, dan juga untuk pedagang yang mengejar trend tracking sistematis.

Prinsip Strategi

Prinsip inti dari strategi ini didasarkan pada sinergi dari beberapa komponen teknologi utama:

  1. Haiken Achim memfilter gambarStrategi menyediakan tiga mode perhitungan Heiken-Ashi yang berbeda: () Perhitungan manual, () Fungsi TradingView built-in dan () Diagram biasa untuk mengurangi kebisingan pasar jangka pendek dan () Menyorotkan arah tren potensial. () Mode perhitungan manual memberikan hasil yang paling transparan dan dapat diandalkan, sedangkan () Fungsi built-in menggunakan kolom sejarah yang telah dikonfirmasi untuk mencegah pemetaan ulang.

  2. ATR melacak mekanisme stop loss: Average True Rate (ATR) sebagai indikator dinamika volatilitas pasar, dikombinasikan dengan parameter yang ditentukan pengguna (Key Value dan ATR Cycle) untuk mengkalibrasi sensitivitas pelacakan stop loss, sehingga dapat beradaptasi dengan lingkungan volatilitas pasar yang berbeda.

  3. Sinyal silang EMA dihasilkanSinyal masuk dan keluar berasal dari interaksi antara harga Heiken Ashi dan indeks moving average (EMA). Peristiwa silang antara kedua komponen ini digunakan untuk secara objektif mengidentifikasi perubahan momentum dan mengirimkan sinyal masuk atau keluar yang berpotensi bermacam-macam.

  4. Implementasi Stop Loss yang ketatStrategi ini berisi opsi stop loss yang dapat dikonfigurasi sebagai persentase dari harga masuk atau defisit poin tetap. Penting, stop loss dilakukan berdasarkan harga pasar yang sebenarnya, bukan nilai Heiken yang disintesis, untuk memastikan manajemen risiko berdasarkan likuiditas pasar dan tingkat harga yang sebenarnya.

  5. Protokol Retrospektif: Strategi dikonfigurasi untuk realistis retracement, menggunakan fill_orders_on_standard_ohlc=true untuk mensimulasikan eksekusi order pada harga standar OHLC, dan berisi filter tanggal yang dapat dikonfigurasi untuk mendefinisikan periode sejarah tertentu untuk penilaian kinerja.

  6. Visualisasi dataSkrip menyediakan sinyal beli/jual, grafik overlay ATR untuk melacak stop loss dan level stop loss, dan tabel informasi yang menampilkan parameter strategi real-time, status posisi saat ini, arah tren, dan tingkat harga kunci.

Keunggulan Strategis

  1. Kemampuan penyaringan suaraTeknologi Heiken Achim Chart secara efektif menyaring kebisingan pasar jangka pendek, membantu pedagang fokus pada tren pasar yang lebih penting, dan mengurangi gangguan sinyal palsu.

  2. Manajemen risiko dinamisATR-based tracking stop loss mechanism dapat secara otomatis disesuaikan dengan volatilitas pasar, memberikan stop loss yang lebih longgar ketika volatilitas meningkat, memperketat perlindungan ketika volatilitas melemah, dan mengoptimalkan rasio risiko-reward.

  3. Sinyal masuk dan keluar yang objektifSinyal yang dihasilkan oleh EMA menghilangkan penilaian subjektif, membuat keputusan perdagangan lebih sistematis dan berulang, membantu menjaga disiplin emosi.

  4. Pelaksanaan harga pasar yang sebenarnyaStrategi: Menggunakan harga pasar yang sebenarnya dalam pelacakan (bukan harga sintetis Heiken Ashi) untuk melakukan perdagangan dan menghentikan, memberikan hasil pelacakan yang lebih akurat dan lebih dekat dengan lingkungan perdagangan yang sebenarnya.

  5. Umpan balik visual dan pemantauanTabel informasi dan indikator visual yang terintegrasi memberikan status strategi dan titik data penting secara real-time, untuk memudahkan evaluasi dan pemantauan yang cepat, dan meningkatkan kemampuan pengambilan keputusan.

  6. Konfigurasi parameter yang fleksibelParameter kunci yang dapat disesuaikan (nilai sensitivitas, siklus ATR, metode Heiken-Ashi, dan pengaturan stop loss) memungkinkan strategi untuk beradaptasi dengan lingkungan pasar yang berbeda dan preferensi risiko pedagang.

  7. Desain strategi multi-kepalaFokus pada menangkap tren naik, menghindari potensi risiko overhead, terutama untuk pasar yang pesimis dalam jangka panjang, seperti beberapa cryptocurrency.

Risiko Strategis

  1. Risiko pembalikan trenSebagai strategi pelacakan tren, ATR mungkin tidak dapat sepenuhnya mencegah kerugian seperti itu ketika pasar bergeser atau berbalik dengan cepat.

  2. Parameter Trap OptimisasiParameter over-optimisasi dapat menyebabkan fit-the-curve, membuat strategi berkinerja baik pada data historis tetapi berkinerja buruk di pasar masa depan. Disarankan untuk diuji di beberapa pasar dan kerangka waktu untuk memastikan stabilitas.

  3. Risiko saat masuk:Sinyal silang EMA mungkin muncul pada tahap akhir dari perkembangan tren, yang menyebabkan posisi masuk yang tidak ideal. Dalam pasar yang kuat, ini dapat menyebabkan pembelian di posisi tinggi.

  4. Risiko pemicu kerusakanDalam pasar yang sangat fluktuatif, bahkan jika tren keseluruhan baik, harga mungkin sebentar menyentuh level stop loss, yang menyebabkan keluar yang tidak perlu. Perlu hati-hati mengatur parameter stop loss sesuai dengan karakteristik pasar.

  5. Tekanan pada satu indikator teknisStrategi ini bergantung pada indikator ATR dan EMA, tidak mempertimbangkan faktor fundamental atau indikator teknis lainnya, dan mungkin melewatkan titik balik pasar yang penting.

  6. Performa pasar horizontal jangka panjangDalam pasar horizontal jangka panjang, strategi ini dapat menghasilkan beberapa sinyal salah yang menyebabkan akumulasi kerugian kecil berturut-turut.

  7. Titik Slip dan Risiko EksekusiMeskipun strategi mempertimbangkan slippage dalam pengukuran ulang, slippage dan penundaan eksekusi dalam transaksi sebenarnya mungkin lebih besar dari nilai yang ditetapkan, terutama di pasar dengan likuiditas rendah.

Arah optimasi strategi

  1. Integrasi analisis multi-frame waktuPertimbangkan untuk mengintegrasikan sinyal konfirmasi tren dari kerangka waktu yang lebih tinggi, melakukan perdagangan hanya jika arah tren dari kerangka waktu yang lebih tinggi konsisten, dapat secara signifikan meningkatkan tingkat kemenangan dan tingkat risiko / reward.

  2. Filter tingkat fluktuasiMenambahkan filter berdasarkan volatilitas, menangguhkan perdagangan atau menyesuaikan ukuran posisi selama fluktuasi yang sangat tinggi dapat mengurangi risiko dari fluktuasi ekstrim pasar.

  3. Manajemen Posisi Dinamis: Mampu menyesuaikan ukuran posisi dinamis berdasarkan volatilitas dan kondisi pasar, bukan konfigurasi persentase tetap, dapat mengoptimalkan efisiensi penggunaan dana dalam kondisi pasar yang berbeda.

  4. Konfirmasi multi-indikatorMengintegrasikan indikator teknis komplementer lainnya (misalnya RSI Relatif Lemah, Indeks Random, atau MACD) sebagai konfirmasi sekunder dapat mengurangi tingkat sinyal palsu dan meningkatkan kualitas perdagangan.

  5. Peningkatan strategi stop lossImplementasi strategi stop loss yang lebih kompleks, seperti melacak kelipatan ATR atau stop loss berdasarkan level support/resistance, bukan persentase atau poin tetap yang sederhana, dapat lebih sesuai dengan struktur pasar.

  6. Perincian Strategi Keluar: Mengembangkan mekanisme keuntungan parsial dan keluar batch yang lebih halus, yang dapat mengunci sebagian keuntungan sambil menjaga celah tren, mengoptimalkan kurva pengembalian keseluruhan.

  7. Identifikasi sistem pasar: Menambahkan algoritma identifikasi sistem pasar, secara otomatis menyesuaikan parameter strategi untuk menyesuaikan dengan kondisi pasar yang berbeda (trend, getaran, atau pembalikan), meningkatkan kemampuan strategi untuk beradaptasi.

  8. Integrasi pembelajaran mesin: Mengeksplorasi teknologi pembelajaran mesin untuk mengoptimalkan pilihan parameter atau memprediksi titik masuk / keluar yang optimal, yang dapat meningkatkan kinerja strategi lebih lanjut dan mengurangi intervensi subyektif.

Meringkaskan

ATR adalah sistem pelacakan tren yang dirancang secara rasional dan dapat dikontrol risiko, terutama untuk pasar yang lebih volatil. Dengan menggabungkan kemampuan penyaringan kebisingan dari grafik Heiken, manajemen risiko dinamis ATR, dan fungsi identifikasi tren EMA, strategi ini memberikan kerangka perdagangan yang objektif dan sistematis.

Keuntungan utama dari strategi ini adalah kemampuan untuk mengadaptasi dan mengelola risiko secara dinamis, dapat secara otomatis menyesuaikan tingkat stop loss sesuai dengan fluktuasi pasar, melindungi dana dan mengunci keuntungan. Pada saat yang sama, pelaksanaan stop loss yang ketat dan mekanisme pelaksanaan yang didasarkan pada harga pasar yang sebenarnya memastikan keandalan dan replikasi hasil pengukuran.

Namun, sebagai strategi pelacakan tren, strategi dapat menghadapi tantangan ketika pasar bergeser atau berbalik dengan cepat. Strategi dapat ditingkatkan lebih lanjut untuk meningkatkan stabilitas dan kinerja dengan mengintegrasikan analisis multi-frame waktu, meningkatkan filter tingkat fluktuasi, mengoptimalkan manajemen posisi, dan menyempurnakan strategi keluar.

Strategi ini memberikan dasar yang kuat bagi para pedagang yang ingin membangun metode perdagangan sistematis yang dapat disesuaikan dan diperluas sesuai dengan preferensi risiko pribadi dan karakteristik pasar, dengan potensi untuk mendapatkan pengembalian yang disesuaikan dengan risiko yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*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
//=============================================================================