Chiến lược Thánh Giá


Ngày tạo: 2023-12-01 15:27:39 sửa đổi lần cuối: 2023-12-01 15:27:39
sao chép: 0 Số nhấp chuột: 970
1
tập trung vào
1619
Người theo dõi

Chiến lược Thánh Giá

Chiến lược Thánh Giá (Holy Grail Strategy) là một chiến lược giao dịch định lượng kết hợp hệ thống đường hai chiều và chỉ số ADX. Nó nhằm mục đích xác định hướng và cường độ của xu hướng và giao dịch khi xu hướng đảo ngược.

Nguyên tắc chiến lược

Chiến lược này đồng thời sử dụng chỉ số di chuyển trung bình 20 ngày (EMA) và chỉ số ADX để xác định thời điểm vào thị trường. Cụ thể, nó sẽ phát ra tín hiệu giao dịch trong hai trường hợp sau:

  1. Khi ADX thấp hơn 30 (thể hiện xu hướng yếu) và giá phá vỡ EMA 20 ngày từ bên dưới, hãy làm nhiều hơn;

  2. Khi ADX cao hơn 30 ((gọi là xu hướng mạnh) và giá phá vỡ EMA 20 ngày từ trên, hãy tháo dỡ.

Có thể thấy rằng chiến lược này dựa vào sức mạnh và hướng của ADX để xác định xu hướng, sau đó kết hợp với kháng cự hỗ trợ của đường trung bình di chuyển để tìm cơ hội đảo ngược. Nó kết hợp các khái niệm về theo xu hướng và giao dịch ngược.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược Holy Cross là nó cân nhắc cả chiều hướng và cường độ của xu hướng, có thể tránh hiệu quả các phá vỡ giả, do đó làm giảm khả năng dừng lỗ. Cụ thể, chiến lược này có một số lợi thế sau:

  1. Sử dụng hệ thống hai dòng đồng nhất để xác định xu hướng một cách hiệu quả;
  2. Sử dụng ADX để đánh giá sức mạnh của xu hướng, tránh phá vỡ và phá vỡ không hiệu quả;
  3. Kết hợp các triết lý đảo ngược và giao dịch theo xu hướng, nó có thể nắm bắt xu hướng và đảo ngược tại các vị trí ngã ba.
  4. Các quy tắc hoạt động rất rõ ràng, đơn giản và dễ thực hiện.

Phân tích rủi ro

Chiến lược Thánh Giá cũng có một số rủi ro, chủ yếu tập trung vào các khía cạnh sau:

  1. ADX, một chỉ số hỗ trợ phán đoán, cũng có thể phát ra tín hiệu sai;
  2. Tuy nhiên, không phải tất cả các đợt sóng lớn nhỏ sẽ bị phá hủy bởi các đợt sóng nhỏ.
  3. Cài đặt tham số không đúng (ví dụ như ADX mục tiêu, chu kỳ đường trung bình, v.v.) có thể dẫn đến tín hiệu quá thường xuyên hoặc bảo vệ.

Để giảm nguy cơ trên, bạn có thể điều chỉnh các tham số để đạt được hiệu quả tối ưu, hoặc bạn có thể thiết lập dừng để kiểm soát tổn thất đơn. Ngoài ra, để chiến lược được thử nghiệm lại trên các giống và chu kỳ khác nhau cũng rất cần thiết.

Hướng tối ưu hóa

Các chiến lược của Thánh Giá có nhiều phương hướng tối ưu hóa:

  1. Thử các loại trung bình di chuyển khác nhau, chẳng hạn như trung bình di chuyển có trọng lượng.
  2. ADX có thể được tối ưu hóa như một tham số;
  3. Các tham số chu kỳ khác nhau có thể được thử nghiệm, chẳng hạn như 10 ngày, 30 ngày EMA;
  4. Các chỉ số hỗ trợ khác, như RSI, Bollinger Bands, có thể được thêm vào để xác nhận tín hiệu giao dịch.

Điều chỉnh tham số hoặc thêm các chỉ số mới có thể làm tăng tỷ lệ lợi nhuận hoặc tỷ lệ chiến thắng của chiến lược. Nhưng bất kỳ tối ưu hóa nào cũng cần có đủ phản hồi để đảm bảo tính ổn định của nó.

Tóm tắt

Nhìn chung, chiến lược thánh giá kết hợp các ưu điểm của đường hai chiều và chỉ số ADX, sử dụng các quy tắc giao dịch rõ ràng để nắm bắt sự biến đổi xu hướng. Nó hứa hẹn sẽ có hiệu quả tốt.

Mã nguồn chiến lược
/*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")