
Đây là một chiến lược giao dịch dựa trên lỗ hổng giá trị công bằng (FVG) kết hợp với quản lý rủi ro động và mục tiêu lợi nhuận cố định. Chiến lược này hoạt động trên chu kỳ 15 phút để nắm bắt cơ hội giao dịch tiềm năng bằng cách xác định lỗ hổng giá trong thị trường. Theo dữ liệu đánh giá, trong giai đoạn từ tháng 11 năm 2023 đến tháng 8 năm 2024, chiến lược này đã đạt tỷ lệ lợi nhuận ròng 284,40% với tổng số 153 giao dịch được thực hiện, trong đó tỷ lệ lợi nhuận đạt 71,24% và hệ số lợi nhuận là 2,422
Trung tâm của chiến lược là để xác định các lỗ hổng giá trị công bằng bằng cách giám sát mối quan hệ giá giữa ba dòng K liên tiếp. Cụ thể:
Chiến lược này đã cho thấy hiệu quả giao dịch tốt bằng cách kết hợp lý thuyết lỗ hổng giá trị công bằng và phương pháp quản lý rủi ro khoa học. Lợi nhuận cao và yếu tố lợi nhuận ổn định của chiến lược cho thấy nó có giá trị thực tế. Với hướng tối ưu hóa được đề xuất, chiến lược vẫn còn chỗ để nâng cao hơn nữa.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Fair Value Gap Strategy with % SL and Fixed TP", overlay=true, initial_capital=500, default_qty_type=strategy.fixed, default_qty_value=1)
// Parameters
fvgThreshold = input.float(0.5, "FVG Threshold (%)", minval=0.1, step=0.1)
// Fixed take profit in pips
takeProfitPips = 50
// Function to convert pips to price
pipsToPriceChange(pips) =>
syminfo.mintick * pips * 10
// Function to detect Fair Value Gap
detectFVG(dir) =>
gap = 0.0
if dir > 0 // Bullish FVG
gap := low[2] - high[1]
else // Bearish FVG
gap := low[1] - high[2]
math.abs(gap) > (close * fvgThreshold / 100)
// Detect FVGs
bullishFVG = detectFVG(1)
bearishFVG = detectFVG(-1)
// Entry conditions
longCondition = bullishFVG
shortCondition = bearishFVG
// Calculate take profit level
longTakeProfit = strategy.position_avg_price + pipsToPriceChange(takeProfitPips)
shortTakeProfit = strategy.position_avg_price - pipsToPriceChange(takeProfitPips)
// Calculate stop loss amount (5% of capital)
stopLossAmount = strategy.equity * 0.01
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Set exit conditions
if (strategy.position_size > 0)
strategy.exit("Long TP", "Long", limit=longTakeProfit)
strategy.close("Long SL", when=strategy.openprofit < -stopLossAmount)
else if (strategy.position_size < 0)
strategy.exit("Short TP", "Short", limit=shortTakeProfit)
strategy.close("Short SL", when=strategy.openprofit < -stopLossAmount)
// Plot signals
plotshape(longCondition, "Buy Signal", location = location.belowbar, color = color.green, style = shape.triangleup, size = size.small)
plotshape(shortCondition, "Sell Signal", location = location.abovebar, color = color.red, style = shape.triangledown, size = size.small)