Multi Take Profit dan Stop Loss WaveTrend Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-01 18:09:12
Tag:

img

Gambaran umum

Strategi ini didasarkan pada strategi WaveTrend asli dari LazyBear, dengan fitur tambahan seperti stop loss sekunder, beberapa level take profit dan filter EMA jangka panjang yang tinggi.

Logika Strategi

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

  1. AP: Harga Rata-rata = (Paling Tinggi + Terendah + Tutup) / 3

  2. ESA: EMA periode n dari AP

  3. CI: (AP - ESA) / (0,015 * EMA periode n1 dari nilai absolut (AP - ESA))

  4. TCI: EMA periode n2 dari CI, juga disebut WaveTrend Line 1 (WT1)

  5. WT2: SMA 4 periode dari WT1

Posisi panjang dibuka ketika WT1 melintasi di atas WT2 (salib emas), dan ditutup ketika WT1 melintasi di bawah WT2 (salib kematian).

Selain itu, filter EMA jangka panjang tinggi diterapkan untuk menghindari sinyal palsu, sehingga perdagangan panjang hanya diambil ketika harga di atas EMA dan perdagangan pendek di bawah EMA.

Keuntungan

  1. Mengikuti tren secara otomatis menggunakan WaveTrend tanpa penilaian manual

  2. Stop loss sekunder secara efektif membatasi kerugian perdagangan tunggal

  3. Multiple mengambil tingkat keuntungan memaksimalkan profit capture

  4. Filter EMA meningkatkan tingkat kemenangan dengan menghindari sinyal palsu

Risiko dan Peningkatan

  1. Gagal mendeteksi pembalikan tren, mungkin menyebabkan kerugian

  2. Penyesuaian parameter yang buruk menyebabkan perdagangan berlebihan

  3. Set parameter yang berbeda dapat diuji untuk optimasi

  4. Pertimbangkan indikator tambahan untuk deteksi pembalikan

Kesimpulan

Strategi ini secara komprehensif menggabungkan mengikuti tren, pengendalian risiko dan maksimalisasi keuntungan melalui deteksi tren otomatis WaveTrend, filter EMA untuk meningkatkan efisiensi dan manajemen stop loss / take profit untuk menyeimbangkan perdagangan tren dan pengendalian risiko.


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



Lebih banyak