
Chiến lược này được gọi là chiến lược giao dịch đường ngắn dựa trên kênh EMA và MACD. Nó kết hợp kênh EMA và chỉ số MACD để xác định xu hướng và cung cấp tín hiệu giao dịch.
Chiến lược này sử dụng 5 ngày EMA và 21 ngày EMA để tạo ra một kênh EMA. Khi 5 ngày EMA vượt qua 21 ngày EMA, thị trường được coi là đi vào đa đầu, khi 5 ngày EMA vượt qua 21 ngày EMA, thị trường được coi là đi vào không. Đường thẳng của MACD chỉ số có thể được sử dụng để lọc tín hiệu giả. Chỉ khi đường thẳng MACD lớn hơn 0, tín hiệu mua sẽ được phát đi; Chỉ khi đường thẳng MACD nhỏ hơn 0, tín hiệu bán sẽ được phát đi.
Chiến lược này kết hợp với nhận dạng xu hướng và lọc chỉ số, có thể xác định hiệu quả hướng của tình hình đường ngắn. Sử dụng kênh EMA để xác định hướng xu hướng chính, sau đó sử dụng MACD để lọc các tín hiệu giả mạo, có thể làm tăng đáng kể khả năng kiếm lợi nhuận.
Chiến lược này chủ yếu áp dụng cho giao dịch đường ngắn, không hiệu quả trong đường dài và biến động. Trong thị trường đường dài, tín hiệu chéo của kênh EMA thường xuyên, nhưng phần lớn là tín hiệu giả, trong khi đó đồ thị MACD thẳng có thể có một số tác dụng lọc, nhưng hiệu quả vẫn còn hạn chế. Ngoài ra, cơ chế dừng lỗ cố định làm cho nó khó nắm bắt lợi nhuận gia tăng do xu hướng đường dài mang lại.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này có lợi nhuận cao, đặc biệt phù hợp với giao dịch ngắn, là một lựa chọn tốt trong chiến lược giao dịch định lượng theo đuổi giao dịch tần số cao. Tuy nhiên, khi sử dụng, người giao dịch nên chú ý điều chỉnh các tham số hợp lý theo thị trường, tối đa hóa lợi nhuận của chiến lược, đồng thời 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")