Strategi Trend Alpha dengan Stop Loss Terakhir

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

img

Ringkasan

Strategi Trend Alpha dengan Trailing Stop Loss adalah versi yang dipertingkatkan dari Strategi Trend Alpha dengan menggabungkan mekanisme stop loss yang dapat mengawal risiko dengan lebih berkesan dan meningkatkan pulangan keseluruhan.

Logika Strategi

Strategi ini mula-mula menggunakan penunjuk Alpha untuk menentukan trend harga. Apabila penunjuk Alpha naik, ia adalah isyarat bullish. Apabila penunjuk Alpha turun, ia adalah isyarat bearish. Strategi ini menghasilkan isyarat beli dan jual berdasarkan salib emas dan salib mati penunjuk Alpha.

Sementara itu, mekanisme penangguhan stop loss diaktifkan. Tahap penangguhan stop loss tetap pada 10% daripada harga penutupan hari itu. Apabila memegang kedudukan panjang, jika harga jatuh di bawah tahap stop loss, strategi akan keluar dari kedudukan untuk menghentikan kerugian. Begitu juga untuk kedudukan pendek. Ini membantu mengunci keuntungan dengan lebih baik dan mengurangkan risiko.

Analisis Kelebihan

  1. Trend Alpha mempunyai keupayaan yang lebih kuat untuk menentukan trend harga daripada purata bergerak mudah dan penunjuk lain.

  2. Dengan membolehkan penangguhan stop loss, kerugian perdagangan tunggal dapat dikawal dengan berkesan, mengurangkan risiko.

  3. Strategi ini mempunyai keupayaan kawalan risiko yang kuat. Walaupun dalam keadaan pasaran yang tidak menguntungkan, kerugian masih boleh dikurangkan.

  4. Dengan sedikit input rujukan, strategi ini adalah cekap untuk mengira, sesuai untuk perdagangan frekuensi tinggi.

Analisis Risiko

  1. Dalam pasaran yang terikat julat sisi, strategi boleh menghasilkan banyak isyarat perdagangan yang tidak perlu, meningkatkan kos perdagangan dan kerugian seluncur.

  2. Apabila membolehkan penangguhan stop loss, peratusan stop loss perlu ditetapkan dengan sewajarnya. Peratusan yang terlalu tinggi atau rendah akan menjadi tidak menguntungkan untuk keuntungan strategi.

  3. Dalam harga yang turun naik dengan ganas, kebarangkalian kehilangan berhenti yang dicetuskan akan meningkat dengan ketara, meningkatkan risiko terkunci dalam kedudukan.

  4. Apabila mengoptimumkan parameter stop loss, pelbagai faktor termasuk ciri-ciri asas dan kekerapan perdagangan harus dipertimbangkan, bukan hanya mengejar pulangan maksimum.

Risiko di atas boleh dikurangkan dengan menyesuaikan parameter penunjuk Alpha, menetapkan stop loss DYNAMIC, memendekkan panjang kitaran dagangan, dll.

Arahan pengoptimuman

  1. Parameter penunjuk yang berbeza boleh diuji untuk mencari kombinasi parameter penunjuk Alpha yang lebih sesuai.

  2. Cuba menetapkan peratusan stop loss secara dinamik berdasarkan ATR untuk menyesuaikan diri dengan lebih baik dengan turun naik pasaran.

  3. Gabungkan dengan penunjuk lain seperti MACD, KD untuk menapis beberapa isyarat palsu.

  4. Parameter boleh dioptimumkan secara automatik berdasarkan hasil dagangan langsung dan pengujian semula, menggunakan teknik pembelajaran mesin untuk meningkatkan kecerdasan pemilihan parameter.

Kesimpulan

Strategi Trend Alpha dengan Trailing Stop Loss menggabungkan penentuan trend dan kawalan risiko. Ia dapat mengenal pasti trend harga dengan berkesan dan mengunci keuntungan untuk mengurangkan risiko. Berbanding dengan strategi penjejakan trend yang mudah, strategi ini dapat memperoleh pulangan yang lebih tinggi. Dengan pelbagai aspek pengoptimuman, ia mempunyai potensi untuk mencapai prestasi 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 lanjut