
Chiến lược này kết hợp hai phương pháp theo dõi xu hướng và phân tích động lực, sử dụng các chỉ số đường trung bình di chuyển đơn giản (SMA) và đường trung bình di chuyển (MACD) để xác định cơ hội giao dịch tiềm năng. Chiến lược xác định xu hướng thị trường tổng thể thông qua chỉ số Trendilo (một chỉ số xu hướng dựa trên SMA), đồng thời sử dụng đường chéo của MACD để nắm bắt sự thay đổi động lực ngắn hạn.
Lập luận cốt lõi của chiến lược dựa trên các yếu tố then chốt sau:
Cụ thể, khi đường MACD đi từ dưới lên đường 0 và giá đóng cửa cao hơn đường Trendilo, sẽ được kích hoạt nhiều tín hiệu. Ngược lại, khi đường MACD đi từ trên lên đường 0 và giá đóng cửa thấp hơn đường Trendilo, sẽ được kích hoạt tín hiệu trống. Sau khi vào, chiến lược sử dụng mức dừng lỗ và lợi nhuận dựa trên ATR để quản lý rủi ro và khóa lợi nhuận.
Chiến lược này khéo léo kết hợp theo dõi xu hướng và phân tích động lực, cung cấp cho các nhà giao dịch một khuôn khổ phân tích thị trường tương đối toàn diện thông qua sự phối hợp của Trendilo và MACD. Phương pháp quản lý rủi ro động làm tăng khả năng thích ứng của chiến lược, cho phép nó duy trì sự ổn định trong các môi trường thị trường khác nhau. Tuy nhiên, các nhà giao dịch vẫn cần thận trọng khi sử dụng chiến lược này, đặc biệt là về tối ưu hóa tham số và kiểm soát rủi ro. Với sự giám sát và tối ưu hóa liên tục, chiến lược này có tiềm năng trở thành một công cụ giao dịch đáng tin cậy, đặc biệt phù hợp cho các nhà đầu tư muốn nắm bắt cơ hội trong thị trường xu hướng.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-09-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("NNFX Trendilo + Zero MACD Strategy", overlay=true)
// --- Inputs ---
atrPeriod = input.int(14, title="ATR Period")
stopLossMultiplier = input.float(1.5, minval=0.0, maxval = 20.0, step = 0.1 ,title="Stop Loss Multiplier")
takeProfitMultiplier = input.float(2.0, minval=0.0 , maxval = 20.0, step = 0.1,title="Take Profit Multiplier")
// --- Trendilo ---
trendiloPeriod = input.int(50, title="Trendilo Period")
trendilo = ta.sma(close, trendiloPeriod)
// --- MACD ---
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
macdZeroCrossUp = ta.crossover(macdLine, 0)
macdZeroCrossDown = ta.crossunder(macdLine, 0)
// --- ATR for Stop Loss and Take Profit ---
atr = ta.atr(atrPeriod)
stopLoss = atr * stopLossMultiplier
takeProfit = atr * takeProfitMultiplier
// --- Trading Logic ---
longCondition = macdZeroCrossUp and close > trendilo
shortCondition = macdZeroCrossDown and close < trendilo
// --- Execute Long Trades ---
if (longCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=close + takeProfit, stop=close - stopLoss)
// --- Execute Short Trades ---
if (shortCondition)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=close - takeProfit, stop=close + stopLoss)
// --- Plot Signals ---
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")
// --- Plot Trendilo ---
plot(trendilo, color=color.blue, linewidth=2)