Tren Mengikuti Strategi Stop Loss Berdasarkan Indikator Trend Alert

Penulis:ChaoZhang, Tanggal: 2024-02-05 16:00:35
Tag:

img

Gambaran umum

Strategi Stop Loss Trend Following adalah strategi perdagangan stop loss yang didasarkan pada indikator TrendAlert. Strategi ini menentukan arah tren melalui indikator TrendAlert untuk menerapkan entri trend tracking. Pada saat yang sama, indikator ATR digunakan untuk mengatur stop loss untuk mengendalikan risiko.

Logika Strategi

Strategi ini terdiri dari bagian-bagian utama berikut:

  1. Indikator TrendAlert menilai arah tren. Ketika TrendAlert lebih besar dari 0, itu adalah sinyal bullish. Ketika kurang dari 0, itu adalah sinyal bearish.

  2. Indikator ATR menghitung kisaran fluktuasi harga baru-baru ini. ATR dikalikan dengan ATR stop loss multiplier atrStopMultiplier digunakan sebagai stop loss tetap.

  3. Parameter struktur mengontrol apakah itu diaktifkan.

  4. Masukkan posisi panjang atau pendek sesuai arah sinyal tren. Setelah masuk, atur Take Profit dan Stop Loss.

  5. Tutup posisi ketika harga memicu stop loss atau take profit.

Strategi ini menyaring sinyal palsu melalui penilaian tren, mengendalikan risiko melalui pelacakan stop loss, memastikan profitabilitas melalui mengambil keuntungan, dan meningkatkan stabilitas sistem perdagangan.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Jaminan ganda penyaringan tren dan pelacakan stop loss menghindari mengejar kebisingan pasar dan memastikan risiko perdagangan yang terkontrol.

  2. Pengaturan stop loss adaptif ATR mencegah atas optimasi dan cocok untuk berbagai lingkungan pasar.

  3. Mengambil keuntungan memastikan profitabilitas dan mencegah memakan keuntungan.

  4. Logika strategi jelas dan ringkas, mudah dimengerti dan dimodifikasi, cocok untuk pedagang kuantitatif pengembangan sekunder.

  5. Ditulis dalam bahasa Pine Script, dapat digunakan langsung di platform TradingView tanpa keterampilan pemrograman.

Analisis Risiko

Ada juga beberapa risiko dalam strategi ini:

  1. Penghakiman tren yang salah dapat menyebabkan masuk yang tidak perlu dan pemicu stop loss.

  2. Ketika pasar berfluktuasi dengan keras, ATR dapat meremehkan amplitudo yang sebenarnya. Pada saat ini, multiplier stop loss ATR atrStopMultiplier dapat ditingkatkan.

  3. Target mengambil keuntungan dapat membatasi ruang keuntungan dari strategi.

  4. Logika eksistensi yang hanya didasarkan pada harga harus dikombinasikan dengan manajemen waktu.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan parameter panjang ATR atrLength dan stop loss multiplier atrStopMultiplier untuk menyesuaikan sensitivitas algoritma stop loss.

  2. Cobalah indikator tren yang berbeda untuk menemukan peluang masuk yang lebih baik.

  3. Pilih atau sesuaikan parameter target mengambil keuntungan sesuai dengan karakteristik varietas perdagangan tertentu.

  4. Meningkatkan mekanisme stop loss waktu untuk menghindari risiko overnight.

  5. Menyaring kegagalan palsu dengan menggabungkan indikator volume perdagangan untuk meningkatkan stabilitas strategi.

Kesimpulan

Secara umum, ini adalah strategi stop loss pelacakan tren yang sangat praktis. Ini menggunakan indikator untuk menentukan arah tren untuk mencapai pelacakan tren, sambil mengatur stop adaptif untuk memastikan pengendalian risiko. Logika strategi jelas dan mudah digunakan, menjadikannya ideal untuk pemula untuk dipelajari. Pada saat yang sama, ini juga menyediakan kerangka strategi perdagangan yang baik untuk pengembangan strategi lanjutan, yang layak bagi pedagang kuantitatif penelitian dan optimalisasi yang mendalam.


/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jaque_verdatre

//@version=5
strategy("TrendAlert Based", overlay = true)

