Strategi SMA Crossover

Penulis:ChaoZhang, Tanggal: 2023-11-08 11:36:51
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan persilangan antara rata-rata bergerak cepat dan lambat. Ini menghasilkan sinyal beli ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat dari bawah. Ini menghasilkan sinyal jual ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat dari atas.

Prinsip-prinsip

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

Strategi ini menggunakan fungsi cross dan crossunder untuk menentukan crossover antara rata-rata bergerak cepat dan lambat. Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat, variabel LONG benar dan sinyal beli dihasilkan. Ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat, variabel SHORT benar dan sinyal jual dihasilkan.

Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Prinsipnya sederhana, mudah dimengerti dan diterapkan.
  2. Periode rata-rata bergerak yang dapat disesuaikan, dapat disesuaikan dengan lingkungan pasar yang berbeda.
  3. Menyaring beberapa kebisingan pasar dan menghasilkan sinyal perdagangan yang relatif dapat diandalkan.
  4. Menangkap baik titik awal dan titik balik tren.

Risiko

Strategi ini juga memiliki risiko berikut:

  1. Dapat menghasilkan sinyal perdagangan yang berlebihan jika pengaturan tidak tepat, menyebabkan overtrading.
  2. Dapat menghasilkan banyak sinyal palsu di pasar sampingan.
  3. Tidak dapat menentukan durasi tren, mungkin berbalik prematur.

Manajemen risiko:

  1. Atur parameter rata-rata bergerak yang sesuai untuk menyeimbangkan efek penyaringan dan sensitivitas.
  2. Tambahkan filter indikator tren untuk menghindari sinyal palsu.
  3. Atur titik stop loss untuk mengendalikan kerugian per perdagangan.

Optimalisasi

Strategi ini dapat dioptimalkan dari aspek berikut:

  1. Tambahkan kondisi penyaringan pada volume atau volatilitas ketika terjadi breakout untuk menghindari breakout palsu.
  2. Sertakan indikator tren untuk mengidentifikasi arah dan kekuatan tren.
  3. Tambahkan model pembelajaran mesin untuk mengoptimalkan parameter rata-rata bergerak.
  4. Gabungkan dengan support/resistance dan Bollinger Bands untuk menentukan rentang perdagangan dan meningkatkan akurasi entri.

Ringkasan

Strategi ini secara efektif menghasilkan sinyal perdagangan dengan memanfaatkan keunggulan rata-rata bergerak. Meskipun ada beberapa risiko, mereka dapat ditingkatkan dengan optimasi parameter, menambahkan filter dll. Strategi crossover rata-rata bergerak layak penelitian lebih lanjut dan aplikasi.


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

Lebih banyak