Tren Mengikuti Strategi dengan Stop Loss dan Take Profit

Penulis:ChaoZhang, Tanggal: 2024-02-21 14:55:41
Tag:

img

Gambaran umum

Ide utama dari strategi ini adalah untuk menentukan arah panjang dan pendek berdasarkan tren harga mingguan. Dalam uptrend, itu pergi panjang ketika ada pola candlestick bullish. Ini mengambil keuntungan ketika harga naik ke tingkat keuntungan yang telah ditetapkan dan menghentikan kerugian ketika jatuh ke tingkat stop loss yang telah ditetapkan.

Logika Strategi

Strategi pertama-tama menentukan kondisi untuk menilai tren mingguan:

isUptrend = close > close[1]
isDowntrend = close < close[1] 

Jika penutupan saat ini lebih tinggi dari penutupan sebelumnya, itu dinilai sebagai tren naik.

Kemudian sinyal perdagangan intraday didefinisikan:

buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

Artinya, penutupan sebelumnya lebih tinggi dari penutupan sebelumnya (candle bullish), dan penutupan sebelumnya lebih tinggi dari penutupan sebelum hari sebelumnya (gap up), dan berada dalam tren naik.

Setelah masuk ke posisi, stop loss diatur ke penutupan sebelumnya dikurangi 1,382 kali hari sebelumnyas badan nyata:

stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())

Take profit ditetapkan pada penutupan sebelumnya ditambah 2 kali perbedaan antara penutupan sebelumnya dan stop loss:

takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

Ini mewujudkan strategi stop loss dan profit taking.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Perdagangan mengikuti tren menghindari risiko shorting kontra-tren
  2. Sinyal masuk menggabungkan lilin bullish dan gap up untuk menghindari entri panjang prematur
  3. Posisi stop loss wajar untuk mengendalikan kerugian tunggal
  4. Jangkauan keuntungan besar dengan potensi keuntungan yang tinggi

Analisis Risiko

Ada juga beberapa risiko:

  1. Tidak dapat menentukan titik pembalikan tren, mungkin kehilangan peluang berpaling
  2. Stop loss terlalu dekat dengan kemungkinan lebih tinggi untuk terjebak
  3. Tidak mempertimbangkan kontrol biaya, keuntungan dapat menurun pada frekuensi perdagangan yang tinggi

Untuk mengendalikan risiko ini, beberapa optimasi dapat dipertimbangkan:

  1. Setel trailer di dekat stop loss untuk melacak stop loss
  2. Tambahkan modul kontrol biaya untuk membatasi frekuensi pesanan
  3. Tambahkan penilaian SUPPORT/RESISTANCE

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dengan cara berikut:

  1. Tentukan tren berdasarkan lebih banyak faktor seperti arah MA, perubahan volume dll.
  2. Mengoptimalkan sinyal masuk dengan pola lilin lebih
  3. Dinamis jejak stop loss dan mengambil keuntungan sesuai dengan fluktuasi harga
  4. Tambahkan modul kuantitatif ke pengukuran posisi kontrol
  5. Kombinasi dari beberapa kerangka waktu untuk menyaring berdasarkan tren tingkat yang lebih tinggi

Ringkasan

Secara keseluruhan ini adalah strategi yang cukup praktis, menyoroti perdagangan sesuai tren sambil mengendalikan risiko. Ini dapat berfungsi sebagai strategi perdagangan intraday dasar dan dapat dioptimalkan secara modular untuk pasar dan produk yang berbeda untuk menciptakan portofolio perdagangan yang beragam. Dalam penggunaan aktual, mengendalikan biaya dan menghindari perangkap tetap penting, sehingga menjaga mentalitas yang tepat adalah kuncinya.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true)

// Function to get previous day's close and open
getPrevDayClose() =>
    request.security(syminfo.tickerid, "D", close[1])

getPrevDayOpen() =>
    request.security(syminfo.tickerid, "D", open[1])

// Determine weekly trend
isUptrend = close > close[1]
isDowntrend = close < close[1]

// Determine daily conditions for buy
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

// Calculate stop loss and take profit
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

// Strategy logic
if (isUptrend)
    strategy.entry("Buy", strategy.long, when = buyCondition)
    strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit)
    
if (isDowntrend)
    strategy.entry("Sell", strategy.short)

// Plotting the trend on the chart
plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar)
plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar)

// Plotting stop loss and take profit levels on the chart
plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross)
plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)


Lebih banyak