Chiến lược Holy Grail là một chiến lược giao dịch định lượng kết hợp hệ thống trung bình động kép với chỉ số ADX. Nó nhằm mục đích xác định hướng và sức mạnh của xu hướng và giao dịch khi xu hướng đảo ngược.
Chiến lược này sử dụng cả đường trung bình động theo cấp số nhân 20 ngày (EMA) và chỉ số ADX để xác định các cơ hội nhập cảnh. Cụ thể, nó sẽ phát ra tín hiệu giao dịch trong hai trường hợp sau:
Khi giá trị ADX dưới 30 (cho thấy xu hướng yếu hơn), và giá vượt qua đường EMA 20 ngày từ dưới, mua dài;
Khi giá trị ADX trên 30 (cho thấy xu hướng mạnh hơn), và giá vượt qua đường EMA 20 ngày từ trên, đi ngắn.
Có thể thấy rằng chiến lược này dựa trên ADX để đánh giá sức mạnh và hướng của xu hướng, và sau đó kết hợp hỗ trợ và kháng cự của đường trung bình động để tìm kiếm các cơ hội đảo ngược.
Ưu điểm lớn nhất của chiến lược Holy Grail là nó tính đến cả hướng và sức mạnh của xu hướng, có thể ngăn chặn hiệu quả các đột phá sai và giảm xác suất dừng lỗ.
Chiến lược Chén Thánh cũng có một số rủi ro, chủ yếu là trong các lĩnh vực sau:
Để giảm các rủi ro trên, các thông số có thể được điều chỉnh để đạt được hiệu quả tốt nhất. Stop loss cũng có thể được thiết lập để kiểm soát tổn thất đơn lẻ. Ngoài ra, cũng cần phải thử nghiệm các chiến lược trên các giống và chu kỳ khác nhau.
Vẫn còn nhiều hướng tối ưu hóa cho chiến lược Chén Thánh:
Điều chỉnh các tham số hoặc thêm các chỉ số mới có thể làm tăng lợi nhuận hoặc tỷ lệ chiến thắng của chiến lược.
Tóm lại, chiến lược Holy Grail kết hợp các lợi thế của đường trung bình động đôi và chỉ số ADX, và sử dụng các quy tắc giao dịch rõ ràng để nắm bắt sự đảo ngược xu hướng. Nó có tiềm năng hoạt động tốt. Tuy nhiên, các nhà giao dịch vẫn cần tối ưu hóa sự kết hợp các tham số và các quy tắc dừng lỗ để thích nghi với môi trường thị trường khác nhau. Hơn nữa, bất kể cải thiện như thế nào, không thể tránh hoàn toàn dừng lỗ, đó là một tình huống khó khăn mà mọi chiến lược giao dịch phải đối mặt.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("LAT Holy Grail v3", overlay=true) /////////////TEST TIME //////////////////////// testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(4, "Backtest Start Month") testStartDay = input(15, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2018, "Backtest Stop Year") testStopMonth = input(5, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ////////////////////////////////////////////////////////////////////// myema= ema(close, 20) plot(myema, color=green, title="eMA", linewidth=3) //longCondition = (crossover(close, myema)) //and adx3 < target //if (longCondition) //strategy.entry("My Long Entry Id", strategy.long) //shortCondition = (crossunder(close, myema)) //and adx3 > target //if (shortCondition) //strategy.entry("My Short Entry Id", strategy.short) ////////////////////////////////////////////////////////// /////////////////////////////////////// DMI /////////////////////////////////////////////// len3 = input(14, minval=1, title="DI Length") ///////////////////// lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50) //////////////////// up3 = change(high) /////////////////// down3 = -change(low) ////////////////// plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0) ///////////////// minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0) //////////////// trur3 = rma(tr, len3) /////////////// plus3 = fixnan(100 * rma(plusDM3, len3) / trur3) ////////////// minus3 = fixnan(100 * rma(minusDM3, len3) / trur3) ///////////// sum3 = plus3 + minus3 //////////// adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3) /////////// //plot(plus3, color=green, style=circles, linewidth=2, title="+DI") ////////// //plot(minus3, color=red, style=circles, linewidth=2, title="-DI") ///////// plot(adx3, color=aqua, style=line, linewidth=3, title="ADX") //////// target = input(30, title=" ADX Target Line") /////// plot(target, color=yellow, title="ADX Target Line") ////// ///////////////////////////////////////////////////////////////////////////////////////////////// plot(hl2) /////////////////////////////////////////////// eMA SIGNAL LINE /////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////// HOLY GRAIL STRATEGY /////////////////////////////////////////////////////////////////// if (adx3 <= target) and crossover(close, myema) strategy.entry("HolyGrail", strategy.long, comment="Long") if (adx3 >= target) and crossunder(close, myema) strategy.entry("HolyGrail", strategy.short, comment="Short")