Strategi Pengesanan Trend Gelombang yang Ditingkatkan

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

img

Ringkasan: Ini adalah strategi trend berikut yang menggunakan pengayun Trend Gelombang untuk mengenal pasti trend. Ia mengira purata bergerak eksponensial harga purata dan perbezaan harga mutlak untuk merangka garis Trend Gelombang. Isyarat perdagangan dihasilkan apabila garis Trend Gelombang melintasi zon overbought / oversold. Penapis tambahan pada purata bergerak dan jumlah mengelakkan isyarat palsu.

Logik Strategi:

  1. Mengira harga purata ap = (tinggi + rendah + dekat) / 3

  2. Mengira EMA tempoh n1 ap untuk mendapatkan esa

  3. Mengira EMA tempoh n1 perbezaan mutlak antara ap dan esa untuk mendapatkan d

  4. Mengira garis Trend Gelombang: ci = (ap - esa) / ((0.015*d)

  5. Mengira EMA tempoh n2 ci untuk mendapatkan garis trend gelombang akhir tci, iaitu wt1

  6. Mengira SMA 4 tempoh wt1 untuk mendapatkan wt2

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

  8. Menjana isyarat beli apabila wt1 melintasi obLevel2; Menjana isyarat jual apabila wt1 melintasi di bawah osLevel2

  9. Tambah rata-rata bergerak emaFilter dan volume penapis volumeFilter sebagai penapis untuk mengelakkan isyarat palsu

  10. Set mengambil keuntungan/stop loss selepas masuk ke kedudukan keluar

Kelebihan:

  1. Garis Trend Gelombang mengendalikan peralihan trend/counter-trend dengan baik

  2. Kebolehpercayaan meningkat melalui penapis berganda purata bergerak dan jumlah

  3. Pelbagai parameter mengelakkan batasan satu penunjuk

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

Risiko dan Batasan:

  1. Pilihan parameter boleh membawa kepada prestasi yang buruk atau pemasangan berlebihan

  2. Tiada panduan muktamad mengenai parameter optimum

  3. Mengabaikan keadaan pasaran yang lebih luas

  4. Risiko whip-saws di pasaran yang terhad / bergelombang

  5. Kekurangan peraturan keluar selain mengambil keuntungan / berhenti kerugian

Peluang peningkatan:

  1. Parameter ujian dalam jangka masa/aset untuk mencari nilai optimum

  2. Memasukkan metrik turun naik untuk mengelakkan rejim turun naik yang rendah

  3. Tambah penunjuk seperti RSI untuk meningkatkan ketepatan isyarat

  4. Membina model pembelajaran mesin untuk mencari parameter yang disesuaikan yang optimum

  5. Mempertingkatkan keluar dengan hentian penghujung atau keluar berdasarkan peristiwa turun naik

Kesimpulan:

Ini adalah strategi trend berikut yang menggabungkan penunjuk Trend Gelombang dengan penapis tambahan. Ia memanfaatkan keupayaan garis Trend Gelombang untuk mengenal pasti peralihan trend, menggunakan penapis purata bergerak dan jumlah untuk mengelakkan isyarat palsu, dan bertujuan untuk menangkap kebanyakan trend jangka sederhana / panjang. Ambil keuntungan / hentikan kerugian digunakan untuk mengawal risiko. Peluang yang signifikan wujud untuk meningkatkan prestasi di lebih banyak instrumen dan jangka masa dengan mengoptimumkan parameter, menambah lebih banyak penunjuk, 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 lanjut