
Chiến lược giao dịch theo dõi xu hướng dừng lỗ của Heikin Ashi ATR là một phương pháp giao dịch có hệ thống được thiết kế đặc biệt để nhận diện xu hướng thị trường tài chính và quản lý rủi ro. Chiến lược này dựa trên kỹ thuật vẽ Heikin Ashi để lọc tiếng ồn thị trường, kết hợp với hệ thống theo dõi dừng lỗ điều chỉnh động của ATR, tạo ra tín hiệu giao dịch bằng cách chéo đường trung bình di chuyển EMA của chỉ số. Chiến lược này chỉ thực hiện giao dịch đa đầu và tăng cường sự ổn định và quản lý tín hiệu thông qua các thành phần điều chỉnh tỷ lệ biến động.
Các nguyên tắc cốt lõi của chiến lược này dựa trên sự phối hợp của một số thành phần công nghệ quan trọng:
Haiken Akihito không muốn bị ảnh hưởngChiến lược cung cấp ba mô hình tính toán Haykansah khác nhau: () Tính toán bằng tay, () Chức năng TradingView được xây dựng và () Biểu đồ thường xuyên) để giảm tiếng ồn ngắn hạn của thị trường và làm nổi bật hướng xu hướng tiềm năng. () Mô hình tính toán bằng tay cung cấp kết quả minh bạch và đáng tin cậy nhất, trong khi () Chức năng được xây dựng sử dụng cột lịch sử đã được xác nhận để ngăn chặn việc vẽ lại.
ATR theo dõi hệ thống dừng lỗ: Mức độ sóng thực trung bình ((ATR) là một chỉ số đo động của sự biến động của thị trường, kết hợp các tham số được xác định bởi người dùng ((giá trị quan trọng và chu kỳ ATR) để hiệu chỉnh độ nhạy theo dõi lỗ, cho phép nó thích nghi với các môi trường biến động của thị trường khác nhau. Cơ chế này được thiết kế để cung cấp điểm thoát động, bảo vệ vốn và khóa thu nhập trong quá trình phát triển xu hướng.
Tạo tín hiệu chéo EMA: Các tín hiệu nhập và xuất phát từ sự tương tác giữa giá Haykanush và đường trung bình di chuyển của chỉ số ((EMA)). Các sự kiện chéo giữa hai thành phần này được sử dụng để xác định khách quan chuyển động động, phát ra tín hiệu nhập hoặc xuất cảnh đa đầu tiềm năng.
Thiết lập nghiêm ngặtChiến lược bao gồm các tính năng dừng tùy chọn, có thể được cấu hình như tỷ lệ phần trăm hoặc sai số điểm cố định của giá vào. Điều quan trọng là, dừng hoạt động dựa trên giá thị trường thực tế, chứ không phải là giá trị Hyke Axial tổng hợp, đảm bảo quản lý rủi ro dựa trên tính thanh khoản và mức giá thị trường thực tế.
Giao thức phản hồi: Chiến lược được cấu hình để phản hồi thực tế, sử dụng fill_orders_on_standard_ohlc=true để mô phỏng lệnh thực hiện trên giá OHLC tiêu chuẩn và chứa bộ lọc ngày có thể cấu hình để xác định thời gian lịch sử cụ thể để đánh giá hiệu suất.
Hình ảnh dữ liệu: Các kịch bản cung cấp các tín hiệu mua / bán, ATR theo dõi các mức dừng lỗ và dừng lỗ trên các biểu đồ, và các bảng thông tin hiển thị các tham số chiến lược trực tiếp, trạng thái vị trí hiện tại, hướng xu hướng và mức giá quan trọng.
Năng lực lọc tiếng ồnHyke Achim Chart có khả năng lọc tiếng ồn thị trường ngắn hạn, giúp các nhà giao dịch tập trung vào các xu hướng thị trường quan trọng hơn và giảm nhiễu tín hiệu giả.
Quản lý rủi ro độngCơ chế dừng theo dõi dựa trên ATR có thể tự động điều chỉnh cho sự biến động của thị trường, cung cấp dừng lỏng lẻo hơn khi biến động tăng lên, thắt chặt bảo vệ khi biến động giảm nhẹ, tối ưu hóa tỷ lệ lợi nhuận rủi ro.
Các tín hiệu nhập cảnh và xuất cảnh: Các tín hiệu được tạo ra bởi EMA loại bỏ phán đoán chủ quan, giúp các quyết định giao dịch có hệ thống và có thể lặp lại hơn, giúp duy trì kỷ luật cảm xúc.
Thực hiện giá thị trườngChiến lược: Sử dụng giá thị trường thực tế (thay vì giá tổng hợp Haykansah) để thực hiện giao dịch và dừng lỗ trong phản hồi, cung cấp kết quả phản hồi chính xác hơn, gần gũi hơn với môi trường giao dịch thực tế.
Phản hồi trực quan và giám sátCác bảng thông tin tích hợp và các chỉ số trực quan cung cấp trạng thái chính sách và các điểm dữ liệu quan trọng trong thời gian thực, giúp đánh giá và giám sát nhanh chóng, tăng cường khả năng ra quyết định.
Thiết lập tham số linh hoạtCác tham số quan trọng có thể điều chỉnh (giá độ nhạy, chu kỳ ATR, phương pháp Haykanush và cài đặt dừng lỗ) cho phép chiến lược phù hợp với các môi trường thị trường khác nhau và sở thích rủi ro của thương nhân.
Thiết kế chiến lược đa đầu: Tập trung vào việc nắm bắt xu hướng tăng, tránh rủi ro bị bóp méo tiềm ẩn, đặc biệt phù hợp với thị trường dài hạn, như một số loại tiền điện tử.
Rủi ro đảo ngược xu hướngATR: Là một chiến lược theo dõi xu hướng, có thể phải đối mặt với sự rút lui lớn hơn khi thị trường nằm ngang hoặc đảo ngược nhanh chóng, ATR theo dõi dừng lỗ có thể không ngăn chặn hoàn toàn những tổn thất như vậy.
Lỗ bẫy tối ưu hóa tham số: Các tham số tối ưu hóa quá mức có thể dẫn đến sự phù hợp với đường cong, khiến chiến lược hoạt động tốt trên dữ liệu lịch sử nhưng không hoạt động tốt trong thị trường tương lai.
Rủi ro của thời gian nhập cảnh: Các tín hiệu giao EMA có thể xuất hiện ở giai đoạn sau khi xu hướng đã phát triển, dẫn đến vị trí vào không phù hợp. Trong thị trường mạnh, điều này có thể dẫn đến mua ở mức cao.
Hạn chế rủi ro gây ra thiệt hạiTrong thị trường có biến động cao, giá có thể chạm mức dừng lỗ một thời gian ngắn ngay cả khi xu hướng chung là tốt, dẫn đến việc rút ra không cần thiết. Cần thiết lập các tham số dừng lỗ một cách thận trọng theo đặc điểm của thị trường.
Chỉ số kỹ thuật đơn phụ thuộcChiến lược này phụ thuộc chủ yếu vào chỉ số ATR và EMA, không xem xét các yếu tố cơ bản hoặc các chỉ số kỹ thuật khác, có thể bỏ lỡ các bước ngoặt quan trọng của thị trường.
Hành động của thị trường ngang dài hạn: Trong thị trường ngang dài, chiến lược này có thể tạo ra nhiều tín hiệu sai, dẫn đến sự tích lũy tổn thất nhỏ liên tục. ☐ Được khuyến khích sử dụng khi xác nhận thị trường đang trong trạng thái xu hướng.
Điểm trượt và rủi ro thực hiện: Mặc dù chiến lược đã tính đến điểm trượt trong phản hồi, nhưng điểm trượt và độ trễ thực hiện trong giao dịch thực tế có thể lớn hơn so với giá trị đặt, đặc biệt là trong thị trường có tính thanh khoản thấp.
Tích hợp phân tích nhiều khung thời gianXem xét các tín hiệu xác nhận xu hướng trong khung thời gian cao hơn, thực hiện giao dịch chỉ khi xu hướng khung thời gian cao hơn phù hợp với nhau, có thể làm tăng đáng kể tỷ lệ thắng và tỷ lệ lợi nhuận rủi ro.
Bộ lọc tỷ lệ dao độngThêm bộ lọc dựa trên tỷ lệ biến động, tạm dừng giao dịch hoặc điều chỉnh kích thước vị trí trong thời gian biến động cao bất thường, có thể làm giảm rủi ro do biến động cực đoan của thị trường.
Quản lý vị trí động: Thực hiện điều chỉnh kích thước vị trí động dựa trên biến động và tình trạng thị trường, thay vì cấu hình phần trăm cố định, có thể tối ưu hóa hiệu quả sử dụng vốn trong các điều kiện thị trường khác nhau.
Xác nhận đa chỉ sốTích hợp các chỉ số kỹ thuật bổ sung khác (như chỉ số tương đối mạnh RSI, chỉ số ngẫu nhiên hoặc MACD) như xác nhận thứ cấp, có thể làm giảm tỷ lệ tín hiệu giả và nâng cao chất lượng giao dịch.
Cải thiện chiến lược dừng lỗTiến hành các chiến lược dừng lỗ phức tạp hơn, chẳng hạn như theo dõi số nhân của ATR hoặc dừng lỗ dựa trên mức hỗ trợ / kháng cự, thay vì tỷ lệ phần trăm đơn giản hoặc số điểm cố định, có thể phù hợp hơn với cấu trúc thị trường.
Chiến lược ra sân: Phát triển các cơ chế lợi nhuận phân chia và xuất hiện phân chia tinh vi hơn, có thể khóa một phần lợi nhuận và tối ưu hóa đường cong lợi nhuận tổng thể trong khi duy trì các lỗ hổng xu hướng.
Nhận dạng hệ thống thị trường: Thêm thuật toán nhận diện hệ thống thị trường, tự động điều chỉnh các tham số chiến lược để thích ứng với các tình trạng thị trường khác nhau (xu hướng, biến động hoặc đảo ngược), nâng cao khả năng thích ứng của chiến lược.
Tích hợp học máy: Khám phá các kỹ thuật học máy để tối ưu hóa lựa chọn tham số hoặc dự đoán điểm vào/ ra tối ưu, có thể nâng cao hơn nữa hiệu suất chiến lược và giảm sự can thiệp chủ quan.
Chiến lược này cung cấp một khung giao dịch khách quan, có hệ thống, được thiết kế hợp lý, có thể kiểm soát rủi ro, đặc biệt phù hợp với thị trường có tính biến động cao. Bằng cách kết hợp khả năng lọc tiếng ồn của biểu đồ Hyke, quản lý rủi ro động của ATR và khả năng nhận dạng xu hướng của EMA, chiến lược này cung cấp một khung giao dịch khách quan, có hệ thống.
Ưu điểm chính của chiến lược này là khả năng quản lý rủi ro thích ứng và động, có thể tự động điều chỉnh mức dừng lỗ theo biến động của thị trường, bảo vệ vốn và khóa lợi nhuận. Đồng thời, việc thực hiện dừng lỗ nghiêm ngặt và cơ chế thực thi dựa trên giá thị trường thực tế đảm bảo độ tin cậy và khả năng sao chép kết quả đo lường.
Tuy nhiên, như là một chiến lược theo dõi xu hướng, nó có thể gặp thách thức khi thị trường nằm ngang hoặc quay ngược nhanh. Các cải tiến như tích hợp phân tích nhiều khung thời gian, tăng bộ lọc tỷ lệ biến động, tối ưu hóa quản lý vị trí và tinh chỉnh chiến lược thoát có thể làm tăng thêm sức mạnh và hiệu suất của chiến lược.
Đối với các nhà giao dịch muốn xây dựng một phương pháp giao dịch có hệ thống, chiến lược này cung cấp một nền tảng vững chắc, có thể được tùy chỉnh và mở rộng theo sở thích rủi ro cá nhân và đặc điểm của thị trường, với tiềm năng đạt được lợi nhuận điều chỉnh rủi ro ổn định trong nhiều môi trường thị trường.
/*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
//=============================================================================