Meningkatkan Strategi Mengikuti Gelombang


Tanggal Pembuatan: 2024-01-31 15:35:41 Akhirnya memodifikasi: 2024-01-31 15:35:41
menyalin: 0 Jumlah klik: 669
1
fokus pada
1617
Pengikut

Meningkatkan Strategi Mengikuti Gelombang

Ini adalah strategi pelacakan tren yang menggunakan indikator gelombang untuk mengidentifikasi. Ini menghasilkan garis gelombang dengan menghitung rata-rata pergerakan indeks harga rata-rata dan rata-rata pergerakan selisih harga mutlak. Strategi ini menghasilkan sinyal perdagangan dengan memantau persilangan garis gelombang dengan area overbought dan oversold.

Prinsip-prinsip Strategi:

  1. Perhitungan harga rata-rata ap = ((harga tertinggi + harga terendah + harga penutupan) / 3

  2. Hitung EMA dari ap untuk periode n1 dan dapatkan esa

  3. Hitung n1 periode EMA dari perbedaan mutlak ap dan esa, dan dapatkan d

  4. Perhitungan garis gelombang: ci = ((ap-esa) / ((0.015*d)

  5. Hitung EMA untuk periode n2 ci, dan mendapatkan garis gelombang akhir tci, yaitu wt1

  6. Hitung 4 siklus SMA wt1 dan dapatkan wt2

  7. Garis horizontal obLevel1/2 dan osLevel1/2 untuk zona overbuying dan zona overselling

  8. WT1 menghasilkan sinyal beli saat melewati obLevel 2 line; WT1 menghasilkan sinyal jual saat melewati osLevel 2 line

  9. Tambahkan rata-rata emaFilter dan volumeFilter sebagai kondisi penyaringan untuk menghindari sinyal yang salah

  10. Set Stop Loss Rasio Setelah Masuk, Keluar dari Posisi

Analisis Keunggulan:

  1. Garis gelombang menangani konversi multispace dengan lebih baik, sehingga dapat menangkap tren secara efektif

  2. Kombinasi rata-rata dan volume ganda penyaringan, reliabilitas yang lebih tinggi

  3. Perhitungan menggunakan beberapa set parameter untuk menghindari keterbatasan dari satu indikator

  4. Setting Stop Loss, dapat mengunci sebagian keuntungan, dan mengontrol risiko secara efektif

Risiko dan kekurangan:

  1. Pilihan parameter dalam beberapa kasus dapat menyebabkan kinerja yang buruk atau over-fit

  2. Tidak ada panduan yang jelas tentang pilihan parameter optimal, perlu trial and error

  3. Tidak memasukkan kondisi pasar yang lebih luas ke dalam sinyal

  4. Ada risiko efek kembang api jika digunakan dalam pasar yang terbatas atau berfluktuasi

  5. Kurangnya aturan keluar selain keuntungan/kehilangan

Cara Mengoptimalkan:

  1. Set parameter pengujian pada berbagai kerangka waktu dan aset untuk menemukan nilai optimal

  2. Kombinasi dengan indikator volatilitas untuk menghindari sinyal pada periode volatilitas rendah

  3. Menambahkan indikator tambahan seperti RSI untuk meningkatkan akurasi sinyal

  4. Membangun model pembelajaran mesin untuk mencari parameter optimal untuk aset tertentu

  5. Penarikan yang diperkuat dengan menambahkan tracking stop loss atau penarikan yang didasarkan pada peristiwa ekspansi volatilitas mendadak

Kesimpulannya:

Ini adalah strategi yang menggabungkan garis gelombang dan desain indikator tambahan. Ini menggunakan garis gelombang untuk mengidentifikasi konversi tren yang efektif, ditambah dengan filter garis rata-rata dan volume perdagangan untuk menghindari sinyal yang salah, dan dapat mengambil sebagian besar tren garis panjang tengah.

Kode Sumber Strategi
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bush Strategy test", shorttitle="Nique Audi", overlay=false)

// Paramètres
n1 = input(10, title="Channel Length")
n2 = input(21, title="Average Length")
obLevel1 = input(60, title="Over Bought Level 1")
obLevel2 = input(53, title="Over Bought Level 2")
osLevel1 = input(-65, title="Over Sold Level 1")
osLevel2 = input(-60, title="Over Sold Level 2")
takeProfitPercentage = input(1, title="Take Profit (%)")
stopLossPercentage = input(0.50, title="Stop Loss (%)")

// Calculs
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

// Tracé des lignes
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)

// Tracé de la différence entre wt1 et wt2 en bleu
hline(0, "Zero Line", color=color.gray)

// Conditions d'entrée long et court
longCondition = ta.crossover(wt1, obLevel2)
shortCondition = ta.crossunder(wt1, osLevel2)

// Tracé des signaux d'achat et de vente
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Conditions d'entrée et de sortie
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Niveaux de prise de profit pour les positions longues et courtes
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentage / 100)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentage / 100)

// Vérification si les niveaux de prise de profit sont atteints
longTakeProfitReached = strategy.position_size > 0 and high >= longTakeProfitLevel
shortTakeProfitReached = strategy.position_size < 0 and low <= shortTakeProfitLevel

// Tracé des formes de prise de profit
plotshape(series=longTakeProfitReached, style=shape.xcross, location=location.belowbar, color=color.blue, size=size.small, title="Take Profit Long")
plotshape(series=shortTakeProfitReached, style=shape.xcross, location=location.abovebar, color=color.blue, size=size.small, title="Take Profit Short")

// Niveaux de stop loss pour les positions longues et courtes
longStopLossLevel = strategy.position_avg_price * (1 - stopLossPercentage / 100)
shortStopLossLevel = strategy.position_avg_price * (1 + stopLossPercentage / 100)

// Vérification si les niveaux de stop loss sont atteints
longStopLossReached = strategy.position_size > 0 and low <= longStopLossLevel
shortStopLossReached = strategy.position_size < 0 and high >= shortStopLossLevel

// Tracé des formes de stop loss
plotshape(series=longStopLossReached, style=shape.xcross, location=location.belowbar, color=color.red, size=size.small, title="Stop Loss Long")
plotshape(series=shortStopLossReached, style=shape.xcross, location=location.abovebar, color=color.red, size=size.small, title="Stop Loss Short")

// Fermeture des positions en cas de prise de profit ou de stop loss
strategy.close("Long", when=longTakeProfitReached or longStopLossReached)
strategy.close("Short", when=shortTakeProfitReached or shortStopLossReached)