Strategi Perdagangan Pembalikan Rata-rata Bergerak


Tanggal Pembuatan: 2023-10-25 10:58:02 Akhirnya memodifikasi: 2023-10-25 10:58:02
menyalin: 0 Jumlah klik: 1191
1
fokus pada
1617
Pengikut

Strategi Perdagangan Pembalikan Rata-rata Bergerak

Ringkasan

Strategi perdagangan regresi rata-rata dengan menghitung garis regresi linier dan persilangan garis rata-rata harga saham untuk menentukan sinyal beli dan jual. Strategi ini menggabungkan analisis regresi rata-rata dan linier, mempertimbangkan tren harga saham, dan mempertimbangkan karakteristik statistik, yang dapat secara efektif menentukan titik balik harga saham, untuk mencapai harga jual murah.

Prinsip Strategi

Strategi ini pertama-tama menghitung garis regresi linier untuk harga saham pada hari n dan garis rata-rata harian m. Garis regresi linier mencerminkan tren statistik jangka panjang harga saham, dan garis rata-rata mencerminkan pergerakan jangka pendek harga saham.

Ketika rata-rata melewati garis regresi linier, ini menunjukkan peningkatan momentum kenaikan harga saham, menghasilkan sinyal beli. Ketika rata-rata melewati garis regresi linier, ini menunjukkan penurunan harga saham, menghasilkan sinyal jual.

Secara khusus, strategi ini menilai sinyal perdagangan melalui langkah-langkah berikut:

  1. Menghitung n hari harga saham linear regression linelrLine

  2. Menghitung m-hari rata-rata bergerak sederhana LRMA dari garis regresi linier

  3. Indeks m-hari untuk menghitung harga saham Moving Average ema

  4. Ketika ema memakai LRMA, ia menghasilkan sinyal longEntry.

  5. Ketika ema melewati LRMA, ia menghasilkan sinyal longExit

  6. Dalam kasus ini, Anda harus mempertimbangkan sinyal beli hanya jika pasar bullish.

  7. Eksekusi pembelian dan penjualan berdasarkan sinyal

Dengan garis rata-rata dan garis kemunduran yang berpotongan untuk menentukan waktu jual beli, dapat secara efektif menyaring penipuan dan menangkap titik balik, untuk mencapai low buy high sell.

Keunggulan Strategis

  • Garis regresi mencerminkan tren jangka panjang, garis rata-rata mencerminkan pergerakan jangka pendek, kombinasi dua indikator dapat menentukan titik jual beli dengan akurat
  • Perhitungan garis regresi sederhana dan mudah dilakukan
  • Dengan menggunakan penilaian pasar yang besar, Anda dapat menyaring sinyal perdagangan yang tidak sesuai.
  • Parameter yang dapat disesuaikan untuk menyesuaikan strategi jual beli
  • “Saya tidak tahu apa-apa tentang itu, tapi saya pikir itu adalah salah satu yang terbaik yang bisa saya lakukan”.

Risiko Strategis

  • Pada saat harga saham sangat berfluktuasi, garis rata-rata dan garis regresi sering kali berpotongan, yang dapat menghasilkan sinyal yang salah
  • “Kalau harga saham tidak akurat, kita bisa salah menentukan waktu untuk membeli dan menjual”.
  • Setelan parameter yang tidak tepat juga dapat mempengaruhi efek kebijakan
  • Transaksi yang lebih sering dan lebih mahal

Perlu diperhatikan penyesuaian parameter, memperbesar rata-rata dan parameter siklus garis regresi secara tepat, mengurangi frekuensi perdagangan. Mengatur risiko pengendalian strategi stop loss secara wajar. Mengoptimalkan aturan penilaian besar, meningkatkan akurasi.

