
Chiến lược giao dịch dừng ngã theo đường trung bình di chuyển chỉ số là một hệ thống giao dịch định lượng dựa trên xác nhận hình thức sụp đổ và xu hướng theo đường trung bình di chuyển. Chiến lược này chủ yếu xác định xu hướng thị trường tổng thể bằng cách nhận ra hình thức sụp đổ cụ thể (tức là tín hiệu “ngừng ngã”) làm điểm vào, đồng thời kết hợp với EMA (đường trung bình di chuyển chỉ số) để xác nhận chéo, và sử dụng mức hỗ trợ động và mức kháng cự để xác định đột phá thị trường.
Nguyên tắc cốt lõi của chiến lược này là xác định các hình thức giảm giá cụ thể trong thị trường, các hình thức này thường đại diện cho khả năng thị trường sẽ đảo ngược trong thời gian ngắn. Cơ chế hoạt động của chiến lược như sau:
Xác định xu hướng: Xác định xu hướng thị trường bằng cách so sánh vị trí tương đối của EMA20 với EMA90. Xác định xu hướng tăng khi EMA20 nằm trên EMA90; Xác định xu hướng giảm khi EMA20 nằm dưới EMA90
Bức ảnh này được đăng tải trên trang Facebook của ông.
Thử nghiệm phá vỡ: Xác định sự phá vỡ của thị trường bằng cách so sánh giá đóng cửa hiện tại với mức hỗ trợ / kháng cự (được tính toán dựa trên giá thấp nhất / cao nhất trong 30 chu kỳ).
Điều kiện nhập cảnh: Khi thị trường đang trong một xu hướng cụ thể và không ở trạng thái phá vỡ, nếu có tín hiệu dừng giảm, chiến lược sẽ nhập theo các tham số rủi ro được thiết lập trước (rủi ro 2,5% cho mỗi giao dịch).
Cài đặt dừng lỗ: Đối với các vị trí nhiều đầu, dừng lỗ được thiết lập ở mức 2,5% dưới giá nhập; đối với các vị trí trống, dừng lỗ được thiết lập ở mức 2,5% trên giá nhập.
Điều kiện dừng: Điều kiện kết hợp dựa trên tỷ lệ lợi nhuận và tỷ lệ lợi nhuận rủi ro. Nhiều đầu đòi hỏi lợi nhuận ít nhất là 7% và tỷ lệ lợi nhuận rủi ro không thấp hơn 3; đầu trống đòi hỏi lợi nhuận ít nhất là 6% và tỷ lệ lợi nhuận rủi ro không thấp hơn 3.
Tín hiệu vào và ra rõ ràng: cung cấp tín hiệu giao dịch rõ ràng thông qua các hình thức giảm giá cụ thể và xu hướng đường trung bình di chuyển, giảm tác động cảm xúc của phán đoán chủ quan.
Cơ chế xác nhận xu hướng tổng hợp: Sử dụng chỉ số EMA trong nhiều chu kỳ thời gian để xác nhận xu hướng thị trường, tăng độ tin cậy của tín hiệu giao dịch.
Nhận biết hỗ trợ và kháng cự động: Các vị trí hỗ trợ và kháng cự động được tính toán bằng cách sử dụng cửa sổ cuộn để chiến lược có thể thích ứng với các giai đoạn thị trường khác nhau.
Quản lý rủi ro nghiêm ngặt: đặt trước các tham số rủi ro (rủi ro 2,5% cho mỗi giao dịch) và điều kiện dừng dựa trên tỷ lệ lợi nhuận rủi ro để đảm bảo sự hợp lý của quản lý tiền.
Tiêu chuẩn giao dịch đa luồng khác biệt: Đặt các điều kiện đầu vào và mục tiêu lợi nhuận khác nhau cho các giao dịch đa đầu và vô đầu, thích ứng với các đặc điểm không đối xứng của thị trường.
Tính toán vị trí động: Tính toán tự động kích thước vị trí phù hợp dựa trên khoảng cách dừng lỗ, đảm bảo sự đồng nhất về rủi ro cho mỗi giao dịch.
Trễ thời điểm của chỉ số: EMA là chỉ số chậm trễ, có thể cung cấp tín hiệu chậm trễ trong thị trường thay đổi nhanh chóng, dẫn đến thời gian nhập cảnh không tốt.
Rủi ro phá vỡ giả: Thị trường có thể có hiện tượng phá vỡ giả, dẫn đến tín hiệu sai. Giải pháp là giới thiệu xác nhận khối lượng giao dịch hoặc tăng chu kỳ xác nhận phá vỡ.
Thách thức điều chỉnh độ nhạy: Các tham số của tín hiệu dừng sụp (ví dụ như tỷ lệ đường bóng so với thực thể) cần được điều chỉnh cho các thị trường và chu kỳ khác nhau, quá nhạy cảm có thể dẫn đến giao dịch quá mức, và quá nghiêm ngặt có thể bỏ lỡ cơ hội.
Rủi ro trong giai đoạn chuyển hướng: Trong giai đoạn chuyển hướng, chiến lược có thể tạo ra một loạt các giao dịch thua lỗ. Giải pháp là tăng bộ lọc cường độ xu hướng hoặc giảm tần suất giao dịch khi xu hướng không rõ ràng.
Sự không phù hợp của khoảng dừng cố định: Sử dụng cùng một phần trăm dừng đối với tất cả các giao dịch (,5%) có thể không phù hợp với tỷ lệ biến động thị trường khác nhau. Bạn có thể cân nhắc sử dụng khoảng dừng động dựa trên biến động.
Hạn chế của điều kiện lọc RSI: Sử dụng lọc RSI chỉ cho giao dịch không đầu có thể gây ra tần số giao dịch không cân bằng. Có thể xem xét giới thiệu cơ chế lọc tương tự hoặc tối ưu hóa các tham số RSI hiện tại cho giao dịch nhiều đầu.
Các tham số thích ứng với tỷ lệ dao động: giới thiệu các chỉ số tỷ lệ dao động (như ATR) để điều chỉnh động yêu cầu tỷ lệ đường viền và khoảng cách dừng của tín hiệu dừng quay, cho phép chiến lược thích ứng tốt hơn với các điều kiện thị trường khác nhau.
Xác nhận nhiều khung thời gian: Xác nhận xu hướng giới thiệu lại khung thời gian cao hơn (như biểu đồ 1 giờ) để tăng độ tin cậy của tín hiệu giao dịch và giảm tác động của tín hiệu giả.
Tối ưu hóa thời gian nhập: Tối ưu hóa thời gian nhập, tăng tỷ lệ thành công của giao dịch bằng cách thêm các điều kiện lọc bổ sung (như chỉ số cường độ xu hướng, xác nhận khối lượng giao dịch).
Cơ chế dừng phần: giới thiệu cơ chế dừng phần, di chuyển dừng lỗ đến giá chi phí hoặc khóa một phần lợi nhuận sau khi đạt được lợi nhuận nhất định, để cân bằng tốt hơn rủi ro và lợi nhuận.
Mở rộng chu kỳ phản hồi: thực hiện phản hồi toàn diện hơn trong các chu kỳ và điều kiện thị trường khác nhau để xác minh sự ổn định và thích ứng của chiến lược.
Tối ưu hóa học máy: Sử dụng phương pháp học máy để tự động tối ưu hóa các tham số chiến lược để tìm các tham số phù hợp nhất cho một thị trường cụ thể.
Kiểm soát tần số giao dịch: giới thiệu giới hạn số lần giao dịch hoặc cơ chế thời gian nguội để tránh giao dịch quá mức trong điều kiện thị trường bất lợi.
Chiến lược dừng giao dịch chỉ số di chuyển bằng phẳng là một hệ thống giao dịch định lượng kết hợp phân tích kỹ thuật và quản lý rủi ro để tạo ra tín hiệu giao dịch bằng cách xác định các hình thức phá vỡ cụ thể và kết hợp với xác nhận xu hướng. Ưu điểm chính của chiến lược này là các quy tắc giao dịch rõ ràng và cơ chế kiểm soát rủi ro nghiêm ngặt, giúp các quyết định giao dịch được hệ thống hóa và kỷ luật hơn. Tuy nhiên, như bất kỳ chiến lược phân tích kỹ thuật nào, nó cũng phải đối mặt với những thách thức như sự chậm trễ của chỉ số và khả năng thích ứng với thay đổi thị trường.
Chiến lược này có tiềm năng cho hiệu suất ổn định hơn trong các môi trường thị trường khác nhau bằng cách giới thiệu các cải tiến về các tham số tự thích ứng với tỷ lệ dao động, xác nhận và tối ưu hóa thời gian nhập vào nhiều khung thời gian. Đặc biệt, việc áp dụng phương pháp học máy để tối ưu hóa tham số có thể nâng cao đáng kể khả năng thích ứng và hiệu suất tổng thể của chiến lược.
/*backtest
start: 2024-02-26 00:00:00
end: 2025-02-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Advanced Candle Stop Strategy Backtest - Tuned v9 - Max Trades", overlay=true)
// --- EMA Variables ---
ema5_length = 5
ema20_length = 20
ema90_length = 90
ema5 = ta.ema(close, ema5_length)
ema20 = ta.ema(close, ema20_length)
ema90 = ta.ema(close, ema90_length)
// --- Support, Resistance, and Volume Calculation ---
lookback_support_resistance = 30
support_level = ta.lowest(low, lookback_support_resistance)
resistance_level = ta.highest(high, lookback_support_resistance)
// --- Volume Condition for Short (Removed) ---
avg_volume_lookback = 20
avg_volume = ta.sma(volume, avg_volume_lookback)
// --- RSI Condition for Short (Removed) ---
rsi_length = 14
rsi_overbought = 70
rsi = ta.rsi(close, rsi_length)
// --- Candle Stop Function ---
is_candle_stop(trend) =>
body = math.abs(close - open)
upper_shadow = high - math.max(open, close)
lower_shadow = math.min(open, close) - low
if trend == "up"
lower_shadow >= 0.8 * body and upper_shadow < body and close > open // Shadow ratio reduced to 0.8 for longs
else if trend == "down"
upper_shadow >= 0.8 * body and lower_shadow < body and close < open // Shadow ratio reduced to 0.8 for shorts - EMA5 and Volume conditions removed
else
false
// --- Trend Determination (only 15m, no 1H confirmation) ---
trend = ema20 > ema90 ? "up" : ema20 < ema90 ? "down" : "neutral"
final_trend = trend // حذف تأیید با تایمفریم 1H
// --- Breakout Detection ---
var bool breakout_detected = false
if final_trend == "up" and close > resistance_level
breakout_detected := true
alert("شکست صعودی تشخیص داده شد! منتظر پولبک 🚀", alert.freq_once_per_bar)
else if final_trend == "down" and close < support_level
breakout_detected := true
alert("شکست نزولی تشخیص داده شد! منتظر پولبک 📉", alert.freq_once_per_bar)
// --- Entry and Exit Conditions ---
var float position = 0.0
var float entry_price = 0.0
var float stop_loss_price = na
var bool take_profit_long = false // Declare take_profit_long
var bool stop_loss_hit_long = false // Declare stop_loss_hit_long
var bool take_profit_short = false // Declare take_profit_short
var bool stop_loss_hit_short = false // Declare stop_loss_hit_short
risk_per_trade_percent = 2.5 // افزایش ریسک به 2.5٪ برای موقعیتهای بیشتر
if not breakout_detected
if position == 0 and is_candle_stop(final_trend)
risk_amount_usd = strategy.initial_capital * (risk_per_trade_percent / 100)
if final_trend == "up"
stop_loss_price := close * 0.975 // Stop loss at 2.5% below entry for longs
if (close - stop_loss_price) != 0
position_size_usd = risk_amount_usd / (close - stop_loss_price)
amount = position_size_usd / close
strategy.entry("Long", strategy.long, qty=amount)
position := amount
entry_price := close
else if final_trend == "down"
stop_loss_price := close * 1.025 // Stop loss at 2.5% above entry for shorts
if (stop_loss_price - close) != 0
position_size_usd = risk_amount_usd / (stop_loss_price - close)
amount = position_size_usd / close
if rsi >= rsi_overbought // RSI condition for short entry - No Change, still using RSI but not enforcing it for now - Consider removing RSI condition as well for max trades
strategy.entry("Short", strategy.short, qty=amount)
position := amount
entry_price := close
if position > 0
profit_percent_long = (close - entry_price) / entry_price * 100
profit_percent_short = (entry_price - close) / entry_price * 100
loss_percent_long = (entry_price - close) / entry_price * 100
loss_percent_short = (close - entry_price) / entry_price * 100
risk_reward_long = loss_percent_long != 0 ? profit_percent_long / loss_percent_long : (profit_percent_long != 0 ? 99999 : 0)
risk_reward_short = loss_percent_short != 0 ? profit_percent_short / loss_percent_short : (profit_percent_short != 0 ? 99999 : 0)
take_profit_long := profit_percent_long >= 7 and risk_reward_long >= 3
stop_loss_hit_long := close <= stop_loss_price
take_profit_short := profit_percent_short >= 6 and risk_reward_short >= 3 // Reduced Take Profit for Shorts to 6% - No Change
stop_loss_hit_short := close >= stop_loss_price
if (final_trend == "up" and (take_profit_long or stop_loss_hit_long)) or (final_trend == "down" and (take_profit_short or stop_loss_hit_short))
if final_trend == "up"
strategy.close("Long")
else
strategy.close("Short")
position := 0
entry_price := 0.0
breakout_detected := false
// --- Plotting EMAs and Support/Resistance Levels ---
plot(ema5, color=color.blue, title="EMA5")
plot(ema20, color=color.red, title="EMA20")
plot(ema90, color=color.green, title="EMA90")
plot(resistance_level, color=color.orange, style=plot.style_line, title="Resistance")
plot(support_level, color=color.orange, style=plot.style_line, title="Support")