Strategi Holy Grail

Penulis:ChaoZhang, Tanggal: 2023-12-01 15:27:39
Tag:

img

Strategi Holy Grail

Strategi Holy Grail adalah strategi perdagangan kuantitatif yang menggabungkan sistem rata-rata bergerak ganda dengan indikator ADX. Ini bertujuan untuk mengidentifikasi arah dan kekuatan tren dan perdagangan pada pembalikan tren.

Prinsip Strategi

Strategi ini menggunakan rata-rata bergerak eksponensial 20 hari (EMA) dan indikator ADX untuk mengidentifikasi peluang masuk. Secara khusus, strategi ini akan mengeluarkan sinyal perdagangan dalam dua kasus berikut:

  1. Ketika nilai ADX di bawah 30 (menunjukkan tren yang lebih lemah), dan harga menembus EMA 20 hari dari bawah, pergi panjang;

  2. Ketika nilai ADX di atas 30 (menunjukkan tren yang lebih kuat), dan harga menembus EMA 20 hari dari atas, pergi pendek.

Ini dapat dilihat bahwa strategi ini mengandalkan ADX untuk menilai kekuatan dan arah tren, dan kemudian menggabungkan dukungan dan resistensi rata-rata bergerak untuk mencari peluang pembalikan.

Analisis Keuntungan

Keuntungan terbesar dari strategi Holy Grail adalah bahwa ia memperhitungkan baik arah dan kekuatan tren, yang secara efektif dapat menghindari false breakout dan mengurangi probabilitas stop loss. Secara khusus, strategi ini memiliki keuntungan berikut:

  1. Menggunakan sistem rata-rata bergerak ganda dapat secara efektif mengidentifikasi tren;
  2. Dengan bantuan ADX untuk mengevaluasi kekuatan tren, penyusutan yang tidak valid dapat dihindari;
  3. Menggabungkan konsep pembalikan dan perdagangan tren dapat menangkap tren dan membalik pada titik balik;
  4. Aturan operasinya jelas dan sederhana, mudah diterapkan.

Analisis Risiko

Strategi Holy Grail juga memiliki beberapa risiko, terutama di bidang berikut:

  1. ADX sebagai indikator penilaian tambahan juga akan mengeluarkan sinyal yang salah;
  2. Crossover dari rata-rata bergerak ganda tidak dapat sepenuhnya menghindari kerugian yang disebabkan oleh rally kecil;
  3. Pengaturan parameter yang tidak tepat (seperti nilai target ADX, periode rata-rata bergerak, dll.) dapat menyebabkan sinyal menjadi terlalu sering atau konservatif.

Untuk mengurangi risiko di atas, parameter dapat disesuaikan untuk mencapai efek terbaik. Stop loss juga dapat diatur untuk mengendalikan kerugian tunggal. Selain itu, juga perlu untuk menguji strategi pada berbagai varietas dan siklus.

Arahan Optimasi

Masih ada banyak arah optimasi untuk strategi Holy Grail:

  1. Cobalah berbagai jenis rata-rata bergerak, seperti rata-rata bergerak tertimbang, dll.
  2. Nilai target ADX dapat dioptimalkan sebagai parameter;
  3. Parameter siklus yang berbeda dapat diuji, seperti EMA 10 hari, 30 hari;
  4. Indikator tambahan lainnya dapat ditambahkan, seperti RSI, Bollinger Bands, dll untuk mengkonfirmasi sinyal perdagangan.

Menyesuaikan parameter atau menambahkan indikator baru dapat meningkatkan profitabilitas atau tingkat kemenangan strategi.

Ringkasan

Secara singkat, strategi Holy Grail menggabungkan keuntungan dari rata-rata bergerak ganda dan indikator ADX, dan menggunakan aturan perdagangan yang jelas untuk menangkap pembalikan tren. Ini memiliki potensi untuk berkinerja baik. Namun, pedagang masih perlu mengoptimalkan kombinasi parameter dan aturan stop loss untuk beradaptasi dengan lingkungan pasar yang berbeda. Selain itu, tidak peduli seberapa meningkat, tidak mungkin untuk sepenuhnya menghindari stop loss, yang merupakan dilema yang dihadapi oleh setiap strategi perdagangan.


/*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")
    


Lebih banyak