Strategi Pelacakan Tren Gelombang yang Ditingkatkan

Penulis:ChaoZhang, Tanggal: 2024-01-31 15:35:41
Tag:

img

Ringkasan: Ini adalah strategi mengikuti tren yang menggunakan osilator Trend Wave untuk mengidentifikasi tren. Ini menghitung rata-rata bergerak eksponensial dari harga rata-rata dan perbedaan harga absolut untuk memetakan garis Trend Wave. Sinyal perdagangan dihasilkan ketika garis Trend Wave melintasi zona overbought / oversold. Filter tambahan pada moving average dan volume menghindari sinyal palsu.

Logika Strategi:

  1. Hitung harga rata-rata ap = (tinggi + rendah + dekat) / 3

  2. Menghitung EMA periode n1 dari ap untuk mendapatkan esa

  3. Menghitung EMA periode n dari perbedaan absolut antara ap dan esa untuk mendapatkan d

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

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

  6. Menghitung SMA 4 periode dari wt1 untuk mendapatkan wt2

  7. Plot overbought/oversold garis level obLevel1/2 dan osLevel1/2

  8. Menghasilkan sinyal beli ketika wt1 melintasi obLevel2; Menghasilkan sinyal jual ketika wt1 melintasi di bawah osLevel2

  9. Tambahkan rata-rata bergerak emaFilter dan volume filter volumeFilter sebagai filter untuk menghindari sinyal palsu

  10. Set mengambil keuntungan/stop loss setelah masuk ke posisi keluar

Keuntungan:

  1. Garis tren gelombang menangani tren/transisi kontra-tren dengan baik

  2. Keandalan ditingkatkan melalui filter ganda dari rata-rata bergerak dan volume

  3. Beberapa parameter menghindari keterbatasan satu indikator

  4. Mengambil keuntungan / menghentikan kerugian kunci dalam keuntungan dan mengontrol risiko

Risiko dan Batasan:

  1. Pilihan parameter dapat menyebabkan kinerja yang buruk atau overfit

  2. Tidak ada panduan definitif tentang parameter optimal

  3. Mengingkari kondisi pasar yang lebih luas

  4. Risiko whip-saws di pasar yang terikat rentang/terputus

  5. Kurangnya aturan keluar selain mengambil keuntungan/stop loss

Peluang peningkatan:

  1. Parameter pengujian di seluruh kerangka waktu/aset untuk menemukan nilai optimal

  2. Menggabungkan metrik volatilitas untuk menghindari rezim volatilitas rendah

  3. Tambahkan indikator seperti RSI untuk meningkatkan akurasi sinyal

  4. Membangun model pembelajaran mesin untuk menemukan parameter yang disesuaikan yang optimal

  5. Memperkuat exit dengan trailing stops atau volatility event based exit

Kesimpulan:

Ini adalah strategi mengikuti tren yang menggabungkan indikator Trend Wave dengan filter tambahan. Ini memanfaatkan kemampuan garis Trend Wave untuk mengidentifikasi transisi tren, menggunakan filter rata-rata bergerak dan volume untuk menghindari sinyal palsu, dan bertujuan untuk menangkap sebagian besar tren jangka menengah / panjang. Mengambil keuntungan / menghentikan kerugian digunakan untuk mengendalikan risiko. Peluang yang signifikan ada untuk meningkatkan kinerja di lebih banyak instrumen dan kerangka waktu dengan mengoptimalkan parameter, menambahkan lebih banyak indikator, dan teknik seperti pembelajaran mesin.


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




Lebih banyak