Berdasarkan strategi momentum relatif


Tanggal Pembuatan: 2024-01-29 08:38:04 Akhirnya memodifikasi: 2024-01-29 08:38:04
menyalin: 0 Jumlah klik: 722
1
fokus pada
1617
Pengikut

Berdasarkan strategi momentum relatif

Ringkasan

Strategi dinamika relatif adalah strategi yang digunakan untuk membandingkan dinamika saham dan indeks untuk menilai kekuatan saham relatif terhadap pasar besar, membeli ketika dinamika saham lebih tinggi dari pasar besar, dan menjual ketika dinamika saham lebih rendah dari pasar besar, untuk menangkap puncak pertumbuhan saham.

Prinsip Strategi

Strategi ini terutama menilai kekuatan dan kelemahan saham individu terhadap pasar besar, dengan logika:

  1. Menghitung tingkat pendapatan saham dalam jangka waktu tertentu sebagai momentum saham
  2. Indeks menghitung tingkat pengembalian dalam periode yang sama sebagai dinamika indeks
  3. Pengolahan rata-rata bergerak yang halus untuk menghitung pergerakan saham dan indeks
  4. Ketika sebuah indeks bergerak di atas rata-rata bergerak dari jumlah saham, maka dianggap bahwa jumlah saham bergerak lebih besar dari keseluruhan indeks, menjadi sinyal beli.
  5. Ketika sebuah saham bergerak di bawah rata-rata pergerakan indeks di bawah rata-rata pergerakan pergerakan indeks, menganggap bahwa pergerakan saham individu lebih lemah dari keseluruhan indeks, menjadi sinyal jual

Dengan logika seperti itu, kita dapat membeli saham di masa pertumbuhan yang kuat dan menjual tepat waktu ketika momentum pertumbuhan mereka memudar, mengunci keuntungan ekstra di masa puncak pertumbuhan mereka.

Analisis Keunggulan

Strategi relative momentum memiliki keuntungan utama sebagai berikut:

  1. Anda dapat secara dinamis menangkap puncak pertumbuhan saham individu tanpa memperhatikan situasi tertentu, dan Anda dapat membeli saham jika mereka tumbuh lebih cepat dari saham besar.
  2. Dengan pemrosesan moving average, dapat disaring gangguan dari fluktuasi jangka pendek, meningkatkan keandalan sinyal
  3. Kondisi pembelian dan penjualan yang sederhana dan mudah dipahami
  4. Parameter waktu yang dapat diatur secara bebas untuk menghitung momentum relatif, strategi optimasi

Analisis risiko

Strategi momentum relatif juga memiliki beberapa risiko:

  1. Ada risiko penurunan setelah puncak pertumbuhan saham, ada risiko kurangnya hambatan.
  2. Indikator dinamika relatif dapat menghasilkan sinyal yang salah, dan identifikasi puncak pertumbuhan bukan puncak yang sebenarnya
  3. Stop loss harus diatur untuk mengontrol kerugian maksimum

Risiko ini dapat dikendalikan dengan metode seperti stop loss yang masuk akal, parameter yang disesuaikan.

Arah optimasi

Strategi relative momentum dapat dioptimalkan dalam beberapa hal:

  1. Uji parameter waktu yang berbeda untuk mencari parameter yang optimal
  2. Uji rata-rata bergerak dari berbagai jenis dan panjang untuk mencari parameter optimal
  3. Menambahkan filter pada indikator volume transaksi untuk menghindari penembusan palsu dengan kapasitas yang tidak mencukupi
  4. Waktu konfirmasi pembelian dikombinasikan dengan indikator teknis lainnya

Meringkaskan

Strategi dinamika relatif dapat secara efektif memperoleh keuntungan tambahan dengan menangkap puncak pertumbuhan saham yang relatif besar. Strategi ini memiliki keunggulan logika jual beli yang sederhana dan jelas, mudah dioperasikan, dan hasil yang lebih baik dapat diperoleh melalui pengoptimalan parameter dan kontrol risiko.

Kode Sumber Strategi
/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 15m
basePeriod: 5m
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("Relative Returns Strategy", overlay=false, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

index_ticker=input("BTC_USDT:swap")
Loopback = input(40, step=20)
useStopAndIndexReturns = input(true)
useStopAndIndexReturnsMa = input(true)

useDifference = not useStopAndIndexReturns

MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
MALength = input(10, minval=10,step=10)

i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Backtest Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "Backtest End Time", type = input.time)
inDateRange = true

f_secureSecurity(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on)
f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma

index = f_secureSecurity(index_ticker, '1D', close, 0)
stock_return = (close - close[Loopback])*100/close
index_return = (index - index[Loopback])*100/index

stock_return_ma = f_getMovingAverage(stock_return, MAType, MALength)
index_return_ma = f_getMovingAverage(index_return, MAType, MALength)
relativeReturns = stock_return - index_return
relativeReturns_ma = f_getMovingAverage(relativeReturns, MAType, MALength)

plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma : stock_return : na, title="StockReturn", color=color.green, linewidth=1)
plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? index_return_ma : index_return : na, title="IndexReturn", color=color.red, linewidth=1)

plot(useDifference?relativeReturns:na, title="Relative-Returns", color=color.blue, linewidth=1)
plot(useDifference?relativeReturns_ma:na, title="MA", color=color.red, linewidth=1)

buyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma > index_return_ma : stock_return > index_return : relativeReturns > relativeReturns_ma)
closeBuyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma < index_return_ma : stock_return < index_return : relativeReturns < relativeReturns_ma)
strategy.entry("Buy", strategy.long, when=buyCondition and inDateRange, oca_name="oca")
strategy.close("Buy", when=closeBuyCondition)