Mengikuti Trend Lanjutan dan Strategi Hentian Jejak Suai

ATR SL TS
Tarikh penciptaan: 2024-12-20 14:12:05 Akhirnya diubah suai: 2024-12-20 14:12:05
Salin: 1 Bilangan klik: 153
1
fokus pada
1237
Pengikut

Mengikuti Trend Lanjutan dan Strategi Hentian Jejak Suai

Gambaran keseluruhan

Ini adalah strategi pengesanan trend berdasarkan petunjuk Supertrend, yang digabungkan dengan mekanisme penghentian pengesanan yang disesuaikan. Strategi ini terutamanya mengenal pasti arah trend pasaran melalui petunjuk Supertrend, dan menggunakan penghentian pengesanan yang disesuaikan secara dinamik untuk menguruskan risiko dan mengoptimumkan masa keluar.

Prinsip Strategi

Logik teras strategi adalah berdasarkan elemen utama berikut:

  1. Menggunakan indikator Supertrend sebagai asas utama untuk menilai trend, yang menggabungkan ATR (Average True Rate) untuk mengukur turun naik pasaran
  2. Isyarat masuk dicetuskan oleh perubahan arah Supertrend, menyokong perdagangan lebih banyak, lebih pendek atau dua hala
  3. Mekanisme hentian menggunakan hentian pengesanan yang menyesuaikan diri, yang dapat menyesuaikan kedudukan hentian secara automatik mengikut turun naik pasaran
  4. Sistem pengurusan dagangan merangkumi pengurusan kedudukan (default account 15% kedudukan) dan mekanisme penapisan masa

Kelebihan Strategik

  1. Keupayaan menangkap trend yang kuat: Indeks Supertrend dapat mengenal pasti trend utama dengan berkesan, mengurangkan kesalahan penilaian
  2. Pengendalian risiko yang sempurna: Menggunakan mekanisme penghentian kerugian yang pelbagai untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  3. Fleksibiliti tinggi: konfigurasi yang menyokong pelbagai arah perdagangan dan cara menghentikan kerugian
  4. Keupayaan untuk menyesuaikan diri: Tracking stop loss akan menyesuaikan diri secara automatik dengan turun naik pasaran, meningkatkan keupayaan strategi untuk menyesuaikan diri
  5. Sistem pengesanan lengkap: fungsi penapisan masa terbina dalam untuk analisis prestasi sejarah

Risiko Strategik

  1. Risiko perubahan trend: Isyarat palsu mungkin muncul dalam pasaran yang bergolak
  2. Risiko Slip: Pelaksanaan Tracking Stop mungkin dipengaruhi oleh kecairan pasaran
  3. Sensitiviti parameter: Faktor Supertrend dan tetapan kitaran ATR mempunyai kesan yang lebih besar terhadap prestasi strategi
  4. Ketergantungan kepada keadaan pasaran: Perdagangan yang kerap dalam pasaran yang bergolak boleh menyebabkan peningkatan kos

Arah pengoptimuman strategi

  1. Optimasi penapis isyarat: penapis isyarat palsu dengan penambahan petunjuk teknikal
  2. Pengurusan kedudukan yang dioptimumkan: Peratusan pegangan boleh disesuaikan mengikut pergerakan pasaran yang tidak menentu
  3. Peningkatan mekanisme penangguhan kerugian: Logik penangguhan yang lebih kompleks boleh digabungkan dengan reka bentuk kos purata
  4. Pengoptimuman masa masuk: analisis struktur harga boleh ditambah untuk meningkatkan ketepatan masuk
  5. Sistem maklum balas diperbaiki: lebih banyak metrik boleh ditambah untuk menilai prestasi strategi

ringkaskan

Ini adalah strategi untuk mengesan trend yang direka dengan akal dan risiko yang terkawal. Dengan menggabungkan indikator Supertrend dan mekanisme hentian kerugian yang fleksibel, strategi dapat mengawal risiko dengan berkesan sambil mengekalkan keuntungan yang tinggi. Strategi ini sangat boleh dikonfigurasi, sesuai untuk digunakan dalam pelbagai keadaan pasaran, tetapi perlu melalui pengoptimuman parameter yang mencukupi dan pengujian semula.

Kod sumber 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")