Strategi persilangan SMA


Tanggal Pembuatan: 2023-11-08 11:36:51 Akhirnya memodifikasi: 2023-11-08 11:36:51
menyalin: 1 Jumlah klik: 649
1
fokus pada
1621
Pengikut

Strategi persilangan SMA

Ringkasan

Strategi ini didasarkan pada prinsip persilangan rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menghasilkan sinyal perdagangan. Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat dari bawah, menghasilkan sinyal beli; Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat dari atas ke bawah, menghasilkan sinyal jual.

Prinsip

Strategi ini menggunakan fungsi sma untuk menghitung rata-rata bergerak cepat dan rata-rata bergerak lambat. fast_SMA adalah rata-rata bergerak cepat dengan panjang siklus fast_SMA_input; slow_SMA adalah rata-rata bergerak lambat dengan panjang siklus slow_SMA_input.

Strategi menggunakan fungsi cross dan crossunder untuk menentukan persilangan rata-rata bergerak cepat dan rata-rata bergerak lambat. Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat, variabel LONG adalah benar, menghasilkan sinyal beli; Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat, variabel SHORT adalah benar, menghasilkan sinyal jual.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Strategi ini sederhana, mudah dipahami dan diterapkan.
  2. Periode rata-rata bergerak yang dapat disesuaikan untuk berbagai kondisi pasar.
  3. Ini dapat memfilter sebagian dari kebisingan pasar dan menghasilkan sinyal perdagangan yang lebih andal.
  4. Ini adalah salah satu cara yang paling efektif untuk menangkap mulai dan membalikkan tren.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Jika tidak diatur dengan benar, akan menghasilkan terlalu banyak sinyal perdagangan, yang menyebabkan perdagangan yang sering.
  2. Di pasar Forex, sinyal tidak valid dapat dihasilkan dalam jumlah besar.
  3. Tidak bisa dipastikan berapa lama trend ini akan berlangsung, dan mungkin akan terlambat untuk membalikkannya.

Metode pengendalian risiko:

  1. Pengaturan parameter moving average yang masuk akal untuk menyeimbangkan efek filter dan sensitivitas.
  2. Kombinasi indikator tren dengan filter sinyal tidak efektif.
  3. Tetapkan Stop Loss dan Kendalikan Kerugian Tunggal

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Menambahkan kondisi penyaringan, memeriksa volume transaksi atau indikator volatilitas saat melewati rata-rata bergerak, untuk menghindari false breakout.
  2. Menggabungkan indikator tren untuk mengidentifikasi arah dan intensitas tren.
  3. Menambahkan model pembelajaran mesin untuk mengoptimalkan parameter moving average secara otomatis.
  4. Menggabungkan dukungan resistance level, Brin Belt dan indikator teknis lainnya untuk memetakan area perdagangan, meningkatkan akurasi entry.

Meringkaskan

Strategi ini memanfaatkan keuntungan dari moving averages untuk menghasilkan sinyal trading dengan mudah dan efektif. Meskipun ada beberapa risiko, namun dapat ditingkatkan dengan cara mengoptimalkan parameter, menambahkan kondisi filter, dan lain-lain. Strategi crossover moving averages layak untuk penelitian dan penerapan lebih lanjut.

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

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)