Optimasi Strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimalisasi rata-rata: mencoba berbagai jenis rata-rata, seperti rata-rata bergerak berbobot, dan lain-lain, untuk menemukan rata-rata terbaik untuk saham tersebut.

  2. Pengoptimalan garis regresi: menyesuaikan siklus perhitungan garis regresi untuk mencari parameter siklus yang paling mencerminkan tren jangka panjang saham tersebut.

  3. Optimasi penilaian besar: menguji indikator penilaian besar yang berbeda untuk menemukan sinyal besar yang paling sesuai dengan strategi.

  4. Optimasi parameter: mencari konfigurasi parameter yang optimal melalui pengulangan kombinasi parameter yang berbeda.

  5. Optimasi strategi stop loss: Uji coba berbagai metode stop loss dan atur logika stop loss yang optimal untuk mengendalikan risiko.

  6. Optimalisasi biaya transaksi: Sesuaikan frekuensi transaksi untuk mengurangi biaya transaksi sesuai dengan model biaya transaksi yang berbeda.

Dengan mengoptimalkan beberapa poin di atas, Anda dapat meningkatkan stabilitas dan tingkat pengembalian strategi Anda.

Meringkaskan

Strategi ini mengintegrasikan analisa rata-rata dan analisa regresi linier. Strategi ini dapat secara efektif mengidentifikasi titik balik harga saham dan membimbing harga rendah dan tinggi. Strategi ini lebih sederhana dan dapat diandalkan, cocok untuk perdagangan opsi saham menengah dan panjang.

Kode Sumber Strategi
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © lazy_capitalist

//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1,    title = "Start Month",  minval = 1, maxval = 12,  group=datesGroup)
startDay   = input.int(defval = 1,    title = "Start Day",    minval = 1, maxval = 31,  group=datesGroup)
startYear  = input.int(defval = 2022, title = "Start Year",   minval = 1970,            group=datesGroup)

averagesGroup = "Averages"
lrLineInput     = input.int(title="Linear Regression Line",   defval=55, minval = 1, group=averagesGroup)
lrMAInput       = input.int(title="Linear Regression MA",     defval=55, minval = 1, group=averagesGroup)
emaInput        = input.int(title="EMA Length",               defval=55, minval = 1, group=averagesGroup)


tradesGroup = "Execute Trades"
executeLongInput    = input.bool(title="Execute Long Trades",       defval=true)
executeShortInput   = input.bool(title="Execute Short Trades",      defval=true)
executeStopLoss     = input.bool(title="Execute Stop Loss",         defval=true)

fourHrSMAExpr       = ta.sma(close, 200)
fourHrMA            = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)

bullish             = close > fourHrMA ? true : false


maxProfitInput              = input.float(  title="Max Profit (%)",         defval=10.0,    minval=0.0)   * 0.01
stopLossPercentageInput     = input.float(  title="Stop Loss (%)",          defval=1.75,    minval=0.0)   * 0.01

start       = timestamp(startYear, startMonth, startDay, 00, 00)            // backtest start  window
window()    => time >= start ? true : false                              // create function "within window of time"
showDate    = input(defval = true, title = "Show Date Range")

lrLine = ta.linreg(close, lrLineInput, 0)
lrMA   = ta.sma(lrLine, lrMAInput)
ema     = ta.ema(close, emaInput)

longEntry   = ema   < lrMA
longExit    = lrMA  < ema

shortEntry  = lrMA  < ema
shortExit   = ema   < lrMA


maxProfitLong   = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort  = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)

stopLossPriceShort  = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong   = strategy.position_avg_price * (1 - stopLossPercentageInput)

if(executeLongInput and bullish)
    strategy.entry( id="long_entry", direction=strategy.long,   when=longEntry and window(),    qty=10,  comment="long_entry")
    strategy.close( id="long_entry", when=longExit,     comment="long_exit")
    // strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
    
if(executeShortInput and not bullish)
    strategy.entry( id="short_entry", direction=strategy.short,   when=shortEntry and window(),    qty=10,  comment="short_entry")
    strategy.close( id="short_entry", when=shortExit,     comment="short_exit")
    // strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")

if(strategy.position_size > 0 and executeStopLoss)
    strategy.exit(  id="long_entry",        stop=stopLossPriceLong,             comment="exit_long_SL")
    strategy.exit(  id="short_entry",       stop=stopLossPriceShort,            comment="exit_short_SL")
    
// plot(series=lrLine,     color=color.green)
plot(series=lrMA,       color=color.red)
plot(series=ema,        color=color.blue)