Đây là một chiến lược giao dịch định lượng kết hợp xu hướng EMA, đột phá số vòng và lọc phiên giao dịch. Chiến lược chủ yếu dựa trên hướng xu hướng EMA, kết hợp với các mô hình đột phá giá ở các mức số vòng chính như tín hiệu giao dịch, trong khi kết hợp lọc phiên để nâng cao chất lượng giao dịch. Chiến lược sử dụng stop-loss và take-profit dựa trên tỷ lệ phần trăm để quản lý rủi ro.
Logic cốt lõi bao gồm các yếu tố chính sau: 1. Sử dụng EMA 20 ngày như một công cụ xác định xu hướng, chỉ đi xa trên EMA và ngắn dưới 2. Tìm kiếm các mô hình ngập gần các số tròn chính (khoảng thời gian 5 USD) 3. Chỉ giao dịch trong các phiên London và New York để tránh thời gian biến động thấp 4. Các tín hiệu dài yêu cầu: mô hình ngập tăng, giá trên EMA, phiên giao dịch hoạt động 5. Tín hiệu ngắn đòi hỏi: mô hình hấp thụ giảm, giá dưới EMA, phiên giao dịch hoạt động Thực hiện tỷ lệ dừng lỗ 1% và tỷ lệ rủi ro-lợi nhuận 1,5% cho quản lý thương mại
Chiến lược xây dựng một hệ thống giao dịch hợp lý nghiêm ngặt bằng cách kết hợp nhiều cơ chế bao gồm xu hướng EMA, mô hình giá và lọc phiên. Mặc dù có một số hạn chế nhất định, việc tối ưu hóa và tinh chỉnh liên tục có thể tăng cường tính ổn định và lợi nhuận của chiến lược. Chiến lược phục vụ như một nền tảng vững chắc cho một hệ thống theo xu hướng trung và dài hạn, phù hợp với tùy chỉnh dựa trên các yêu cầu giao dịch cụ thể.
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("The Gold Box Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200) // Inputs roundNumberInterval = input.int(5, title="Round Number Interval ($)", minval=1) useEMA = input.bool(true, title="Use 20 EMA for Confluence") emaLength = input.int(20, title="EMA Length") // Session times for London and NY londonSession = input("0300-1200", title="London Session (NY Time)") nySession = input("0800-1700", title="New York Session (NY Time)") // EMA Calculation emaValue = ta.ema(close, emaLength) // Plot Round Number Levels roundLow = math.floor(low / roundNumberInterval) * roundNumberInterval roundHigh = math.ceil(high / roundNumberInterval) * roundNumberInterval // for level = roundLow to roundHigh by roundNumberInterval // line.new(x1=bar_index - 1, y1=level, x2=bar_index, y2=level, color=color.new(color.gray, 80), extend=extend.both) // Session Filter inLondonSession = not na(time("1", londonSession)) inNYSession = not na(time("1", nySession)) inSession = true // Detect Bullish and Bearish Engulfing patterns bullishEngulfing = close > open[1] and open < close[1] and close > emaValue and inSession bearishEngulfing = close < open[1] and open > close[1] and close < emaValue and inSession // Entry Conditions if bullishEngulfing strategy.entry("Long", strategy.long, comment="Bullish Engulfing with EMA Confluence") if bearishEngulfing strategy.entry("Short", strategy.short, comment="Bearish Engulfing with EMA Confluence") // Stop Loss and Take Profit stopLossPercent = input.float(1.0, title="Stop Loss (%)", minval=0.1) / 100 takeProfitPercent = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100 strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent), limit=close * (1 + takeProfitPercent)) strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent), limit=close * (1 - takeProfitPercent))