Strategi Perdagangan Double Moving Average Golden Cross dan Dead Cross


Tanggal Pembuatan: 2023-10-07 16:39:01 Akhirnya memodifikasi: 2023-10-07 16:39:01
menyalin: 0 Jumlah klik: 678
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini menggunakan dua moving averages untuk menentukan tren dan memberikan sinyal beli dan jual. Ketika moving averages bergerak cepat dari bawah melewati moving averages bergerak lambat, maka akan muncul sebuah buy signal. Ketika moving averages bergerak cepat dari atas melewati moving averages bergerak lambat, maka akan muncul sebuah sell signal.

Prinsip Strategi

Strategi ini terdiri dari beberapa bagian:

  1. Nilai oscillator dalam bentuk persentase dari harga yang dihitung. Nilai oscillator adalah persentase dari harga dikurangi satu nilai rata-rata. Nilai rata-rata dihitung dari rata-rata, misalnya, harga tertinggi dan terendah selama 20 hari.

  2. Menghitung rata-rata bergerak dari nilai oscillator, seperti rata-rata bergerak 20 hari hull.

  3. Hitung nilai keterlambatan rata-rata bergerak, seperti keterlambatan 12 hari.

  4. Penjelasan apakah rata-rata bergerak naik atau turun dengan penundaan rata-rata bergerak, muncul sinyal garpu emas atau garpu mati.

  5. Ini adalah sinyal untuk membeli dan menjual.

Secara khusus, strategi pertama menghitung nilai oscillator harga, kemudian menghitung rata-rata bergerak oscillator, dan kemudian menghitung nilai latensi dari rata-rata bergerak tersebut.

Ketika oscillator bergerak di atas rata-rata rata-rata bergerak, menghasilkan sinyal golden fork, melakukan over; ketika oscillator bergerak di bawah rata-rata rata-rata bergerak, menghasilkan sinyal dead fork, melakukan over.

Dengan demikian, arah perdagangan ditentukan dengan menilai persilangan dua rata-rata bergerak.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Penggunaan rata-rata bergerak ganda untuk memfilter sinyal palsu, meningkatkan keandalan sinyal.

  2. Menggunakan kombinasi garis rata-rata cepat dan lambat untuk menangkap tren menengah. Garis rata-rata cepat sensitif terhadap perubahan harga, dan garis rata-rata lambat memiliki keterlambatan. Penggunaan kombinasi dapat menangkap pembalikan tren menengah sambil menghapus kebisingan jangka pendek.

  3. Penggunaan oscillator dapat menonjolkan titik terobosan dan menghasilkan sinyal perdagangan yang lebih jelas.

  4. Algoritma dan parameter rata-rata bergerak dapat disesuaikan untuk menyesuaikan dengan lingkungan pasar yang berbeda.

  5. Logika strategi sederhana dan jelas, mudah dipahami dan diterapkan, cocok untuk pemula.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Bila dua rata-rata bergerak berpotongan, sinyal akan terlambat dan mungkin akan kehilangan titik masuk yang optimal.

  2. Rata-rata bergerak ganda dapat menimbulkan sinyal yang salah dalam perhitungan pasar.

  3. Tidak ada yang tahu apakah tren ini kuat atau lemah, dan mungkin akan meninggalkan pasar bullish lebih awal.

  4. PARAMETERS terlalu banyak parameter yang dapat disesuaikan, sehingga tidak mudah untuk mengoptimalkan kombinasi parameter yang optimal.

  5. Tidak ada mekanisme stop loss, tidak ada kendali atas kerugian tunggal.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan jenis dan parameter moving average untuk menguji stabilitas berbagai kombinasi di berbagai pasar.

  2. Menambahkan indikator penilaian tren, seperti ADX, untuk menghindari perdagangan yang tidak perlu karena sinyal yang salah.

  3. Tambahkan strategi stop loss, seperti stop loss bergerak atau stop loss persentase, untuk mengendalikan kerugian tunggal.

  4. Ini dikombinasikan dengan indikator lain, seperti energi volume perdagangan, RSI, dan lain-lain, untuk meningkatkan kualitas sinyal perdagangan.

  5. Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter secara otomatis dan mendapatkan pengaturan parameter yang lebih stabil.

  6. Pertimbangkan untuk meringankan persyaratan masuk untuk mengurangi kemungkinan kehilangan tiket.

Meringkaskan

Strategi ini memiliki kelebihan yang sederhana mudah untuk diterapkan, mudah dipahami, dan ramah bagi pemula. Namun, ada juga kelemahan yang menghasilkan sinyal yang salah dan tidak dapat menilai kekuatan tren. Dengan mengoptimalkan parameter rata-rata bergerak, menambahkan indikator penilaian tren, mengatur kondisi stop loss, dan lain-lain, strategi ini dapat ditingkatkan agar lebih sesuai dengan lingkungan pasar yang berbeda.

Kode Sumber Strategi
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EvoCrypto

//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")

// INPUTS {
na_1                =   input(false,    title="────────────{ Oscillator }──────────────")

// Osc_Src             =   input(close,    title="Oscillator Source                                ")

Example_Length      =   input(20,       title="Example Length", minval=1)
Osc_Src             =   (highest(Example_Length) + lowest(Example_Length)) / 2

// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example

Osc_Format          =   input("Percent",title="Oscillator Format",              options=["Percent", "Currency"]) 

na_2                =   input(false,    title="─────────────{ Average }──────────────")
Average_Type        =   input("Hull",   title="Average Type",                   options=["Hull", "Sma", "Ema", "Wma"])
Length              =   input(50,       title="Average Length", minval=1)
Lagg                =   input(12,       title="Average Lagg",   minval=1)
Display_MA          =   input(true,     title="Display Average")
// }

// SETTINGS {
Osc_Sum             =   
 Osc_Format == "Percent"  ? (close - Osc_Src) / close * 100 :
 Osc_Format == "Currency" ? (close - Osc_Src)               : na

Osc_MA              =   Display_MA == false ? na:
 Average_Type == "Hull"? hma(Osc_Sum, Length)   :
 Average_Type == "Sma" ? sma(Osc_Sum, Length)   :
 Average_Type == "Ema" ? ema(Osc_Sum, Length)   :
 Average_Type == "Wma" ? wma(Osc_Sum, Length)   : na
Osc_MA_1            =   Osc_MA[Lagg]

Cross_Up            =   crossover( Osc_MA, Osc_MA_1)
Cross_Down          =   crossunder(Osc_MA, Osc_MA_1)

Osc_Color           =   Osc_Sum > 0         ? color.new(#bbdefb, 70)  : Osc_Sum < 0          ? color.new(#000000, 70)  : na
Average_Color       =   Osc_MA  > Osc_MA_1  ? color.new(#311b92, 100) : Osc_MA  < Osc_MA_1   ? color.new(#b71c1c, 100) : na
// }

// PLOT {
plot(Osc_Sum,                           title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)

Plot_0              =   plot(Osc_MA,    title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1              =   plot(Osc_MA_1,  title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1,                    title="Average",    color=Average_Color)

plotshape(Cross_Up   ? Osc_MA_1 : na,   title="Cross Up",   color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na,   title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }

// STRATEGY {
if (Cross_Up)
    strategy.entry("Long", strategy.long)
if (Cross_Down)
    strategy.entry("Short", strategy.short)
// }