Strategi perdagangan mengikuti tren yang didorong oleh indikator momentum


Tanggal Pembuatan: 2023-12-12 14:52:11 Akhirnya memodifikasi: 2023-12-12 14:52:11
menyalin: 0 Jumlah klik: 559
1
fokus pada
1621
Pengikut

Strategi perdagangan mengikuti tren yang didorong oleh indikator momentum

Ringkasan

Strategi ini didasarkan pada indikator momentum RSI dan harga Exponential Moving Average (EMA) dan Simple Moving Average (SMA) untuk membangun sinyal perdagangan.

Prinsip Strategi

Strategi ini menggunakan 3 kondisi untuk menghasilkan sinyal perdagangan:

  1. RSI > 45: RSI lebih besar dari 45 dianggap sebagai sinyal beli yang baik
  2. EMA ((RSI) > SMA ((RSI): EMA lebih besar dari SMA menunjukkan bahwa RSI sedang mempercepat ke atas dan merupakan sinyal momentum yang baik
  3. EMA ((harga tutup) > SMA ((harga tutup): EMA lebih besar dari SMA menunjukkan bahwa tren harga meningkat

Jika 2 dari 3 kondisi di atas terpenuhi, maka akan ada sinyal beli; jika tidak terpenuhi, maka akan ada sinyal jual.

Strategi ini juga menyediakan mode “siap-siap-beli-siap” untuk menguji kinerja sistem itu sendiri dalam perbandingan saham besar.

Analisis Keunggulan Strategi

  1. Menggunakan indikator dinamika RSI untuk menilai tren pasar, dapat mengurangi posisi perdagangan saat pasar bergejolak
  2. Kombinasi EMA dan SMA menilai arah tren, dapat menangkap tren perubahan harga tepat waktu
  3. Aturan kondisional sederhana dan jelas, mudah dipahami dan dioptimalkan
  4. Keuntungan dari sistem pengujian pola “always buy”

Analisis Risiko Strategi

  1. Bergantung pada pengaturan parameter, parameter yang salah akan menyebabkan perdagangan sering atau kehilangan peluang perdagangan yang baik
  2. Pada saat berita besar muncul, harga dalam jangka pendek dapat mengalami fluktuasi besar yang akan menyebabkan stop loss.
  3. Strategi sendiri tidak dapat menentukan kapan tren akan berbalik, dan perlu bekerja sama dengan indikator lain untuk menilai

Arah optimasi

  1. Mengoptimalkan parameter RSI, EMA dan SMA untuk menemukan kombinasi optimal
  2. Menambahkan aturan penilaian untuk indikator teknis lainnya seperti Volume, MACD
  3. Tingkatkan Indeks Reversal Trend dan Kurangi Probabilitas Kerugian

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi perdagangan frekuensi menengah, yang bertujuan untuk menangkap tren harga jangka menengah, dan menghindari gejolak pasar jangka pendek, dengan keuntungan dan risiko yang jelas. Dengan optimasi parameter dan aturan yang kaya, dapat meningkatkan stabilitas strategi lebih lanjut, adalah strategi perdagangan kuantitatif yang sangat efisien yang layak untuk diteliti dan dioptimalkan.

Kode Sumber Strategi
/*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))