Strategi ini mewujudkan mekanisme peratusan yang boleh dikonfigurasikan untuk mengesan kerugian untuk mengawal risiko perdagangan. Ia membolehkan menetapkan peratusan kerugian untuk kedudukan panjang dan pendek, dan terus mengesan harga tertinggi atau terendah ke arah yang menguntungkan dari harga masuk, untuk mencapai penghentian dinamik.
Logik utama strategi ini ialah:
Strategi ini membenarkan persentasen hentian tersuai, seperti 10%. Apabila kedudukan panjang, ia akan mengira 10% di atas harga terendah sebagai garis hentian dalam masa nyata; apabila kedudukan pendek, kira 10% di bawah harga tertinggi sebagai garis hentian.
Dengan cara ini, garis hentian akan sentiasa bergerak ke arah yang menguntungkan, mewujudkan hentian pelacakan dinamik, melindungi keuntungan maksimum, dan mengawal risiko.
Cara untuk menangani masalah ini:
Strategi ini boleh dioptimumkan:
Strategi ini menyediakan kaedah pengesanan peratusan yang berkesan, yang dapat menyesuaikan garis penghentian secara dinamik. Ia dapat memaksimumkan perlindungan keuntungan, tetapi juga dapat mengawal risiko dengan berkesan. Dengan pengoptimuman parameter, integrasi indikator, dan sebagainya, strategi penghentian dapat dibuat lebih pintar dan lebih baik.
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © theCrypster
//@version=4
strategy("Percent Trailing Stop %", overlay=true)
//ENTER SOME SETUP TRADES FOR TSL EXAMPLE
longCondition = crossover(sma(close, 10), sma(close, 20))
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 10), sma(close, 20))
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
//TRAILING STOP CODE
trailStop = input(title="Long Trailing Stop (%)", type=input.float, 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)
max(stopValue, longStopPrice[1])
else
0
shortStopPrice := if strategy.position_size < 0
stopValue = close * (1 + trailStop)
min(stopValue, shortStopPrice[1])
else
999999
//PLOT TSL LINES
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.red, 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.red, style=plot.style_linebr, linewidth=1, title="Short Trail Stop", offset=1, title="Short Trail Stop")
//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)