Strategi tren gelombang dengan beberapa stop loss dan beberapa take profit


Tanggal Pembuatan: 2023-12-01 18:09:12 Akhirnya memodifikasi: 2023-12-01 18:09:12
menyalin: 0 Jumlah klik: 814
1
fokus pada
1619
Pengikut

Strategi tren gelombang dengan beberapa stop loss dan beberapa take profit

Ringkasan

Strategi ini adalah strategi tren gelombang asli LazyBear, dengan tambahan stop loss kedua, harga stop multiple, dan filter EMA jangka waktu tinggi. Ini menggunakan indikator tren gelombang untuk menghasilkan sinyal perdagangan, kemudian menggabungkan EMA filter dan manajemen stop loss untuk melakukan perdagangan pelacakan tren otomatis.

Prinsip Strategi

Indikator inti dari strategi ini adalah indikator WaveTrend, yang terdiri dari tiga bagian:

  1. AP: Harga rata-rata = ((harga tertinggi + harga terendah + harga penutupan) / 3

  2. ESA: EMA edisi n1 AP

  3. CI: ((AP-ESA) / (0,015 × AP-ESA untuk n1 EMA) dari nilai mutlak n1 EMA

  4. TCI: EMA periode n2 dari CI, yaitu garis tren gelombang 1 ((WT1))

  5. WT2: SMA 4 siklus WT1

Ketika menembus WT1 menghasilkan garpu emas, lakukan lebih banyak; ketika menembus WT2 menghasilkan garpu mati, lakukan posisi kosong.

Selain itu, strategi ini juga memperkenalkan EMA dalam jangka waktu tinggi sebagai filter, yang hanya dapat dilakukan jika harga lebih tinggi dari EMA dan kosong jika harga lebih rendah dari EMA, sehingga memfilter beberapa sinyal palsu.

Keunggulan Strategis

  1. Menggunakan indikator tren gelombang untuk melacak tren secara otomatis dan menghindari kesalahan penilaian manusia
  2. Menambahkan Stop Loss Kedua untuk Mengontrol Kerugian Tunggal
  3. Beberapa Stop-Price, Maksimalkan Penguncian Keuntungan
  4. Filter EMA, memfilter sinyal palsu, meningkatkan tingkat kemenangan

Risiko dan Optimalisasi Strategi

  1. Tidak bisa memfilter tren reversal, dapat menyebabkan kerugian
  2. Setting parameter yang tidak tepat dapat menyebabkan terlalu sering perdagangan
  3. Kombinasi parameter yang berbeda dapat diuji, parameter yang dioptimalkan
  4. Dapat dipertimbangkan untuk mengevaluasi trend reversal dalam kombinasi dengan indikator lain

Meringkaskan

Strategi ini mempertimbangkan berbagai dimensi seperti pelacakan tren, pengendalian risiko, pemaksimalkan keuntungan, dan lain-lain. Strategi ini secara otomatis menangkap tren melalui indikator tren gelombang, bekerja sama dengan filter EMA untuk meningkatkan efisiensi perdagangan, dan mengendalikan risiko sambil menangkap tren. Strategi ini adalah strategi pelacakan tren yang stabil dan efisien.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © undacovacobra

//@version=4
strategy("WaveTrend Strategy [LazyBear] with Secondary Stop Loss", overlay=true)

// Input parameters
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
useEmaFilter = input(false, "Use EMA Filter")
emaLength = input(50, "EMA Length")
emaTimeFrame = input("60", "EMA Time Frame")
tradeMode = input("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"])
useSecondarySL = input(false, "Use Secondary Stop Loss")
slPercentage = input(5.0, "Stop Loss Percentage (%)")

// WaveTrend Indicator Calculations
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
wt1 = tci
wt2 = sma(wt1, 4)

// EMA Calculation with Selected Time Frame
getEma(timeFrame) =>
    security(syminfo.tickerid, timeFrame, ema(close, emaLength))

emaFilter = getEma(emaTimeFrame)

// Secondary Stop Loss Calculation
longStopPrice = strategy.position_avg_price * (1 - slPercentage / 100)
shortStopPrice = strategy.position_avg_price * (1 + slPercentage / 100)

// Long Entry and Exit Conditions with EMA Filter and Trade Mode
longEntry = crossover(wt1, wt2) and wt2 < osLevel1 and (not useEmaFilter or close > emaFilter) and (tradeMode == "Long Only" or tradeMode == "Both")
if (longEntry)
    strategy.entry("Long", strategy.long)
longExit = crossunder(wt1, wt2) and wt2 > obLevel1
if (longExit)
    strategy.close("Long")
if (useSecondarySL and strategy.position_size > 0 and low < longStopPrice)
    strategy.close("Long", comment="SL Hit")

// Short Entry and Exit Conditions with EMA Filter and Trade Mode
shortEntry = crossunder(wt1, wt2) and wt2 > obLevel1 and (not useEmaFilter or close < emaFilter) and (tradeMode == "Short Only" or tradeMode == "Both")
if (shortEntry)
    strategy.entry("Short", strategy.short)
shortExit = crossover(wt1, wt2) and wt2 < osLevel1
if (shortExit)
    strategy.close("Short")
if (useSecondarySL and strategy.position_size < 0 and high > shortStopPrice)
    strategy.close("Short", comment="SL Hit")

// Plotting
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_cross)
plot(osLevel2, color=color.green, style=plot.style_cross)
plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_cross)
plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80)
plot(emaFilter, color=color.blue)