
Chiến lược này là hệ thống giao dịch theo xu hướng kết hợp các tín hiệu giao cắt trung bình động với quản lý rủi ro năng động. Công cụ này sử dụng đường trung bình động hàm mũ nhanh và chậm (EMA) để xác định xu hướng thị trường và kết hợp với chỉ báo Biên độ thực trung bình (ATR) để tối ưu hóa thời điểm vào lệnh. Đồng thời, chiến lược này tích hợp cơ chế bảo vệ ba chiều: dừng lỗ theo phần trăm, mục tiêu lợi nhuận và dừng lỗ theo sau.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Đây là một chiến lược đi theo xu hướng được thiết kế tốt và có logic rõ ràng. Bằng cách nắm bắt xu hướng thông qua đường trung bình động giao nhau, sử dụng ATR để kiểm soát rủi ro và phối hợp với nhiều cơ chế dừng lỗ, một hệ thống giao dịch hoàn chỉnh sẽ được hình thành. Ưu điểm chính của chiến lược này là khả năng kiểm soát rủi ro toàn diện và khả năng tùy chỉnh cao, nhưng trong giao dịch thực tế, bạn cần chú ý đến vấn đề tín hiệu sai và chi phí giao dịch. Thông qua các hướng tối ưu hóa được đề xuất, chiến lược vẫn còn có thể được cải thiện thêm.
/*backtest
start: 2024-12-29 00:00:00
end: 2025-01-05 00:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jesusperezguitarra89
//@version=6
strategy("High Profit Buy/Sell Signals", overlay=true)
// Parámetros ajustables
fastLength = input.int(5, title="Fast EMA Length")
slowLength = input.int(20, title="Slow EMA Length")
atrLength = input.int(10, title="ATR Length")
atrMultiplier = input.float(2.5, title="ATR Multiplier")
stopLossPercent = input.float(1.0, title="Stop Loss %")
takeProfitPercent = input.float(5.0, title="Take Profit %")
trailingStop = input.float(2.0, title="Trailing Stop %")
// Cálculo de EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Cálculo del ATR
atr = ta.atr(atrLength)
// Señales de compra y venta
longCondition = ta.crossover(fastEMA, slowEMA) and close > slowEMA + atrMultiplier * atr
shortCondition = ta.crossunder(fastEMA, slowEMA) and close < slowEMA - atrMultiplier * atr
// Dibujar señales en el gráfico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Estrategia de backtesting para marcos de tiempo en minutos
if longCondition
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit", from_entry="Buy", limit=close * (1 + takeProfitPercent / 100), stop=close * (1 - stopLossPercent / 100), trail_points=atr * trailingStop)
if shortCondition
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit", from_entry="Sell", limit=close * (1 - takeProfitPercent / 100), stop=close * (1 + stopLossPercent / 100), trail_points=atr * trailingStop)
// Mostrar EMAs
plot(fastEMA, color=color.blue, title="Fast EMA")
plot(slowEMA, color=color.orange, title="Slow EMA")