Chiến lược được đặt tên là
Chiến lược này sử dụng EMA 5 ngày và EMA 21 ngày để tạo thành kênh EMA. Khi EMA 5 ngày vượt qua EMA 21 ngày, nó được coi là một dấu hiệu tăng giá. Khi EMA 5 ngày vượt qua dưới EMA 21 ngày, nó được coi là một dấu hiệu giảm giá. Biểu đồ MACD có thể lọc các tín hiệu sai. Các tín hiệu mua chỉ được tạo ra khi biểu đồ MACD trên 0. Các tín hiệu bán chỉ được tạo ra khi biểu đồ MACD dưới 0.
Chiến lược này kết hợp nhận dạng xu hướng và lọc chỉ số, có thể xác định hiệu quả hướng xu hướng ngắn hạn. Sử dụng kênh EMA để xác định hướng xu hướng chính và biểu đồ MACD để lọc ra các tín hiệu sai có thể cải thiện đáng kể lợi nhuận. Cơ chế dừng lỗ cố định và lấy lợi nhuận cũng đảm bảo tỷ lệ rủi ro-lợi nhuận tốt. Nhìn chung, chiến lược này phù hợp với giao dịch ngắn hạn, đặc biệt là cho cổ phiếu và ngoại hối có động lực mạnh.
Chiến lược này chủ yếu phù hợp với giao dịch ngắn hạn và hoạt động kém trong thị trường dài hạn và dao động. Trong thị trường bên dài hạn, giao dịch qua kênh EMA xảy ra thường xuyên nhưng hầu hết là tín hiệu sai. Mặc dù biểu đồ MACD có thể đóng vai trò lọc, hiệu quả của nó vẫn còn hạn chế. Ngoài ra, dừng lỗ cố định và lấy lợi nhuận làm cho việc nắm bắt lợi nhuận gia tăng từ xu hướng dài hạn trở nên khó khăn. Vì vậy, đây là những rủi ro chính của chiến lược này. Các giải pháp là điều chỉnh các tham số linh hoạt dựa trên điều kiện thị trường hoặc chuyển sang các chiến lược khác phù hợp hơn với điều kiện thị trường hiện tại.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Tối ưu hóa các thông số EMA để tìm các kết hợp thông số tối đa hóa lợi nhuận cho các công cụ giao dịch cụ thể.
Tối ưu hóa các thông số MACD để cải thiện hiệu quả lọc.
Bao gồm các chỉ số biến động để mở rộng phạm vi dừng lỗ khi biến động thị trường tăng lên.
Thêm cơ chế dừng lỗ để làm cho dừng lỗ gần với giá, giảm kích hoạt dừng lỗ không cần thiết trong khi đảm bảo lợi nhuận.
Chiến lược này có lợi nhuận tương đối cao và đặc biệt phù hợp với giao dịch ngắn hạn. Nó là một lựa chọn tốt trong số các chiến lược giao dịch định lượng tần suất cao. Nhưng các nhà giao dịch cần điều chỉnh các tham số một cách hợp lý dựa trên điều kiện thị trường khi sử dụng nó, để tối đa hóa lợi nhuận chiến lược trong khi kiểm soát rủi ro giao dịch.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © moondevonyt //@version=5 strategy("Scalping with EMA channel and MACD", overlay=true) // Exponential moving average inputs ema21 = ta.ema(close, 21) ema5 = ta.ema(close, 5) // MACD inputs fastLength = 18 slowLength = 34 signalSmoothing = 12 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) macdHistogram = macdLine - signalLine // Buy and sell conditions buyCondition = ta.crossover(ema5, ema21) and macdHistogram > 0 sellCondition = ta.crossunder(ema5, ema21) and macdHistogram < 0 // Re-entry conditions reEntryBuyCondition = close > ema21 reEntrySellCondition = close < ema21 // Set stop loss and take profit stopLoss = 8 takeProfit = 15 // Execute Strategy if buyCondition strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", stop=close - stopLoss, limit=close + takeProfit) if reEntryBuyCondition strategy.entry("Re-Enter Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Re-Enter Buy", stop=close - stopLoss, limit=close + takeProfit) if sellCondition strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", stop=close + stopLoss, limit=close - takeProfit) if reEntrySellCondition strategy.entry("Re-Enter Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Re-Enter Sell", stop=close + stopLoss, limit=close - takeProfit) // Plotting EMAs and MACD plot(ema21, color=color.blue, title="21 EMA") plot(ema5, color=color.orange, title="5 EMA") plot(macdHistogram, color=color.red, title="MACD Histogram") // Plot buy and sell signals plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")