Sumber dimuat naik... memuat...

Strategi trend lanjutan dengan penangguhan pengekalan adaptif

Penulis:ChaoZhang, Tarikh: 2024-12-20 14:12:05
Tag:ATRSLTS

img

Ringkasan

Ini adalah strategi mengikuti trend berdasarkan penunjuk Supertrend, digabungkan dengan mekanisme penangguhan stop loss adaptif. Strategi ini terutamanya menggunakan penunjuk Supertrend untuk mengenal pasti arah trend pasaran dan menggunakan penangguhan trailing yang disesuaikan secara dinamik untuk menguruskan risiko dan mengoptimumkan masa keluar. Ia menyokong pelbagai kaedah stop loss, termasuk penangguhan berasaskan peratusan, berasaskan ATR, dan titik tetap, yang membolehkan penyesuaian fleksibel mengikut keadaan pasaran yang berbeza.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan unsur-unsur utama berikut:

  1. Menggunakan penunjuk Supertrend sebagai asas utama untuk penentuan trend, yang menggabungkan ATR (Average True Range) untuk mengukur turun naik pasaran
  2. Isyarat kemasukan dipicu oleh perubahan arah Supertrend, menyokong perdagangan panjang, pendek atau dua hala
  3. Mekanisme Stop Loss menggunakan penangguhan trailing adaptif yang menyesuaikan diri secara automatik berdasarkan turun naik pasaran
  4. Sistem pengurusan perdagangan termasuk saiz kedudukan (default 15% daripada ekuiti akaun) dan mekanisme penapisan masa

Kelebihan Strategi

  1. Keupayaan menangkap trend yang kuat: Mengenali trend utama dengan berkesan melalui penunjuk Supertrend, mengurangkan isyarat palsu
  2. Kawalan risiko yang komprehensif: Menggunakan pelbagai mekanisme stop loss yang sesuai untuk persekitaran pasaran yang berbeza
  3. Kemudahan yang tinggi: Menyokong konfigurasi pelbagai arah dagangan dan kaedah stop loss
  4. Kemudahan penyesuaian yang tinggi: Hentian penghantaran menyesuaikan diri secara automatik mengikut turun naik pasaran, meningkatkan kebolehsesuaian strategi
  5. Sistem backtesting lengkap: Fungsi penapisan masa terbina dalam untuk analisis prestasi sejarah

Risiko Strategi

  1. Risiko pembalikan trend: Isyarat palsu mungkin berlaku di pasaran yang sangat tidak menentu
  2. Risiko slippage: Pelaksanaan trailing stop mungkin dipengaruhi oleh kecairan pasaran
  3. Sensitiviti parameter: Faktor supertrend dan tetapan tempoh ATR memberi kesan yang ketara kepada prestasi strategi
  4. Kebergantungan persekitaran pasaran: Perdagangan kerap di pasaran yang berbeza boleh meningkatkan kos

Arahan Pengoptimuman Strategi

  1. Pengoptimuman penapisan isyarat: Penunjuk teknikal tambahan boleh ditambah untuk menapis isyarat palsu
  2. Pengoptimuman pengurusan kedudukan: Saiz kedudukan boleh diselaraskan secara dinamik berdasarkan turun naik pasaran
  3. Peningkatan mekanisme stop loss: Logik stop loss yang lebih kompleks boleh direka dengan menggabungkan harga purata kos
  4. Pengoptimuman masa kemasukan: Analisis struktur harga boleh ditambah untuk meningkatkan ketepatan kemasukan
  5. Penambahbaikan sistem pengujian belakang: Lebih banyak penunjuk statistik boleh ditambah untuk menilai prestasi strategi

Ringkasan

Ini adalah trend yang direka dengan baik mengikuti strategi dengan risiko yang boleh dikawal. Dengan menggabungkan penunjuk Supertrend dengan mekanisme stop loss yang fleksibel, strategi dapat mengekalkan keuntungan yang tinggi sambil mengawal risiko dengan berkesan. Strategi ini sangat boleh dikonfigurasi dan sesuai untuk digunakan dalam persekitaran pasaran yang berbeza, tetapi memerlukan pengoptimuman parameter yang menyeluruh dan pengesahan backtesting. Penambahbaikan masa depan boleh dibuat dengan menambah lebih banyak alat analisis teknikal dan langkah kawalan risiko untuk meningkatkan lagi kestabilan dan keuntungan strategi.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")


Berkaitan

Lebih lanjut