Strategi perdagangan lintas rata-rata bergerak ganda

Penulis:ChaoZhang, Tanggal: 2023-10-07 16:39:01
Tag:

Gambaran umum

Strategi ini menggunakan salib emas dan salib kematian dari rata-rata bergerak ganda untuk menentukan tren dan menghasilkan sinyal beli dan jual. Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat dari bawah, salib emas terjadi dan sinyal beli dihasilkan. Ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat dari atas, salib kematian terjadi dan sinyal jual dihasilkan.

Logika Strategi

Strategi ini terdiri dari komponen berikut:

  1. Hitung nilai osilator harga dalam bentuk persentase. Nilai osilator adalah persentase harga dikurangi nilai median. Nilai median dihitung sebagai rata-rata contoh harga tertinggi dan terendah 20 hari.

  2. Menghitung rata-rata bergerak dari nilai osilator, seperti rata-rata bergerak Hull 20 hari.

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

  4. Tentukan apakah rata-rata bergerak melintasi di atas atau di bawah rata-rata bergerak tertinggal, menghasilkan sinyal salib emas atau salib kematian.

  5. Mengeluarkan sinyal beli dan jual.

Secara khusus, strategi pertama menghitung nilai osilator harga, kemudian rata-rata bergerak osilator, dan kemudian nilai tertinggal dari rata-rata bergerak.

Ketika rata-rata bergerak osilator melintasi di atas rata-rata bergerak tertinggal, sinyal salib emas dihasilkan untuk pergi panjang.

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

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Menggunakan rata-rata bergerak ganda menyaring sinyal palsu dan meningkatkan keandalan sinyal.

  2. Menggabungkan rata-rata bergerak cepat dan lambat menangkap tren jangka menengah. MA cepat sensitif terhadap perubahan harga sementara MA lambat memiliki kualitas yang tertinggal. Menggabungkan keduanya menyaring kebisingan jangka pendek sambil menangkap pembalikan tren jangka menengah.

  3. Osilator menyoroti titik-titik breakout dan menghasilkan sinyal perdagangan yang lebih jelas.

  4. Algoritma dan parameter MA yang dapat disesuaikan sesuai dengan lingkungan pasar yang berbeda.

  5. Logika strategi yang sederhana dan jelas, mudah dimengerti dan diimplementasikan, ramah pemula.

Analisis Risiko

Risiko dari strategi ini meliputi:

  1. Dual MA crossover memiliki sinyal tertinggal, berpotensi kehilangan titik masuk terbaik.

  2. Cenderung untuk sinyal yang salah selama pasar rentang terbatas.

  3. Tidak dapat menentukan kekuatan tren, risiko keluar lebih awal selama pasar bull.

  4. Terlalu banyak parameter yang dapat disesuaikan, sulit untuk mengoptimalkan kombinasi parameter terbaik.

  5. Tidak ada mekanisme stop loss, tidak dapat mengendalikan kerugian perdagangan tunggal.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan jenis dan parameter MA, pengujian stabilitas di pasar yang berbeda.

  2. Tambahkan indikator penentu tren seperti ADX untuk menghindari perdagangan yang tidak perlu dari sinyal yang salah.

  3. Tambahkan mekanisme stop loss seperti trailing stop atau stop persentase untuk mengendalikan kerugian perdagangan tunggal.

  4. Masukkan indikator lain seperti volume, RSI untuk meningkatkan kualitas sinyal.

  5. Gunakan pembelajaran mesin untuk mengoptimalkan parameter secara otomatis untuk pengaturan yang lebih kuat.

  6. Pertimbangkan untuk meringankan kondisi masuk untuk mengurangi perdagangan yang hilang.

Ringkasan

Strategi crossover rata-rata bergerak ganda ini menangkap titik pembalikan tren jangka menengah dengan menggabungkan rata-rata bergerak cepat dan lambat, menyaring kebisingan pasar jangka pendek. Ini memiliki keuntungan karena sederhana, mudah dimengerti dan ramah pemula. Tetapi juga memiliki kelemahan seperti menghasilkan sinyal yang salah dan ketidakmampuan untuk menentukan kekuatan tren. Strategi dapat ditingkatkan dengan mengoptimalkan parameter MA, menambahkan filter tren, mengatur kondisi stop loss dll untuk memenuhi lingkungan pasar yang berbeda. Secara keseluruhan, strategi MA ganda adalah strategi berbasis indikator teknis praktis yang layak diverifikasi melalui optimasi dan pengujian langsung.


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

Lebih banyak