Strategi Trend Alpha dengan Stop Loss Belakang

Penulis:ChaoZhang, Tanggal: 2023-11-27 15:25:35
Tag:

img

Gambaran umum

Alpha Trend Strategy with Trailing Stop Loss adalah versi yang ditingkatkan dari Alpha Trend Strategy dengan menggabungkan mekanisme trailing stop loss, yang dapat mengendalikan risiko dengan lebih efektif dan meningkatkan hasil keseluruhan.

Logika Strategi

Strategi ini pertama-tama menggunakan indikator Alpha untuk menentukan tren harga. Ketika indikator Alpha naik, itu adalah sinyal bullish. Ketika indikator Alpha turun, itu adalah sinyal bearish. Strategi ini menghasilkan sinyal beli dan jual berdasarkan salib emas dan salib mati dari indikator Alpha.

Sementara itu, mekanisme stop loss trailing diaktifkan. Tingkat stop loss trailing default menjadi 10% dari harga penutupan hari itu. Saat memegang posisi panjang, jika harga turun di bawah level stop loss, strategi akan keluar dari posisi untuk stop loss. Demikian pula untuk posisi pendek. Ini membantu lebih baik mengunci keuntungan dan mengurangi risiko.

Analisis Keuntungan

  1. Tren Alpha memiliki kemampuan yang lebih kuat untuk menentukan tren harga daripada rata-rata bergerak sederhana dan indikator lainnya.

  2. Dengan memungkinkan stop loss trailing, kerugian tunggal perdagangan dapat dikendalikan secara efektif, mengurangi risiko.

  3. Strategi ini memiliki kemampuan pengendalian risiko yang kuat. Bahkan dalam kondisi pasar yang tidak menguntungkan, kerugian masih dapat diminimalkan.

  4. Dengan lebih sedikit input referensi, strategi ini efisien untuk menghitung, cocok untuk perdagangan frekuensi tinggi.

Analisis Risiko

  1. Di pasar yang terikat kisaran sisi, strategi dapat menghasilkan banyak sinyal perdagangan yang tidak perlu, meningkatkan biaya perdagangan dan kerugian slippage.

  2. Ketika memungkinkan stop loss trailing, persentase stop loss harus ditetapkan dengan tepat.

  3. Dalam harga yang berfluktuasi dengan keras, kemungkinan stop loss yang dipicu akan meningkat secara signifikan, meningkatkan risiko terkunci dalam posisi.

  4. Ketika mengoptimalkan parameter stop loss, berbagai faktor termasuk karakteristik dasar dan frekuensi perdagangan harus dipertimbangkan, bukan hanya mengejar pengembalian maksimum.

Risiko di atas dapat dikurangi dengan menyesuaikan parameter indikator Alpha, mengatur stop loss DYNAMIC, memperpendek panjang siklus perdagangan, dll.

Arahan Optimasi

  1. Berbagai parameter indikator dapat diuji untuk menemukan kombinasi parameter indikator Alpha yang lebih cocok.

  2. Cobalah untuk menetapkan persentase stop loss secara dinamis berdasarkan ATR untuk lebih beradaptasi dengan fluktuasi pasar.

  3. Gabungkan dengan indikator lain seperti MACD, KD untuk menyaring beberapa sinyal palsu.

  4. Parameter dapat dioptimalkan secara otomatis berdasarkan hasil perdagangan langsung dan backtesting, menggunakan teknik pembelajaran mesin untuk meningkatkan kecerdasan pemilihan parameter.

Kesimpulan

Strategi Trend Alpha dengan Trailing Stop Loss menggabungkan penentuan tren dan pengendalian risiko. Ini dapat secara efektif mengidentifikasi tren harga dan mengunci keuntungan untuk mengurangi risiko. Dibandingkan dengan strategi pelacakan tren sederhana, strategi ini dapat memperoleh pengembalian yang lebih tinggi dan stabil. Dengan berbagai aspek optimasi, ia memiliki potensi untuk mencapai kinerja yang lebih baik.


/*backtest
start: 2023-10-27 00:00:00
end: 2023-11-26 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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5

strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=false)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))


// //ENTER SOME SETUP TRADES FOR TSL EXAMPLE
// longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20))
// if longCondition
//     strategy.entry('My Long Entry Id', strategy.long)

// shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20))
// if shortCondition
//     strategy.entry('My Short Entry Id', strategy.short)



longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
    

enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true)
//TRAILING STOP CODE
trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01



longStopPrice = 0.0
shortStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + trailStop)
    math.min(stopValue, shortStopPrice[1])
else
    999999

//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop')

    
if enableTrailing
    //EXIT TRADE @ TSL
    if strategy.position_size > 0
        strategy.exit(id='Close Long', stop=longStopPrice)
    if strategy.position_size < 0
        strategy.exit(id='Close Short', stop=shortStopPrice)


 

Lebih banyak