Strategi Melalui SMA

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

img

Ringkasan

Strategi ini menghasilkan isyarat perdagangan berdasarkan persilangan antara purata bergerak pantas dan perlahan. Ia menghasilkan isyarat beli apabila purata bergerak pantas melintasi di atas purata bergerak perlahan dari bawah. Ia menghasilkan isyarat jual apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan dari atas.

Prinsip-prinsip

Strategi ini menggunakan fungsi sma untuk mengira purata bergerak pantas dan perlahan. Fast_SMA adalah purata bergerak pantas dengan panjang tempoh fast_SMA_input. Slow_SMA adalah purata bergerak perlahan dengan panjang tempoh slow_SMA_input.

Strategi ini menggunakan fungsi cross dan crossunder untuk menentukan persilangan antara purata bergerak pantas dan perlahan. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, pembolehubah LONG adalah benar dan isyarat beli dihasilkan. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan, pembolehubah SHORT adalah benar dan isyarat jual dihasilkan.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Prinsip yang mudah, mudah difahami dan dilaksanakan.
  2. Tempoh purata bergerak yang boleh disesuaikan, dapat disesuaikan dengan persekitaran pasaran yang berbeza.
  3. Menapis kebisingan pasaran dan menghasilkan isyarat perdagangan yang agak boleh dipercayai.
  4. Mencatatkan kedua-dua permulaan dan titik perubahan trend.

Risiko

Strategi ini juga mempunyai risiko berikut:

  1. Boleh menghasilkan isyarat perdagangan yang berlebihan jika tetapan tidak betul, yang membawa kepada overtrading.
  2. Boleh menghasilkan banyak isyarat palsu di pasaran sampingan.
  3. Tidak dapat menentukan tempoh trend, mungkin berbalik sebelum masa.

Pengurusan Risiko:

  1. Tetapkan parameter purata bergerak yang sesuai untuk mengimbangi kesan penapisan dan kepekaan.
  2. Tambah penapis penunjuk trend untuk mengelakkan isyarat palsu.
  3. Tetapkan titik stop loss untuk mengawal kerugian setiap perdagangan.

Pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Tambah keadaan penapisan pada jumlah atau turun naik apabila pecah berlaku untuk mengelakkan pecah palsu.
  2. Sertakan penunjuk trend untuk mengenal pasti arah dan kekuatan trend.
  3. Tambah model pembelajaran mesin untuk mengoptimumkan parameter purata bergerak secara automatik.
  4. Gabungkan dengan sokongan/tahan dan Bollinger Bands untuk menentukan julat perdagangan dan meningkatkan ketepatan kemasukan.

Ringkasan

Strategi ini secara berkesan menjana isyarat perdagangan dengan memanfaatkan kelebihan purata bergerak. Walaupun terdapat beberapa risiko, mereka boleh ditingkatkan dengan pengoptimuman parameter, menambah penapis dll. Strategi crossover purata bergerak bernilai penyelidikan dan penerapan lanjut.


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