Strategi Perdagangan Purata Pergerakan Pulangan


Tarikh penciptaan: 2023-10-25 10:58:02 Akhirnya diubah suai: 2023-10-25 10:58:02
Salin: 0 Bilangan klik: 1191
1
fokus pada
1617
Pengikut

Strategi Perdagangan Purata Pergerakan Pulangan

Gambaran keseluruhan

Strategi perdagangan regresi rata-rata dengan mengira garis regresi linear dan persilangan garis rata-rata harga saham untuk membuat keputusan membeli dan menjual isyarat. Strategi ini menggabungkan analisis regresi rata-rata dan linear, mempertimbangkan trend harga saham, dan mempertimbangkan ciri-ciri statistik, yang dapat menentukan titik balik harga saham dengan berkesan, untuk mencapai pembelian rendah dan penjualan tinggi.

Prinsip Strategi

Strategi ini mula-mula mengira garis pengembalian linear harga saham pada hari n dan garis purata harian m. Garis pengembalian linear mencerminkan trend statistik jangka panjang harga saham, dan garis purata mencerminkan pergerakan jangka pendek harga saham.

Apabila pada garis purata melalui garis pengembalian linear, menunjukkan peningkatan momentum kenaikan harga saham, menghasilkan isyarat membeli. Apabila di bawah garis purata melalui garis pengembalian linear, menunjukkan kekurangan harga saham, menghasilkan isyarat menjual.

Secara khusus, strategi ini menilai isyarat dagangan melalui langkah-langkah berikut:

  1. Hitung n hari harga saham linear regression linelrLine

  2. Mengira purata bergerak mudah m hari LRMA pada garis regresi linear

  3. Indeks m-hari untuk mengira purata bergerak harga saham

  4. Apabila ema memakai LRMA, ia menghasilkan isyarat longEntry untuk membeli

  5. Apabila EMM melewati LRMA, ia menghasilkan isyarat longExit.

  6. Dalam pada itu, jika anda menggunakan penilaian pasaran besar, anda hanya boleh mempertimbangkan isyarat beli apabila pasaran besar adalah pasaran lembu.

  7. Melakukan transaksi beli dan jual berdasarkan isyarat

Dengan menentukan masa beli dan jual beli melalui persilangan garis rata-rata dan garis regresi, penyaringan palsu dan menangkap titik-titik reversal dapat dilakukan dengan berkesan, untuk mencapai harga rendah dan harga tinggi.

Kelebihan Strategik

  • Garis pulangan mencerminkan trend jangka panjang, garis rata-rata mencerminkan pergerakan jangka pendek, gabungan kedua-dua indikator dapat menentukan titik jual beli dengan tepat
  • Pengiraan garis regresi mudah dan mudah dilaksanakan
  • Dengan menggunakan penilaian pasaran besar, anda boleh menyaring isyarat perdagangan yang tidak sesuai
  • Parameter yang boleh disesuaikan untuk menyesuaikan strategi jual beli
  • Mencapai harga murah dan harga tinggi, Space lebih besar

Risiko Strategik

  • Garis rata dan garis regresi sering bercampur apabila harga saham bergelombang dengan kuat, yang boleh menghasilkan isyarat yang salah
  • Jika keputusan pasaran besar tidak tepat, ia boleh menjadi salah masa untuk membeli dan menjual.
  • Penetapan parameter yang tidak betul juga boleh menjejaskan kesan strategi
  • Transaksi yang kerap dan kos yang tinggi

Penyesuaian parameter yang perlu diperhatikan, parameter kitaran garis purata dan garis regresi yang meningkat dengan sewajarnya, mengurangkan frekuensi perdagangan. Tetapan strategi kawalan risiko berhenti yang munasabah.

Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Pengoptimuman rata-rata: cuba pelbagai jenis rata-rata, seperti purata bergerak bertimbangan, dan lain-lain, untuk mencari rata-rata terbaik untuk saham tersebut.

  2. Pengoptimuman garis regresi: menyesuaikan kitaran pengiraan garis regresi untuk mencari parameter kitaran yang paling mencerminkan trend jangka panjang saham tersebut.

  3. Optimasi keputusan besar: Uji indikator keputusan besar yang berbeza untuk mencari isyarat besar yang paling sesuai untuk strategi.

  4. Pengoptimuman parameter: mencari konfigurasi parameter yang optimum melalui pengulangan berulang kombinasi parameter yang berbeza.

  5. Pengoptimuman strategi hentian kerugian: Uji cara hentian yang berbeza, menetapkan logik hentian kerugian yang terbaik untuk mengawal risiko.

  6. Pengoptimuman kos urus niaga: Sesuaikan frekuensi urus niaga untuk mengurangkan kos urus niaga mengikut corak yuran urus niaga yang berbeza.

Dengan mengoptimumkan beberapa perkara di atas, anda dapat meningkatkan lagi kestabilan dan kadar pulangan strategi anda.

ringkaskan

Strategi perdagangan kemerosotan ini mengintegrasikan analisis kemerosotan dan analisis kemerosotan linier, dapat mengenal pasti titik-titik perubahan harga saham dengan berkesan, membimbing pembelian rendah dan penjualan tinggi. Strategi ini lebih mudah dan dipercayai, sesuai untuk perdagangan saham pilihan panjang dan menengah.

Kod 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)