Trend Breakout - Strategi bayangan panjang

Penulis:ChaoZhang, Tanggal: 2023-11-15 16:43:17
Tag:

img

Strategi ini menilai arah tren saat ini dengan menghitung rasio panjang bayangan bullish / bearish, dan mengidentifikasi tren dengan indikator ATR. Ini membuka posisi terbalik pada titik pecah dan menetapkan stop loss dan mengambil keuntungan untuk menangkap tren jangka pendek.

Logika Strategi

Strategi ini terutama menilai tren saat ini dengan menghitung rasio shadow bullish/bearish.

Logika spesifiknya adalah:

  1. Menghitung bayangan bearish: dekat - rendah
  2. Perhitungkan bayangan bullish: tinggi - terbuka
  3. Ambil maksimum bayangan bearish dan bullish sebagai panjang bayangan
  4. Hitung panjang tubuh lilin: tinggi - rendah
  5. Menghitung rasio antara bayangan dan panjang tubuh
  6. Jika rasio > 0,5 dan bearish > bullish, menilai tren penurunan dan posisi panjang
  7. Jika rasio > 0,5 dan bullish > bearish, menilai tren naik dan posisi pendek
  8. Validasi breakout dengan panjang lilin > 0,75 * ATR
  9. Setel stop loss dan take profit setelah masuk, dengan rasio 2: 1

Di atas adalah logika dasar perdagangan, mengidentifikasi titik terbalik dengan deteksi tren dan mengoptimalkan keuntungan dengan stop loss / take profit.

Keuntungan

  1. Rasio bayangan secara akurat menilai tren
  2. ATR menyaring sinyal kabur palsu
  3. Stop loss dan take profit mengelola risiko
  4. 2: 1 rasio risiko-imbalan memenuhi standar perdagangan kuantum
  5. Cocok untuk perdagangan jangka pendek pada saham volatilitas tinggi
  6. Logika yang sederhana dan jelas, mudah dimengerti

Risiko

  1. Volatilitas harga dapat mempengaruhi stop loss dan meningkatkan kerugian
  2. Kinerja sangat bergantung pada pengaturan parameter
  3. Pembalikan tren dapat menyebabkan kerugian
  4. Memperluas stop loss/take profit dapat meningkatkan probabilitas kerugian
  5. Kegagalan melarikan diri dapat menyebabkan kerugian besar

Risiko dapat dikelola dengan stop loss yang wajar, optimasi parameter, dan keluar posisi yang tepat waktu.

Peningkatan

Strategi dapat dioptimalkan dengan cara berikut:

  1. Optimalkan parameter rasio bayangan untuk nilai terbaik
  2. Optimalkan parameter ATR untuk panjang lilin terbaik
  3. Mengoptimalkan stop loss/take profit coefficients untuk optimalisasi risiko-imbalan
  4. Tambahkan ukuran posisi seperti peningkatan posisi secara bertahap
  5. Tambahkan stop loss untuk perlindungan keuntungan
  6. Tambahkan indikator lain ke sinyal filter
  7. Mengoptimalkan periode waktu backtest dan menguji tahap pasar yang berbeda

Dengan pengujian dan optimasi multi-faceted, kinerja strategi dapat dimaksimalkan.

Secara keseluruhan, strategi ini mendapat keuntungan dari perubahan harga jangka pendek melalui identifikasi tren dan manajemen risiko.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © ondrej17

//@version=4
strategy("longWickstrategy", overlay=true )
 
// Inputs
st_yr_inp = input(defval=2020, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')
sltp_inp = input(defval=0.8, title='N - % offset for N*SL and (2N)*TP')/100
 
// Dates
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
canTrade = time >= start and time <= end
// Indicators Setup


 
// Strategy Calcuations
lowerWick = (open > close) ? close-low : open - low
upperWick = (open > close) ? high-open : high-close
wickLength = max(lowerWick,upperWick)
candleLength = high-low
wickToCandleRatio = wickLength / candleLength
entryFilterCandleLength = candleLength > 0.75*atr(48)


// Entries and Exits
 
longCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick > upperWick and canTrade and strategy.position_size == 0
shortCondition = entryFilterCandleLength and wickToCandleRatio > 0.5 and lowerWick < upperWick and canTrade and strategy.position_size == 0

strategy.entry("pendingLong", strategy.long, limit=low+wickLength/2, when = longCondition)
strategy.entry("pendingShort", strategy.short, limit=high-wickLength/2, when = shortCondition)

longStop = strategy.position_size > 0 ? strategy.position_avg_price*(1-sltp_inp) : na
longTP = strategy.position_size > 0 ? strategy.position_avg_price*(1+2*sltp_inp) : na
shortStop = strategy.position_size < 0 ? strategy.position_avg_price*(1+sltp_inp) : na
shortTP = strategy.position_size < 0 ? strategy.position_avg_price*(1-2*sltp_inp) : na

strategy.exit("longSLTP","pendingLong", stop=longStop, limit = longTP)
strategy.exit("shortSLTP","pendingShort", stop=shortStop, limit = shortTP)  
 

plot(longStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(shortStop, color=color.red, style=plot.style_linebr, linewidth=2)
plot(longTP, color=color.green, style=plot.style_linebr, linewidth=2)
plot(shortTP, color=color.green, style=plot.style_linebr, linewidth=2)

plotLongCondition = longCondition ? high+abs(open-close) : na
plot(plotLongCondition, style=plot.style_circles, linewidth=4, color=color.green)
plotShortCondition = shortCondition ? high+abs(open-close) : na
plot(plotShortCondition, style=plot.style_circles, linewidth=4, color=color.red)



Lebih banyak