Strategi keletihan momentum adalah strategi trend yang menggunakan purata bergerak dan osilator peratusan harga untuk meminimumkan pendedahan penurunan.
Indikator utama strategi ini adalah Penuh dan Penuh Moving Average. Penuh adalah ukuran goyangan harga, dikira dari harga dekat, tinggi dan rendah. Pengiraan khusus adalah: (dekat + tinggi + rendah Moving Average Penuh) / Moving Average Penuh. Penuh Moving Average adalah Moving Average Penuh. Apabila Penuh melintasi di atas Penuh Moving Average, ia menunjukkan penyatuan di pasaran dan pembentukan trend baru yang mungkin. Apabila Penuh melintasi di bawah Penuh Moving Average, ia menandakan pembalikan trend dan kita harus mempertimbangkan mengambil keuntungan.
Di samping itu, strategi ini juga menggunakan purata bergerak jangka panjang dan pendek untuk membantu menentukan trend, termasuk garis 300 hari, 150 hari dan 50 hari.
MACD juga digunakan untuk isyarat beli dan jual jangka pendek. Apabila garis MACD melintasi di atas garis isyarat, ia menunjukkan isyarat bullish, dan apabila MACD melintasi di bawah garis isyarat, ia menunjukkan isyarat bearish.
Logik masuk dan keluar khusus adalah:
Isyarat beli: Penembusan keletihan di atas Purata Bergerak Keletihan, dan MA 50 hari di atas MA 150 hari; atau RSI di bawah 30.
Stop loss jangka pendek: Penembusan ke bawah Purata Bergerak Penembusan; atau penembusan MACD di bawah garis isyarat.
Stop loss jangka menengah-panjang: 50 hari MA melintasi di bawah 150 hari MA; atau 150 hari MA melintasi di bawah 300 hari MA.
Strategi ini menggabungkan pelbagai penunjuk untuk menentukan trend keletihan dan mengawal risiko.
Penunjuk Penuh dapat mengenal pasti pengukuhan dan pembalikan dengan berkesan.
Menggunakan purata bergerak dari pelbagai kerangka masa untuk menentukan trend mengelakkan ditipu oleh bunyi pasaran jangka pendek.
MACD membantu mengesahkan isyarat beli dan jual, meningkatkan prestasi strategi.
RSI memainkan peranan membeli rendah dan menjual tinggi, membeli pada situasi yang sangat oversold.
Strategi mengambil keuntungan dan menghentikan kerugian yang jelas dapat mengawal risiko setiap perdagangan dengan berkesan.
Terdapat juga beberapa risiko dengan strategi ini:
Mengandalkan pelbagai penunjuk, tetapan parameter yang tidak betul boleh membawa kepada isyarat perdagangan yang salah. Parameter perlu diuji dan dioptimumkan berulang kali.
Penunjuk Penuh tidak boleh dipercayai sepenuhnya, ia mungkin gagal apabila terdapat perbezaan harga.
Penempatan stop loss yang tidak betul boleh menyebabkan berhenti oleh turun naik jangka pendek. Stop loss harus mengimbangi kesan jangka panjang dan jangka pendek.
Apabila pasaran keseluruhan adalah berkisar, penunjuk mungkin gagal. saiz kedudukan perlu dikawal.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum dan mengurangkan isyarat palsu. Parameter utama yang boleh diselaraskan termasuk tempoh purata bergerak, tempoh keletihan dll.
Menggabungkan penunjuk turun naik seperti ATR untuk menyesuaikan julat stop loss secara dinamik mengikut turun naik pasaran.
Mengoptimumkan saiz kedudukan, dengan peraturan saiz kedudukan yang berbeza untuk keadaan pasaran yang berbeza.
Masukkan corak carta seperti trendline, garis sokongan untuk meningkatkan prestasi strategi.
Tambah algoritma pembelajaran mesin untuk membantu mengukur keberkesanan penunjuk utama, merealisasikan pengoptimuman dinamik.
Strategi keletihan momentum menggabungkan beberapa penunjuk untuk mengenal pasti pembalikan trend dan mengawal risiko. Ia mempunyai keupayaan mengikuti trend dan dapat menentukan titik masuk dan keluar dengan berkesan. Penambahbaikan lanjut boleh dibuat melalui pengoptimuman parameter, peraturan stop loss, menggabungkan corak carta dan banyak lagi. Secara keseluruhan ia mempunyai kemampuan beradaptasi dengan turun naik pasaran dan boleh dianggap sebagai pilihan strategi kawalan 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) //}