Strategi pengujian balik osilator pelangi

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

img

Gambaran umum

Strategi backtesting Rainbow Oscillator adalah strategi perdagangan kuantitatif berdasarkan indikator Rainbow Oscillator. Strategi ini menilai arah tren dan kekuatan pasar dengan menghitung penyimpangan antara harga dan moving average untuk menentukan posisi panjang dan pendek.

Logika Strategi

Indikator inti dari strategi ini adalah Rainbow Oscillator (RO), yang dihitung sebagai berikut:

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

Di mana rata-rata bergerak 10 hari adalah rata-rata bergerak sederhana dari harga penutupan selama 10 periode terakhir. Indikator ini mencerminkan penyimpangan harga relatif terhadap rata-rata bergerak sendiri. Ketika RO > 0, itu berarti harga berada di atas rata-rata bergerak, sinyal bullish; ketika RO < 0, itu berarti harga berada di bawah rata-rata bergerak, sinyal bearish.

Strategi ini juga menghitung indikator tambahan - Bandwidth (RB), yang dihitung sebagai:

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

RB mencerminkan lebar antara moving average. Semakin besar RB, semakin besar fluktuasi harga, dan sebaliknya harga lebih stabil. Indikator RB dapat digunakan untuk menilai stabilitas pasar.

Menurut nilai indikator RO dan RB, strategi ini menilai tingkat penyimpangan harga dan stabilitas pasar, dan menghasilkan sinyal perdagangan untuk posisi panjang dan pendek.

Keuntungan

Keuntungan dari strategi ini adalah:

  1. Penghakiman dua indikator menghindari keterbatasan penilaian satu indikator.
  2. Dapat menilai tren harga dan stabilitas pasar secara bersamaan.
  3. Mudah dihitung, mudah dimengerti dan diterapkan.
  4. Indikator visual membentuk efek pelangi yang intuitif dan mudah dibaca.

Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Pengaturan parameter indikator RO dan RB yang tidak benar dapat menyebabkan sinyal perdagangan yang salah.
  2. Strategi rata-rata bergerak ganda cenderung menghasilkan sinyal palsu dan perdagangan yang sering.
  3. Periode backtesting yang tidak tepat dan pemilihan produk akan mempengaruhi efektivitas strategi.
  4. Biaya perdagangan tidak dipertimbangkan, hasil yang sebenarnya mungkin buruk.

Pengendalian:

  1. Mengoptimalkan parameter untuk indikator RO dan RB.
  2. Tambahkan kondisi filter untuk menghindari perdagangan yang sering.
  3. Pilih siklus backtesting yang tepat dan varietasnya.
  4. Hitung dan pertimbangkan biaya transaksi.

Optimalisasi

Strategi ini juga dapat dioptimalkan dengan cara berikut:

  1. Tambahkan fitur Smooth ke indikator RO untuk menghindari fluktuasi dramatis.
  2. Tambahkan strategi stop loss untuk mengendalikan kerugian tunggal.
  3. Gabungkan dengan indikator lain untuk perdagangan portofolio untuk meningkatkan profitabilitas.
  4. Tambahkan model pembelajaran mesin untuk prediksi dan evaluasi efektivitas indikator.
  5. Mengoptimalkan parameter untuk varietas yang berbeda untuk meningkatkan kemampuan beradaptasi.

Kesimpulan

Strategi backtesting Rainbow Oscillator menilai tren pasar dan stabilitas dengan menghitung penyimpangan antara harga dan moving average, dan menggunakan informasi ini untuk membuat keputusan trading long/short. Strategi ini intuitif, mudah diterapkan, dan memiliki beberapa nilai praktis.


/*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 banyak