// Get inputs
TrendAlert = input.source(close, "TrendAlert")
atrLength = input.int(title="ATR Length", defval=15, minval=1)
useStructure = input.bool(title="Use Structure?", defval=true)
lookback = input.int(title="How Far To Look Back For High/Lows", defval=8, minval=1)
atrStopMultiplier = input.float(title="ATR Multiplier", defval=0.2, minval=0.1)
LimitMultiplier = input.float(title = "Limit Multiplier", defval = 0.5, minval = 0.1)
PineConnectorID = input.int(title = "Pine Connector ID",defval = 0)
CurrencyToSend = input.string(title = "personilized currency", defval = "ETHUSD")
Risk = input.int(title = "risk in % to send", defval = 10, minval = 1)

// Calculate data
atr = ta.atr(atrLength)
lowestLow = ta.lowest(low, lookback)
highestHigh = ta.highest(high, lookback)
longStop = (useStructure ? lowestLow : close) - atr * atrStopMultiplier
shortStop = (useStructure ? highestHigh : close) + atr * atrStopMultiplier

// Draw data to chart
plot(atr, color=color.rgb(33, 149, 243), title="ATR", display = display.none)
plot(longStop, color=color.green, title="Long Trailing Stop")
plot(shortStop, color=color.red, title="Short Trailing Stop")

var float LimitL = na
var float LimitS = na
var float LPosPrice = na
var float SPosPrice = na
var float LPosLongStop = na
var float SPosShortStop = na

KnowLimit (PosPrice, PosStop) =>
    (PosPrice-PosStop)*LimitMultiplier+PosPrice


NotInTrade = strategy.position_size == 0
InLongTrade = strategy.position_size > 0
InShortTrade = strategy.position_size < 0

longCondition = TrendAlert > 0 and NotInTrade
if (longCondition)
    LPosPrice := close
    LPosLongStop := longStop
    LimitL := KnowLimit(LPosPrice, LPosLongStop)
    strategy.entry("long", strategy.long)
    LTPPip = LimitL-LPosPrice
    LSLPip = LPosPrice-longStop
    alert(str.tostring(PineConnectorID)+',buy,'+str.tostring(CurrencyToSend)+',risk='+str.tostring(Risk)+',sl='+str.tostring(LSLPip)+'tp='+str.tostring(LTPPip), alert.freq_once_per_bar_close)
    strategy.exit("exit", "long", stop = longStop, limit = LimitL)

shortCondition = TrendAlert < 0 and NotInTrade
if (shortCondition)
    SPosPrice := close
    SPosShortStop := shortStop
    LimitS := KnowLimit(SPosPrice, SPosShortStop)
    strategy.entry("short", strategy.short)
    STPPip = SPosPrice-LimitS
    SSLPip = shortStop - SPosPrice
    alert(str.tostring(PineConnectorID)+',sell,ETHUSD,risk=10,sl='+str.tostring(SSLPip)+'tp='+str.tostring(STPPip), alert.freq_once_per_bar_close)
    strategy.exit("exit", "short", stop = shortStop, limit = LimitS)

plotshape(longCondition, color = color.green, style = shape.labelup, location = location.belowbar, size = size.normal, title = "Long Condition")
plotshape(shortCondition, color = color.red, style = shape.labeldown, location = location.abovebar, size = size.normal, title = "Short Condition")

if (InShortTrade)
    LimitL := close
    LPosLongStop := close
    LPosPrice := close

PlotLongTakeProfit = plot(LimitL, color = InLongTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Long Take Profit")
PlotLongStopLoss = plot(LPosLongStop, color = InLongTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Long Stop Loss")
PlotLongPosPrice = plot(LPosPrice, color = InLongTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Long Position Price")

if (InLongTrade)
    LimitS := close
    SPosShortStop := close
    SPosPrice := close

PlotShortTakeProfit = plot(LimitS, color = InShortTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Short Take Profit")
PlotShortStopLoss = plot(SPosShortStop, color = InShortTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Short Stop Loss")
PlotShortPosPrice = plot(SPosPrice, color = InShortTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Short Position Price")

fill(PlotLongPosPrice, PlotLongTakeProfit, color = InLongTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotShortPosPrice, PlotShortTakeProfit, color = InShortTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))

fill(PlotLongPosPrice, PlotLongStopLoss, color = InLongTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))
fill(PlotShortPosPrice, PlotShortStopLoss, color = InShortTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))

Lebih banyak