Strategi Kelelahan Momentum

Penulis:ChaoZhang, Tanggal: 2023-11-16 17:54:00
Tag:

img

Gambaran umum

Momentum Exhaustion Strategy adalah strategi trend following yang memanfaatkan moving average dan oscillator persentase harga untuk meminimalkan eksposur ke bawah.

Logika Strategi

Indikator inti dari strategi ini adalah Exhaustion dan Exhaustion Moving Average. Exhaustion adalah ukuran osilasi harga, yang dihitung dari harga dekat, tinggi dan rendah. Perhitungan khusus adalah: (close+high+low-moving average of Exhaustion) / moving average of Exhaustion. Exhaustion Moving Average adalah moving average of Exhaustion. Ketika Exhaustion melintasi di atas Exhaustion Moving Average, itu menunjukkan konsolidasi di pasar dan pembentukan tren baru yang mungkin. Ketika Exhaustion melintasi di bawah Exhaustion Moving Average, itu menandakan pembalikan tren dan kita harus mempertimbangkan mengambil keuntungan.

Selain itu, strategi ini juga menggunakan rata-rata bergerak jangka panjang dan pendek untuk membantu menentukan tren, termasuk garis 300 hari, 150 hari dan 50 hari.

MACD juga digunakan untuk sinyal beli dan jual jangka pendek. Ketika garis MACD melintasi di atas garis sinyal, itu menunjukkan sinyal bullish, dan ketika MACD melintasi di bawah garis sinyal, itu menunjukkan sinyal bearish.

Logika masuk dan keluar yang spesifik adalah:

Sinyal beli: Penurunan di atas Exhaustion Moving Average, dan MA 50 hari di atas MA 150 hari; atau RSI di bawah 30.

Stop loss jangka pendek: Penembusan ke bawah Exhaustion Moving Average; atau penembusan MACD ke bawah garis sinyal.

Stop loss jangka menengah-panjang: MA 50 hari melintasi MA 150 hari; atau MA 150 hari melintasi MA 300 hari.

Keuntungan dari Strategi

Strategi ini menggabungkan beberapa indikator untuk menentukan trend kelelahan dan mengendalikan risiko.

  1. Indikator Penuh dapat secara efektif mengidentifikasi konsolidasi dan pembalikan.

  2. Menggunakan rata-rata bergerak dari beberapa kerangka waktu untuk menentukan tren menghindari disesatkan oleh kebisingan pasar jangka pendek.

  3. MACD membantu mengkonfirmasi sinyal beli dan jual, meningkatkan kinerja strategi.

  4. RSI memainkan peran untuk membeli rendah dan menjual tinggi, membeli pada situasi yang sangat oversold.

  5. Strategi profit taking dan stop loss yang jelas dapat secara efektif mengendalikan risiko setiap perdagangan.

Risiko dari Strategi

Ada juga beberapa risiko dengan strategi ini:

  1. Mengandalkan beberapa indikator, pengaturan parameter yang tidak tepat dapat menyebabkan sinyal perdagangan yang salah. Parameter perlu diuji dan dioptimalkan berulang kali.

  2. Indikator Penuh tidak sepenuhnya dapat diandalkan, mungkin gagal ketika ada perbedaan harga.

  3. Penempatan stop loss yang tidak tepat dapat mengakibatkan berhenti oleh fluktuasi jangka pendek.

  4. Ketika pasar secara keseluruhan berkisar, indikator mungkin gagal. ukuran posisi perlu dikendalikan.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji kombinasi parameter yang berbeda untuk menemukan parameter optimal dan mengurangi sinyal palsu.

  2. Menggabungkan indikator volatilitas seperti ATR untuk menyesuaikan rentang stop loss secara dinamis sesuai dengan volatilitas pasar.

  3. Mengoptimalkan ukuran posisi, dengan aturan ukuran posisi yang berbeda untuk kondisi pasar yang berbeda.

  4. Masukkan pola grafik seperti garis tren, garis dukungan untuk meningkatkan kinerja strategi.

  5. Tambahkan algoritma pembelajaran mesin untuk membantu mengukur efektivitas indikator kunci, mewujudkan optimasi dinamis.

Kesimpulan

Momentum Exhaustion Strategy menggabungkan beberapa indikator untuk mengidentifikasi pembalikan tren dan mengendalikan risiko. Strategi ini memiliki kemampuan mengikuti tren dan dapat secara efektif menentukan titik masuk dan keluar. Perbaikan lebih lanjut dapat dilakukan melalui optimasi parameter, aturan stop loss, menggabungkan pola grafik dan banyak lagi. Secara keseluruhan, strategi ini memiliki kemampuan beradaptasi dengan fluktuasi pasar dan dapat dianggap sebagai opsi strategi kontrol risiko.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © spiritualhealer117

//@version=4

strategy("Infiten Slope Strategy", overlay=false,calc_on_every_tick = true, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
// //TIME RESTRICT FOR BACKTESTING {
// inDateRange = (time >= timestamp(syminfo.timezone, 2003,
//          1, 1, 0, 0)) and
//      (time < timestamp(syminfo.timezone, 2021, 5, 25, 0, 0))
// //}

//OPTIMAL PARAMETERS {
daysback = 30
volumesens = 1.618
//}
//Calculating Exhaustion and Exhaustion Moving Average {
clh = close+low+high
exhaustion = (clh-sma(clh,daysback))/sma(clh,daysback)
exhaustionSma = sma(exhaustion,daysback)
//}
//Long Term Moving Averages for sell signals {
red = sma(close,300)
white = sma(close,150)
blue = sma(close,50)

plot(red,color=color.red)
plot(white,color=color.white)
plot(blue,color=color.blue)
//}
//MACD Calculation {
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//}
//SIGMOID Bottom {
timeAdjust = 300/sma(close,500)
//}
//RSI bottom {
len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(close), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//}

//Entry and exit conditions {
//Sell conditions
bigVolume = sma(volume,30)*volumesens
sellcond1 = crossunder(exhaustion,exhaustionSma) and volume > bigVolume
sellcond2 = crossunder(macd,signal) and volume > bigVolume
midtermsellcond1 = crossunder(blue,white)
longtermsellcond1 = white < red

//Buy conditions
buycond = crossover(exhaustion,exhaustionSma) and not longtermsellcond1
buycond2 = rsi < 30
buycond3 = crossover(blue,white) and longtermsellcond1
//}

//Backtest Run Buy/Sell Commands {
strategy.entry("buycond",true, when=buycond and bigVolume)
strategy.entry("buycond2",true, when=buycond2 and bigVolume)

strategy.close_all(when=sellcond1,comment="short term sell signal 1")
strategy.close_all(when=midtermsellcond1, comment="mid term sell signal 1")
strategy.close_all(when=longtermsellcond1, comment="long term sell signal 1")
strategy.close_all(when=sellcond2, comment="short term sell signal 2")
plot(strategy.position_size)

//Sell on last tested day (only for data collection)
//strategy.close_all(when=not inDateRange)
//}



Lebih banyak