
Chiến lược này là chiến lược giao dịch xu hướng DCA dựa trên chu kỳ thời gian 4 giờ của BTCUSDT. Ý tưởng chính của nó là phát tín hiệu giao dịch khi chỉ số RSI vượt quá khu vực mua bán quá mức. Sau đó, sử dụng phương pháp theo dõi xu hướng DCA, thực hiện nhiều lần đặt hàng, phân tán vị trí để giảm rủi ro.
Chiến lược này sử dụng chỉ số RSI để xác định tín hiệu mua quá bán. RSI lớn hơn bằng 70 là tín hiệu mua quá mức và nhỏ hơn bằng 30 là tín hiệu bán quá mức. Khi RSI giảm xuống từ khu vực mua quá mức hoặc tăng trở lại từ khu vực bán quá mức, nó có thể tạo ra đỉnh và phát ra tín hiệu giảm; khi RSI tăng lên từ khu vực mua quá mức hoặc tăng trở lại từ khu vực bán quá mức, nó có thể tạo ra đáy và phát ra tín hiệu tăng.
Tuy nhiên, để xác định thêm các tín hiệu, chiến lược này cũng hỗ trợ phán đoán hình dạng đường K bao gồm. Do đó, khi RSI đảo ngược, nếu có quá mua đảo ngược trở thành đường dương và quá bán đảo ngược trở thành đường dương, thì sẽ phát ra tín hiệu giao dịch xác định. Điều này có thể làm giảm thêm khả năng tín hiệu sai.
Một khi có tín hiệu giao dịch, nếu đó là tín hiệu nhiều đầu, hãy mở thêm vị trí theo tỷ lệ nhất định của giá bán tháo, sau đó tiếp tục theo dõi liên tục thiết lập mua vào lệnh dừng để thực hiện hiệu ứng DCA, chiến lược cho phép tối đa 5 vị trí; Nếu có tín hiệu trống, thì tất cả các vị trí nhiều vị trí hiện tại sẽ được bán tháo.
Lợi thế lớn nhất của chiến lược này là rủi ro có thể kiểm soát được. Thứ nhất, chỉ số RSI kết hợp với bộ lọc hình dạng đường K có thể làm giảm đáng kể tỷ lệ tín hiệu sai và đảm bảo độ tin cậy của tín hiệu. Thứ hai, sử dụng chiến lược DCA xây dựng kho hàng loạt, có thể phân tán rủi ro, thậm chí có thể kiểm soát mất mát vị trí cá nhân ngay cả khi xu hướng không thuận lợi.
Rủi ro lớn nhất của chiến lược này là thời gian giữ vị trí có thể dài hơn. Sử dụng chiến lược DCA và phương pháp theo dõi xu hướng, sẽ dẫn đến thời gian giữ vị trí lâu hơn, đặc biệt là khi thị trường đi ngược. Điều này có thể làm tăng chi phí vị trí và thậm chí có nguy cơ thua lỗ.
Ngoài ra, logic đặt hàng phức tạp hơn cũng làm tăng nguy cơ hoạt động sai. Cần đánh giá tổng hợp tín hiệu RSI và tín hiệu đường K, hoạt động khó khăn hơn, nếu đánh giá sai thì dễ dàng tạo ra vị trí sai.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tăng logic dừng lỗ. Bạn có thể buộc dừng lỗ trong một số điều kiện thua lỗ, tránh mất mát quá nhiều cho một vị trí.
Tối ưu hóa tỷ lệ vị trí. Bạn có thể thử nghiệm các kích thước vị trí khác nhau để tìm các thiết lập vị trí có lợi hơn rủi ro so với lợi nhuận.
Thử các chỉ số khác. Bạn có thể thử các chỉ số khác nhau như MACD, KD, RSI thay thế hoặc hỗ trợ để xem liệu có thể cải thiện độ chính xác của tín hiệu hay không.
Tối ưu hóa chu kỳ thời gian. Bạn có thể thử nghiệm các tham số chu kỳ thời gian khác nhau để tìm các tổ hợp tham số chu kỳ phù hợp hơn với logic của chiến lược.
Chiến lược giao dịch xu hướng DCA có rủi ro thấp này dựa trên RSI, được hỗ trợ bởi tín hiệu K-line, sử dụng phương pháp theo dõi dừng để thực hiện đặt DCA. Nguy cơ của chiến lược có thể được kiểm soát và phù hợp với các nhà đầu tư có khả năng chống lại rủi ro thị trường yếu.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Phil's Pine Scripts - low risk long DCA Trend trade", overlay=true)
////
//// trade on BTCUSDT 4H chart
//// $500 balance = $50 per trade, max 5 positions
//// backtested 54% profit over 3 years (~270)
////
//// define $ amount per trade
position_size = 50000
//// Plot short / long signals
// Get user input
rsiSource = input(title="RSI Source", type=input.source, defval=close)
rsiLength = input(title="RSI Length", type=input.integer, defval=14)
rsiOverbought = input(title="RSI Overbought Level", type=input.integer, defval=70)
rsiOversold = input(title="RSI Oversold Level", type=input.integer, defval=30)
// Get RSI value
rsiValue = rsi(rsiSource, rsiLength)
rsiOB = rsiValue >= rsiOverbought
rsiOS = rsiValue <= rsiOversold
// Identify engulfing candles
bullishEC = close > open[1] and close[1] < open[1]
bearishEC = close < open[1] and close[1] > open[1]
tradeSignal = ((rsiOS or rsiOS[1]) and bullishEC) or ((rsiOB or rsiOB[1]) and bearishEC)
// Plot signals to chart
plotshape(tradeSignal and bullishEC, title="Long", location=location.belowbar, color=color.green, transp=0, style=shape.triangleup, text="Long")
plotshape(tradeSignal and bearishEC, title="Short", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="Short")
//// DCA long trade when there is a bullish signal
if tradeSignal and bullishEC
strategy.entry("OL", strategy.long, qty=position_size / close)
//// Close all positions when there is a bearish signal
if tradeSignal and bearishEC
strategy.close_all()