Indikator Momentum yang didorong oleh Trend Mengikut Strategi Dagangan

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

img

Ringkasan

Strategi ini membina isyarat dagangan berdasarkan penunjuk momentum RSI dan harga s Exponential Moving Average (EMA) dan Simple Moving Average (SMA).

Prinsip Strategi

Strategi ini menggunakan 3 syarat untuk menjana isyarat perdagangan:

  1. RSI > 45: Nilai RSI melebihi 45 dianggap isyarat beli yang baik
  2. EMA ((RSI) > SMA ((RSI): Garis EMA yang lebih besar daripada garis SMA menunjukkan RSI semakin meningkat, yang merupakan isyarat momentum yang baik
  3. EMA ((close) > SMA ((close): Garis EMA yang lebih besar daripada garis SMA menunjukkan trend harga semakin meningkat

Memenuhi mana-mana 2 daripada 3 syarat di atas menghasilkan isyarat beli; jika tidak dipenuhi, isyarat jual dihasilkan.

Strategi ini juga menyediakan mod selalu membeli untuk menguji prestasi sistem berbanding pasaran yang luas.

Analisis Kelebihan

  1. Menggunakan penunjuk momentum RSI untuk menilai keadaan pasaran boleh mengurangkan kedudukan semasa turun naik pasaran
  2. Menggabungkan EMA dan SMA untuk menentukan arah trend boleh menangkap trend perubahan harga tepat pada masanya
  3. Peraturan bersyarat yang mudah dan jelas, mudah difahami dan dioptimumkan
  4. Menyediakan selalu membeli mod untuk menguji kelebihan sistem

Analisis Risiko

  1. Bergantung pada tetapan parameter, parameter yang tidak betul akan membawa kepada perdagangan yang kerap atau kehilangan peluang perdagangan yang baik
  2. Berita utama dalam pasaran yang luas boleh menyebabkan turun naik yang besar dalam jangka pendek yang akan membawa kepada kehilangan berhenti
  3. Strategi itu sendiri tidak dapat menilai apabila trend akan berbalik, penunjuk lain perlu digunakan untuk menentukan

Arahan pengoptimuman

  1. Mengoptimumkan parameter RSI, EMA dan SMA untuk mencari kombinasi parameter terbaik
  2. Meningkatkan penunjuk teknikal lain seperti Volume, MACD dan lain-lain untuk memperkayakan keadaan peraturan
  3. Meningkatkan penunjuk pembalikan trend untuk mengurangkan kemungkinan kerugian

Kesimpulan

Ringkasnya, strategi ini tergolong dalam strategi perdagangan frekuensi sederhana yang bertujuan untuk menangkap trend harga jangka menengah sambil mengelakkan turun naik pasaran jangka pendek. Kelebihannya 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 lanjut