Indikator Momentum yang Didorong oleh Tren Mengikuti Strategi Trading

Penulis:ChaoZhang, Tanggal: 2023-12-12 14:52:11
Tag:

img

Gambaran umum

Strategi ini membangun sinyal perdagangan berdasarkan indikator momentum RSI dan harga s Eksponensial Moving Average (EMA) dan Simple Moving Average (SMA).

Prinsip Strategi

Strategi ini menggunakan 3 kondisi untuk menghasilkan sinyal perdagangan:

  1. RSI > 45: Nilai RSI lebih dari 45 dianggap sinyal beli yang baik
  2. EMA (RSI) > SMA (RSI): Garis EMA yang lebih besar dari garis SMA menunjukkan RSI meningkat, yang merupakan sinyal momentum yang baik
  3. EMA (close) > SMA (close): Garis EMA yang lebih besar dari garis SMA menunjukkan tren harga meningkat pesat

Memenuhi 2 dari 3 kondisi di atas menghasilkan sinyal beli; jika tidak terpenuhi, sinyal jual dihasilkan.

Strategi ini juga menyediakan mode always buy untuk menguji kinerja sistem relatif dengan pasar yang luas.

Analisis Keuntungan

  1. Menggunakan indikator momentum RSI untuk menilai kondisi pasar dapat mengurangi posisi selama fluktuasi pasar
  2. Menggabungkan EMA dan SMA untuk menentukan arah tren dapat menangkap tren perubahan harga tepat waktu
  3. Aturan bersyarat yang sederhana dan jelas, mudah dimengerti dan dioptimalkan
  4. Memberikan always buy mode untuk menguji keuntungan sistem

Analisis Risiko

  1. Bergantung pada pengaturan parameter, parameter yang tidak tepat akan menyebabkan perdagangan yang sering atau kehilangan peluang perdagangan yang baik
  2. Berita utama di pasar luas dapat menyebabkan volatilitas besar dalam jangka pendek yang akan menyebabkan stop loss
  3. Strategi itu sendiri tidak dapat menilai kapan suatu tren akan berbalik, indikator lain perlu digunakan untuk menentukan

Arahan Optimasi

  1. Mengoptimalkan parameter RSI, EMA dan SMA untuk menemukan kombinasi parameter terbaik
  2. Meningkatkan indikator teknis lainnya seperti Volume, MACD dll untuk memperkaya kondisi aturan
  3. Meningkatkan indikator pembalikan tren untuk mengurangi kemungkinan kerugian

Kesimpulan

Secara singkat, strategi ini termasuk dalam strategi perdagangan frekuensi menengah yang bertujuan untuk menangkap tren harga jangka menengah sambil menghindari fluktuasi pasar jangka pendek. Keuntungannya dan titik risiko cukup jelas.


/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
compoundingMode = input.bool(false)
leverage = input.float(1.0,step=0.1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100
TPFactor = input.float(2, step=0.1)




var disableAdditionalBuysThisDay = false
var lastTrade = time
if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy")
    disableAdditionalBuysThisDay := false

if(strategy.position_size != strategy.position_size[1])
    lastTrade := time
    disableAdditionalBuysThisDay := true

//Trade Logic
SCORE = 0

//rsi momentum
RSIFast = ta.ema(ta.rsi(close,50),24)
RSISlow = ta.sma(ta.rsi(close,50),24)
RSIMomentum = RSIFast / RSISlow
goodRSIMomentum = RSIMomentum > 1
SCORE := goodRSIMomentum ? SCORE + 1 : SCORE

//rsi trend
RSITrend = RSISlow / 45
goodRSI = RSITrend > 1
SCORE := goodRSI ? SCORE + 1 : SCORE

//price trend
normalTrend = ta.ema(close,50) / ta.sma(close,50)
goodTrend = normalTrend > 1
SCORE := goodTrend ? SCORE + 1 : SCORE



isBuy =  SCORE > 1 or tradingMode == "Always Buy"
isSell = false //SCORE == 0

//plot(SCORE, color=isBuy ? color.green : #ffffff88)
//reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow
plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10)
plot(1 - (1 - RSIMomentum) * 6,color=#00F569)
plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B)
plot(1 - (1 - normalTrend) * 20,color=#00F5EE)


strategy.initial_capital = 50000
if(isBuy and not(disableAdditionalBuysThisDay))
    if(compoundingMode)
        strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size != 0)
    strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))




Lebih banyak