Strategi Crossover Rata-rata Bergerak Sederhana

Penulis:ChaoZhang, Tanggal: 2023-11-14 16:17:16
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal beli dan jual berdasarkan golden cross dan death cross dari beberapa moving average (SMA) sederhana dengan periode waktu yang berbeda untuk menentukan arah tren. Strategi ini menggunakan 4 SMA - 20 hari, 50 hari, 100 hari dan 200 hari SMA. Ketika SMA jangka pendek melintasi SMA jangka panjang, itu dianggap sebagai golden cross dan sinyal beli dipicu. Ketika SMA jangka pendek melintasi di bawah SMA jangka panjang, itu dianggap sebagai death cross dan sinyal jual dipicu.

Logika Strategi

Logika inti dari strategi ini didasarkan pada poin-poin berikut:

  1. Menghitung beberapa SMA dengan periode waktu yang berbeda termasuk SMA 20 hari, 50 hari, 100 hari dan 200 hari.

  2. Periksa situasi silang antara SMA jangka pendek (20 hari) dan SMA jangka panjang (50 hari, 100 hari, 200 hari).

  3. Ketika SMA 20 hari melintasi SMA 50 hari, itu dianggap sebagai salib emas dan sinyal beli dipicu.

  4. Tren yang lebih besar ditentukan oleh SMA jangka panjang yang tetap berada di atas SMA jangka pendek, yaitu SMA 50 hari > SMA 20 hari.

  5. Prioritas untuk sinyal masuk adalah: SMA 20 hari vs SMA 50 hari > SMA 20 hari vs SMA 100 hari > SMA 20 hari vs SMA 200 hari.

  6. Sinyal keluar dihasilkan ketika SMA 20 hari melintasi kembali di bawah SMA 50 hari.

Strategi ini terutama mengandalkan SMA crossover untuk menentukan arah tren. Golden cross di pasar bull dan death cross di pasar bear dapat menandakan potensi awal tren. Selain itu, SMA jangka panjang yang tetap di atas SMA jangka pendek berfungsi sebagai konfirmasi dari tren yang lebih besar.

Keuntungan dari Strategi

Keuntungan utama dari strategi ini meliputi:

  1. Logikanya sederhana dan mudah dimengerti dan diterapkan.

  2. SMA lebih baik daripada EMA dalam menyaring kebisingan pasar dan mengidentifikasi tren.

  3. Menggunakan beberapa SMA periode waktu meningkatkan keandalan sinyal.

  4. Pengaturan prioritas untuk sinyal masuk menghindari masuk dini.

  5. Periode SMA dan warna yang dapat disesuaikan memungkinkan optimasi strategi.

  6. Berlaku pada beberapa kerangka waktu untuk gaya perdagangan yang berbeda.

  7. Sistem crossover SMA sangat efektif dalam menentukan arah tren utama.

Risiko dari Strategi

Beberapa risiko yang terkait dengan strategi ini:

  1. Terlalu banyak sinyal palsu dapat terjadi selama pasar range dengan penyeberangan SMA yang sering.

  2. Periode SMA tetap tidak dapat beradaptasi dengan perubahan pasar, parameter harus dioptimalkan berdasarkan tren dan volatilitas.

  3. SMA cross saja tidak dapat menentukan entri yang tepat, indikator lain seperti MACD harus dimasukkan.

  4. SMA memiliki sifat keterlambatan, waktu masuk perlu dioptimalkan atau perintah batas harus digunakan.

  5. Pelaksanaan stop loss yang ketat sangat penting untuk melestarikan modal.

  6. Dampak biaya perdagangan pada profitabilitas harus dipertimbangkan.

Peningkatan Strategi

Beberapa cara untuk mengoptimalkan strategi ini:

  1. Mengoptimalkan periode SMA secara dinamis berdasarkan kondisi pasar dan ATR.

  2. Tambahkan indikator lain seperti MACD, RSI untuk waktu masuk.

  3. Tambahkan filter tren seperti ADX untuk menghindari sinyal palsu selama konsolidasi.

  4. Mengoptimalkan metode stop loss seperti ATR stop atau trailing stop.

  5. Mengelola ukuran posisi secara dinamis berdasarkan ukuran akun.

  6. Uji parameter optimal di berbagai kelas aset.

  7. Masukkan beberapa kerangka waktu untuk memastikan konsistensi dengan tren kerangka waktu yang lebih tinggi.

Kesimpulan

Singkatnya, sistem crossover SMA sederhana ini dapat diandalkan dalam menentukan arah tren dan cocok untuk sebagian besar pedagang. Namun, ia memiliki beberapa masalah yang tertinggal dan dapat menghasilkan sinyal palsu. Kita harus mencari untuk meningkatkan waktu masuk, stop loss, ukuran posisi dll untuk membuatnya kuat di lingkungan pasar yang berubah. Kombinasi dari beberapa indikator teknis dan evaluasi tren adalah kunci untuk membangun strategi tren yang solid.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
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/
// © xyzdesign1989
//@version=5
strategy("SMA crossover buy/sell [SCSM_Algo]", overlay=true, margin_long=3000, margin_short=3000)


BuyCond = ta.crossover(ta.sma(close, 20), ta.sma(close, 50)) and ta.sma(close, 20) > ta.sma(close, 50) and  ta.sma(close, 50) > ta.sma(close, 100) and  ta.sma(close, 100) > ta.sma(close, 200) or (ta.crossover(ta.sma(close, 20), ta.sma(close, 100)) and ta.sma(close, 20) > ta.sma(close, 50))
if (BuyCond)
    strategy.entry("SCSM 🤲 Buy", strategy.long)

SellCond = ta.crossunder(ta.sma(close, 20), ta.sma(close, 50))
if (SellCond)
    strategy.entry("الحمد للہ،Sell", strategy.short)

ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

show_ma1   = input(true   , "MA №1", inline="MA #1")
ma1_type   = input.string("SMA"  , ""     , inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma1_source = input(close  , ""     , inline="MA #1")
ma1_length = input.int(20     , ""     , inline="MA #1", minval=1)
ma1_color  = input(#0929f6, ""     , inline="MA #1")
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color = ma1_color, title="MA №1")

show_ma2   = input(true   , "MA №2", inline="MA #2")
ma2_type   = input.string("SMA"  , ""     , inline="MA #2", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma2_source = input(close  , ""     , inline="MA #2")
ma2_length = input.int(50     , ""     , inline="MA #2", minval=1)
ma2_color  = input(#00fb04, ""     , inline="MA #2")
ma2 = ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color = ma2_color, title="MA №2")

show_ma3   = input(true   , "MA №3", inline="MA #3")
ma3_type   = input.string("SMA"  , ""     , inline="MA #3", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma3_source = input(close  , ""     , inline="MA #3")
ma3_length = input.int(100    , ""     , inline="MA #3", minval=1)
ma3_color  = input(#131313, ""     , inline="MA #3")
ma3 = ma(ma3_source, ma3_length, ma3_type)
plot(show_ma3 ? ma3 : na, color = ma3_color, title="MA №3")

show_ma4   = input(true   , "MA №4", inline="MA #4")
ma4_type   = input.string("SMA"  , ""     , inline="MA #4", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma4_source = input(close  , ""     , inline="MA #4")
ma4_length = input.int(200    , ""     , inline="MA #4", minval=1)
ma4_color  = input(#f60c0c, ""     , inline="MA #4")
ma4 = ma(ma4_source, ma4_length, ma4_type)
plot(show_ma4 ? ma4 : na, color = ma4_color, title="MA №4")

Lebih banyak