Strategi Momentum RSI Pembalikan Ganda

Penulis:ChaoZhang, Tarikh: 2023-09-26 15:42:48
Tag:

Ringkasan

Strategi ini menggabungkan corak pembalikan 123 dan strategi momentum RSI untuk menapis isyarat untuk kemasukan kemungkinan tinggi pada titik pembalikan trend.

Prinsip-prinsip

123 Strategi Pembalikan

Strategi ini diambil dari buku How I Tripped My Money in the Futures Market oleh Ulf Jensen, halaman 183. Ia mengenal pasti kemungkinan pembalikan trend semasa penyatuan.

Khususnya, ia akan menjadi panjang apabila penutupan lebih tinggi daripada penutupan sebelumnya selama 2 hari berturut-turut dan garis Slow K 9 tempoh adalah di bawah 50; ia akan menjadi pendek apabila penutupan lebih rendah daripada penutupan sebelumnya selama 2 hari berturut-turut dan garis Fast K 9 tempoh adalah di atas 50.

Jadi pada dasarnya ia menggunakan penunjuk stochastic's golden cross dan death cross untuk menentukan potensi pembalikan.

Strategi Momentum RSI

Strategi ini menggunakan fungsi ROC untuk mengira kadar perubahan harga, dan membina penunjuk RSI berdasarkan kadar perubahan harga untuk menentukan trend momentum.

Ia menjadi panjang apabila RSI berada di bawah zon beli, yang menunjukkan peningkatan momentum menaik; ia menjadi pendek apabila RSI berada di atas zon jual, yang menunjukkan peningkatan momentum penurunan.

Kelebihan

  • 123 corak pembalikan mengenal pasti titik pembalikan yang berpotensi selepas penyatuan
  • RSI momentum menapis keluar pecah palsu dengan berkesan
  • Pengumpulan isyarat dari kedua-dua strategi memberikan entri keyakinan yang tinggi

Risiko

  • 123 corak terdedah kepada perangkap banteng atau pelarian palsu, memerlukan penapisan
  • RSI masih berdasarkan harga, tidak boleh sepenuhnya mengelakkan whipsaws
  • Pengumpulan isyarat berganda mungkin kehilangan titik masuk yang lebih baik

Cara yang mungkin untuk mengurangkan risiko:

  1. Tune Parameter Stochastic untuk menggunakan tempoh yang lebih lama untuk menentukan trend
  2. Sesuaikan parameter RSI untuk menggunakan zon beli/jual yang lebih luas
  3. Pertimbangkan untuk menggunakan hanya satu isyarat untuk entri

Arahan pengoptimuman

  • Uji tempoh ROC untuk mencari nilai optimum untuk produk tertentu
  • Uji 123 logik corak, contohnya menyesuaikan garis K pantas / perlahan
  • Uji nilai zon RSI untuk mencari julat pembelian/penjualan yang optimum
  • Cuba indikator lain seperti MACD untuk menggantikan Stochastic
  • Kesan ujian menggunakan hanya satu isyarat strategi

Kesimpulan

Strategi ini meningkatkan ketepatan kemasukan pada pembalikan trend dengan memerlukan dua isyarat pembalikan yang mengesahkan. corak 123 mengenal pasti pembalikan dan momentum RSI mengesahkan kesahihan. Mudah untuk mengoptimumkan parameter untuk produk dan pilihan yang berbeza. Tetapi berhati-hati dengan entri yang hilang dari pengumpulan isyarat ganda. Secara keseluruhan kerangka kerja yang berkesan untuk mengenal pasti trend pembalikan.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/06/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This is the new-age indicator which is version of RSI calculated upon 
// the Rate-of-change indicator.
// The name "Relative Strength Index" is slightly misleading as the RSI 
// does not compare the relative strength of two securities, but rather 
// the internal strength of a single security. A more appropriate name 
// might be "Internal Strength Index." Relative strength charts that compare 
// two market indices, which are often referred to as Comparative Relative Strength.
// And in its turn, the Rate-of-Change ("ROC") indicator displays the difference 
// between the current price and the price x-time periods ago. The difference can 
// be displayed in either points or as a percentage. The Momentum indicator displays 
// the same information, but expresses it as a ratio.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


RSI_ROC(RSILength,ROCLength,BuyZone,SellZone) =>
    pos = 0.0
    xPrice = close
    nRes = rsi(roc(xPrice,ROCLength),RSILength)
    pos := iff(nRes < BuyZone, -1,
	         iff(nRes > SellZone, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & RSI based on ROC", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- RSI based on ROC ----")
RSILength = input(20, minval=1)
ROCLength = input(20, minval=1)
BuyZone = input(30, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRSI_ROC = RSI_ROC(RSILength,ROCLength,BuyZone,SellZone)
pos = iff(posReversal123 == 1 and posRSI_ROC == 1 , 1,
	   iff(posReversal123 == -1 and posRSI_ROC == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih lanjut