Parabola Oscillator Mencari Strategy Tinggi dan Rendah

Penulis:ChaoZhang, Tanggal: 2024-02-20 16:01:12
Tag:

img

Gambaran umum

Strategi ini mengidentifikasi harga tertinggi dan terendah dengan menghitung rata-rata bergerak dan varians selama periode waktu yang berbeda untuk menentukan tren dan volatilitas.

Logika Strategi

Logika inti dari strategi ini adalah untuk menghitung rata-rata bergerak dan varians selama periode waktu yang berbeda baru-baru ini. Secara khusus, ia menghitung rata-rata bergerak 5 hari, 4 hari dan 3 hari (ma, mb, mc) dan varians (da, db, dc). Kemudian membandingkan ukuran dan memilih periode dengan varians tertinggi untuk mewakili tren saat ini. Akhirnya, ia mengalikan varians kuadrat periode perwakilan dengan rata-rata bergerak untuk menghasilkan kurva akhir wg.

Dengan demikian, ketika harga pecah ke atas atau ke bawah, periode representatif dan variansnya akan berubah secara signifikan, menyebabkan wg berubah secara signifikan juga, mencapai identifikasi tertinggi dan terendah.

Analisis Keuntungan

Ide ini menilai perubahan tren berdasarkan periode yang berbeda efektif dan dapat dengan jelas mengidentifikasi titik perubahan harga.

Menghitung rata-rata bergerak dan varians juga sederhana dan efisien. Dengan ukuran kode kecil, sangat sensitif terhadap perubahan harga mendadak dan dapat mendeteksi pecah dengan cepat.

Analisis Risiko

Periode yang digunakan dalam strategi ini pendek. Untuk tujuan jangka menengah hingga panjang, penilaian mungkin tidak cukup akurat dan komprehensif. Fluktuasi harga jangka pendek dapat menyebabkan penilaian yang salah.

Selain itu, bobot rata-rata bergerak dan varians mempengaruhi hasil penilaian.

Arahan Optimasi

Lebih banyak periode waktu dengan panjang yang berbeda dapat ditambahkan untuk membentuk kombinasi untuk membuat putusan lebih komprehensif, misalnya 10 hari, 20 hari untuk tujuan jangka menengah hingga panjang.

Skema bobot yang berbeda juga dapat diuji untuk membuat pengaturan bobot lebih fleksibel. Optimasi parameter dapat diperkenalkan untuk menyesuaikan bobot secara otomatis berdasarkan kondisi pasar untuk mengurangi kemungkinan penilaian yang salah.

Selain itu, indikator lain dapat dimasukkan, seperti volume perdagangan yang tidak normal, untuk menghindari tertipu oleh perdagangan arbitrase.

Kesimpulan

Logika keseluruhan strategi ini jelas dan mudah dipahami, menggunakan moving average dan varians untuk menilai tren harga dan volatilitas, dan kemudian menggabungkannya untuk menghasilkan kurva yang dapat dengan jelas mengidentifikasi puncak dan terendah. Penghakiman gabungan multi-periode tersebut dapat secara efektif menangkap karakteristik pasar jangka pendek dan jangka panjang, meningkatkan akurasi deteksi titik inflexion.


/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 12h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("x²", overlay=false)


a1=(close[2]-close[3])/1
a2=(close[1]-close[3])/4
a3=(close[0]-close[3])/9

b1=(close[3]-close[4])/1
b2=(close[2]-close[4])/4
b3=(close[1]-close[4])/9
b4=(close[0]-close[4])/16

c1=(close[4]-close[5])/1
c2=(close[3]-close[5])/4
c3=(close[2]-close[5])/9
c4=(close[1]-close[5])/16
c5=(close[0]-close[5])/25

ma=(a1+a2+a3)/3
da=(a1-ma)*(a1-ma)
da:=da+(a2-ma)*(a2-ma)
da:=da+(a3-ma)*(a3-ma)
da:=sqrt(da)
da:=min(2, da)
da:=1-da/2
da:=max(0.001, da)


mb=(b1+b2+b3+b4)/4
db=(b1-mb)*(b1-mb)
db:=db+(b2-mb)*(b2-mb)
db:=db+(b3-mb)*(b3-mb)
db:=db+(b4-mb)*(b4-mb)
db:=sqrt(db)
db:=min(2, db)
db:=1-db/2
db:=max(0.001, db)

mc=(c1+c2+c3+c4+c5)/5
dc=(c1-mc)*(c1-mc)
dc:=dc+(c2-mc)*(c2-mc)
dc:=dc+(c3-mc)*(c3-mc)
dc:=dc+(c4-mc)*(c4-mc)
dc:=dc+(c5-mc)*(c5-mc)
dc:=sqrt(dc)
dc:=min(2, dc)
dc:=1-dc/2
dc:=max(0.001, dc)



g=close
if(da>db and da>dc)
    g:=da*da*ma
else
    if(db > da and db > dc)
        g:=db*db*mb
    else
        g:=dc*dc*mc

wg=wma(g, 2)
plot(wg)
plot(0, color=black)


longCondition = true //crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = true //crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

Lebih banyak