Strategi Ujian Kembali Oscillator Pelangi

Penulis:ChaoZhang, Tarikh: 2023-12-26 15:08:17
Tag:

img

Ringkasan

Strategi backtesting Rainbow Oscillator adalah strategi perdagangan kuantitatif berdasarkan penunjuk Rainbow Oscillator. Strategi ini menilai arah trend dan kekuatan pasaran dengan mengira penyimpangan antara harga dan purata bergerak untuk menentukan kedudukan panjang dan pendek.

Logika Strategi

Penunjuk teras strategi ini adalah Oscillator Pelangi (RO), yang dikira seperti berikut:

RO = 100 * ((Close - 10-day Moving Average) / (HHV(High, N) - LLV(Low, N))) 

Di mana purata bergerak 10 hari adalah purata bergerak mudah harga penutupan selama 10 tempoh yang lalu. Penunjuk ini mencerminkan penyimpangan harga berbanding purata bergerak sendiri. Apabila RO > 0, ia bermakna harga di atas purata bergerak, isyarat kenaikan; apabila RO < 0, ia bermakna harga di bawah purata bergerak, isyarat penurunan.

Strategi ini juga mengira penunjuk tambahan - Bandwidth (RB), yang dikira sebagai:

RB = 100 * ((Highest value of moving averages - Lowest value of moving averages) / (HHV(High, N) - LLV(Low, N)))

RB mencerminkan lebar antara purata bergerak. Semakin besar RB, semakin besar turun naik harga, dan sebaliknya harga lebih stabil. Penunjuk RB boleh digunakan untuk menilai kestabilan pasaran.

Mengikut nilai penunjuk RO dan RB, strategi ini menilai tahap penyimpangan harga dan kestabilan pasaran, dan menghasilkan isyarat perdagangan untuk kedudukan panjang dan pendek.

Kelebihan

Kelebihan strategi ini ialah:

  1. Penghakiman dua petunjuk mengelakkan batasan penghakiman satu petunjuk.
  2. Boleh menilai trend harga dan kestabilan pasaran secara serentak.
  3. Mudah dikira, mudah difahami dan dilaksanakan.
  4. Indikator visual membentuk kesan pelangi yang intuitif dan mudah dibaca.

Risiko

Terdapat juga beberapa risiko dengan strategi ini:

  1. Tetapan parameter indikator RO dan RB yang tidak betul boleh menyebabkan isyarat perdagangan yang salah.
  2. Strategi purata bergerak berganda cenderung menghasilkan isyarat palsu dan perdagangan yang kerap.
  3. Tempoh backtesting yang tidak sesuai dan pemilihan produk akan menjejaskan keberkesanan strategi.
  4. Kos dagangan tidak dipertimbangkan, hasil sebenar mungkin buruk.

Tindakan balas:

  1. Mengoptimumkan parameter untuk penunjuk RO dan RB.
  2. Tambah keadaan penapis untuk mengelakkan perdagangan yang kerap.
  3. Pilih kitaran backtesting yang sesuai dan pelbagai.
  4. Hitung dan pertimbangkan kos transaksi.

Pengoptimuman

Strategi ini juga boleh dioptimumkan dengan cara berikut:

  1. Tambah ciri Smooth kepada penunjuk RO untuk mengelakkan turun naik dramatik.
  2. Tambah strategi stop loss untuk mengawal kerugian tunggal.
  3. Gabungkan dengan penunjuk lain untuk perdagangan portfolio untuk meningkatkan keuntungan.
  4. Tambah model pembelajaran mesin untuk ramalan dan menilai keberkesanan penunjuk.
  5. Mengoptimumkan parameter untuk jenis yang berbeza untuk meningkatkan daya adaptasi.

Kesimpulan

Strategi backtesting Rainbow Oscillator menilai trend pasaran dan kestabilan dengan mengira penyimpangan antara harga dan purata bergerak, dan menggunakan maklumat ini untuk membuat keputusan perdagangan panjang / pendek. Strategi ini intuitif, mudah dilaksanakan, dan mempunyai beberapa nilai praktikal. Tetapi terdapat juga beberapa risiko yang perlu dikurangkan dengan mengoptimumkan parameter dan peraturan perdagangan untuk mengurangkan risiko dan meningkatkan prestasi perdagangan sebenar.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/03/2018
// Ever since the people concluded that stock market price movements are not 
// random or chaotic, but follow specific trends that can be forecasted, they 
// tried to develop different tools or procedures that could help them identify 
// those trends. And one of those financial indicators is the Rainbow Oscillator 
// Indicator. The Rainbow Oscillator Indicator is relatively new, originally 
// introduced in 1997, and it is used to forecast the changes of trend direction.
//
// As market prices go up and down, the oscillator appears as a direction of the 
// trend, but also as the safety of the market and the depth of that trend. As 
// the rainbow grows in width, the current trend gives signs of continuity, and 
// if the value of the oscillator goes beyond 80, the market becomes more and more 
// unstable, being prone to a sudden reversal. When prices move towards the rainbow 
// and the oscillator becomes more and more flat, the market tends to remain more 
// stable and the bandwidth decreases. Still, if the oscillator value goes below 20, 
// the market is again, prone to sudden reversals. The safest bandwidth value where 
// the market is stable is between 20 and 80, in the Rainbow Oscillator indicator value. 
// The depth a certain price has on a chart and into the rainbow can be used to judge 
// the strength of the move.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Rainbow Oscillator Backtest")
Length = input(2, minval=1)
LengthHHLL = input(10, minval=2, title="HHV/LLV Lookback")
reverse = input(false, title="Trade reverse")
xMA1 = sma(close, Length)
xMA2 = sma(xMA1, Length)
xMA3 = sma(xMA2, Length)
xMA4 = sma(xMA3, Length)
xMA5 = sma(xMA4, Length)
xMA6 = sma(xMA5, Length)
xMA7 = sma(xMA6, Length)
xMA8 = sma(xMA7, Length)
xMA9 = sma(xMA8, Length)
xMA10 = sma(xMA9, Length)
xHH = highest(close, LengthHHLL)
xLL = lowest(close, LengthHHLL)
xHHMAs = max(xMA1,max(xMA2,max(xMA3,max(xMA4,max(xMA5,max(xMA6,max(xMA7,max(xMA8,max(xMA9,xMA10)))))))))
xLLMAs = min(xMA1,min(xMA2,min(xMA3,min(xMA4,min(xMA5,min(xMA6,min(xMA7,min(xMA8,min(xMA9,xMA10)))))))))
xRBO = 100 * ((close - ((xMA1+xMA2+xMA3+xMA4+xMA5+xMA6+xMA7+xMA8+xMA9+xMA10) / 10)) / (xHH - xLL))
xRB = 100 * ((xHHMAs - xLLMAs) / (xHH - xLL))
clr = iff(xRBO >= 0, green, red)
pos = iff(xRBO > 0, 1,
       iff(xRBO < 0, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xRBO, color=clr, title="RO", style= histogram, linewidth=2)
p0 = plot(0, color = gray, title="0")
p1 = plot(xRB, color=green, title="RB")
p2 = plot(-xRB, color=red, title="RB")
fill(p1, p0, color=green)
fill(p2, p0, color=red)

Lebih lanjut