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.
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.
Trend Alpha mempunyai keupayaan yang lebih kuat untuk menentukan trend harga daripada purata bergerak mudah dan penunjuk lain.
Dengan membolehkan penangguhan stop loss, kerugian perdagangan tunggal dapat dikawal dengan berkesan, mengurangkan risiko.
Strategi ini mempunyai keupayaan kawalan risiko yang kuat. Walaupun dalam keadaan pasaran yang tidak menguntungkan, kerugian masih boleh dikurangkan.
Dengan sedikit input rujukan, strategi ini adalah cekap untuk mengira, sesuai untuk perdagangan frekuensi tinggi.
Dalam pasaran yang terikat julat sisi, strategi boleh menghasilkan banyak isyarat perdagangan yang tidak perlu, meningkatkan kos perdagangan dan kerugian seluncur.
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.
Dalam harga yang turun naik dengan ganas, kebarangkalian kehilangan berhenti yang dicetuskan akan meningkat dengan ketara, meningkatkan risiko terkunci dalam kedudukan.
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.
Parameter penunjuk yang berbeza boleh diuji untuk mencari kombinasi parameter penunjuk Alpha yang lebih sesuai.
Cuba menetapkan peratusan stop loss secara dinamik berdasarkan ATR untuk menyesuaikan diri dengan lebih baik dengan turun naik pasaran.
Gabungkan dengan penunjuk lain seperti MACD, KD untuk menapis beberapa isyarat palsu.
Parameter boleh dioptimumkan secara automatik berdasarkan hasil dagangan langsung dan pengujian semula, menggunakan teknik pembelajaran mesin untuk meningkatkan kecerdasan pemilihan parameter.
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)