Strategi Holy Grail adalah strategi perdagangan kuantitatif yang menggabungkan sistem purata bergerak berganda dengan penunjuk ADX. Ia bertujuan untuk mengenal pasti arah dan kekuatan trend dan perdagangan pada pembalikan trend.
Strategi ini menggunakan kedua-dua purata bergerak eksponen 20 hari (EMA) dan penunjuk ADX untuk mengenal pasti peluang kemasukan.
Apabila nilai ADX di bawah 30 (menunjukkan trend yang lebih lemah), dan harga memecahkan EMA 20 hari dari bawah, pergi panjang;
Apabila nilai ADX melebihi 30 (menunjukkan trend yang lebih kuat), dan harga memecahkan EMA 20 hari dari atas, pergi pendek.
Ia dapat dilihat bahawa strategi ini bergantung pada ADX untuk menilai kekuatan dan arah trend, dan kemudian menggabungkan sokongan dan rintangan purata bergerak untuk mencari peluang pembalikan.
Kelebihan terbesar strategi Holy Grail ialah ia mengambil kira kedua-dua arah dan kekuatan trend, yang dapat mengelakkan pecah palsu dengan berkesan dan mengurangkan kebarangkalian stop loss. Secara khusus, strategi ini mempunyai kelebihan berikut:
Strategi Holy Grail juga mempunyai beberapa risiko, terutamanya dalam bidang berikut:
Untuk mengurangkan risiko di atas, parameter boleh diselaraskan untuk mencapai kesan yang terbaik. Stop loss juga boleh ditetapkan untuk mengawal kerugian tunggal. Di samping itu, juga perlu menguji strategi pada pelbagai jenis dan kitaran.
Masih ada banyak arah pengoptimuman untuk strategi Holy Grail:
Menyesuaikan parameter atau menambah penunjuk baru boleh meningkatkan keuntungan atau kadar kemenangan strategi.
Ringkasnya, strategi Holy Grail menggabungkan kelebihan purata bergerak berganda dan penunjuk ADX, dan menggunakan peraturan perdagangan yang jelas untuk menangkap pembalikan trend. Ia mempunyai potensi untuk melakukan dengan baik. Walau bagaimanapun, peniaga masih perlu mengoptimumkan kombinasi parameter dan peraturan stop loss untuk menyesuaikan diri dengan persekitaran 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")