
Strategi Holy Grail adalah strategi perdagangan kuantitatif yang menggabungkan sistem dua garis lurus dan indikator ADX. Ia bertujuan untuk mengenal pasti arah dan kekuatan trend dan berdagang apabila trend berubah.
Strategi ini menggunakan purata bergerak indeks 20 hari (EMA) dan ADX untuk mengenal pasti masa masuk. Secara khusus, ia akan menghantar isyarat perdagangan dalam dua keadaan:
Apabila nilai ADX di bawah 30 (yang menunjukkan trend yang lemah) dan harga menembusi EMA 20 hari dari bawah, lakukan lebih banyak;
Apabila nilai ADX lebih tinggi daripada 30 ((menunjukkan trend yang kuat), dan harga menembusi EMA 20 hari dari atas, buat shorting.
Seperti yang dapat dilihat, strategi ini bergantung kepada kekuatan dan arah trend yang dinilai oleh ADX, dan kemudian digabungkan dengan sokongan dan rintangan pada purata bergerak untuk mencari peluang pembalikan. Ia menggabungkan konsep trend mengikuti dan perdagangan berlawanan.
Kelebihan terbesar strategi Holy Cross adalah bahawa ia mengambil kira arah dan kekuatan trend pada masa yang sama, dan dapat dengan berkesan mengelakkan perobosan palsu, sehingga mengurangkan kebarangkalian penghentian kerugian. Secara khusus, strategi ini mempunyai beberapa kelebihan:
Strategi Salib Suci juga mempunyai beberapa risiko, yang tertumpu kepada beberapa aspek berikut:
Untuk mengurangkan risiko yang disebutkan di atas, kombinasi parameter boleh disesuaikan untuk mencapai kesan terbaik, atau anda boleh menetapkan hentian untuk mengawal kerugian tunggal. Di samping itu, adalah perlu untuk membuat strategi untuk diuji semula pada pelbagai jenis dan kitaran.
Di samping itu, terdapat banyak cara yang boleh dioptimumkan dalam strategi Salib Suci:
Penyesuaian parameter atau penambahan penunjuk baru boleh meningkatkan kadar keuntungan atau kemenangan strategi. Tetapi apa-apa pengoptimuman memerlukan pengulangan yang mencukupi untuk memastikan kestabilan.
Secara keseluruhannya, strategi Holy Cross menggabungkan kelebihan garis dua rata dan indikator ADX, menggunakan peraturan perdagangan yang jelas untuk menangkap perubahan trend. Ia menjanjikan hasil yang baik. Tetapi pedagang masih perlu mengoptimumkan kombinasi parameter dan peraturan berhenti untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
/*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")