
Ringkasan: Ini adalah strategi pengesanan trend yang menggunakan indikator gelombang. Ia mendapat garis gelombang dengan mengira purata bergerak indeks harga purata dan purata bergerak perbezaan harga mutlak. Strategi ini menghasilkan isyarat perdagangan dengan memantau persilangan garis gelombang dengan kawasan overbought dan oversold.
Prinsip-prinsip strategi:
Hitung harga purata ap = ((harga tertinggi + harga terendah + harga penutupan) / 3
Hitung EMA ap untuk n1 kitaran, dan dapatkan esa
Hitung EMA tempoh n1 untuk perbezaan mutlak antara ap dan esa, dan d
Hitung garis gelombang: ci = ((ap-esa) / ((0.015*d)
Hitung EMA untuk kitaran n2 ci, dan dapatkan garis gelombang akhir tci, iaitu wt1
Hitung SMA 4 kitaran wt1 dan dapatkan wt2
Garis mendatar untuk kawasan overbuy dan oversell obLevel 1⁄2 dan osLevel 1⁄2
WT1 menghasilkan isyarat beli apabila melalui obLevel2 line; WT1 menghasilkan isyarat jual apabila melalui osLevel2 line
Tambahkan rata-rata emaFilter dan volumeFilter sebagai syarat penapisan untuk mengelakkan isyarat salah
Tetapkan Stop Loss Rasio Selepas Masuk, Keluar Dari Kedudukan
Analisis kelebihan:
Garis gelombang menangani penukaran plurality dengan baik, dan dapat menangkap trend dengan berkesan
Gabungan garisan rata dan penapisan dua kali jumlah transaksi, kebolehpercayaan yang lebih tinggi
Menggunakan pelbagai set parameter untuk mengelakkan keterbatasan satu indikator
Tetapkan stop loss untuk mengunci sebahagian keuntungan dan mengawal risiko dengan berkesan
Risiko dan kekurangan:
Pilihan parameter boleh menyebabkan prestasi yang buruk atau overfitting dalam keadaan tertentu
Tidak ada panduan yang jelas mengenai pilihan parameter yang optimum, memerlukan percubaan dan kesilapan
Tidak memasukkan keadaan pasaran yang lebih luas ke dalam isyarat
Terdapat risiko kesan tembakan api jika digunakan dalam pasaran yang terhad atau turun naik
Kurangnya peraturan keluar selain daripada keuntungan/kerugian
Arah untuk dioptimumkan:
Set parameter ujian pada pelbagai jangka masa dan aset untuk mencari nilai optimum
Gabungan penunjuk turun naik untuk mengelakkan isyarat pada masa turun naik rendah
Menambah petunjuk tambahan seperti RSI untuk meningkatkan ketepatan isyarat
Membina model pembelajaran mesin untuk mencari parameter optimum untuk aset tertentu
Peningkatan penarikan diri dengan penambahan tracking stop loss atau penarikan diri berdasarkan peristiwa lonjakan turun naik yang mendadak
Kesimpulannya:
Ini adalah strategi yang menggabungkan garis gelombang dan reka bentuk penunjuk tambahan. Ia menggunakan garis gelombang untuk mengenal pasti penukaran trend yang berkesan, ditambah dengan penapisan garis rata dan jumlah perdagangan untuk mengelakkan isyarat yang salah, dan dapat mengambil sebahagian besar trend garis panjang tengah.
/*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)