Trend Mengikuti Strategi dengan Stop Loss dan Ambil Keuntungan

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

img

Ringkasan

Idea utama strategi ini adalah untuk menentukan arah panjang dan pendek berdasarkan trend harga mingguan. Dalam trend menaik, ia pergi lama apabila terdapat corak candlestick bullish. Ia mengambil keuntungan apabila harga meningkat ke tahap mengambil keuntungan yang telah ditetapkan dan menghentikan kerugian apabila jatuh ke tahap stop loss yang telah ditetapkan.

Logika Strategi

Strategi pertama menentukan syarat untuk menilai trend mingguan:

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

Jika penutupan semasa lebih tinggi daripada penutupan sebelumnya, ia dinilai sebagai aliran menaik.

Kemudian isyarat dagangan intraday ditakrifkan:

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

Iaitu, penutupan sebelumnya lebih tinggi daripada penutupan sebelumnya (candle bullish), dan pembukaan sebelumnya lebih tinggi daripada penutupan sebelum hari sebelumnya (gap up), dan ia berada dalam trend menaik.

Selepas memasuki kedudukan, stop loss ditetapkan kepada penutupan sebelumnya tolak 1.382 kali badan sebenar hari sebelumnya:

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

Keuntungan mengambil ditetapkan kepada penutupan sebelumnya ditambah 2 kali perbezaan antara penutupan dan stop loss sebelumnya:

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

Ini merealisasikan strategi stop loss dan mengambil keuntungan.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Perdagangan mengikut trend mengelakkan risiko pendek terhadap trend
  2. Isyarat kemasukan menggabungkan lilin bullish dan jurang sehingga untuk mengelakkan kemasukan panjang yang terlalu awal
  3. Penempatan stop loss adalah munasabah untuk mengawal kerugian tunggal
  4. Julat keuntungan mengambil adalah besar dengan potensi keuntungan yang tinggi

Analisis Risiko

Terdapat juga beberapa risiko:

  1. Tidak dapat menentukan titik pembalikan trend, mungkin terlepas peluang berpaling
  2. Stop loss terlalu dekat dengan kebarangkalian yang lebih tinggi untuk terperangkap
  3. Tiada pertimbangan kawalan kos, keuntungan boleh menurun pada kekerapan perdagangan yang tinggi

Untuk mengawal risiko ini, beberapa pengoptimuman boleh dipertimbangkan:

  1. Tetapkan treler berhampiran stop loss untuk menjejaki stop loss
  2. Tambah modul kawalan kos untuk mengehadkan kekerapan pesanan
  3. Tambah penilaian sokongan / rintangan

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dengan cara berikut:

  1. Menentukan trend berdasarkan lebih banyak faktor seperti arah MA, perubahan jumlah dll.
  2. Mengoptimumkan isyarat kemasukan dengan lebih banyak corak candlestick
  3. Secara dinamik jejak stop loss dan mengambil keuntungan mengikut turun naik harga
  4. Tambah modul kuantitatif untuk mengawal saiz kedudukan
  5. Gabungan pelbagai jangka masa untuk menapis berdasarkan trend peringkat tinggi

Ringkasan

Secara keseluruhan, ini adalah strategi yang agak praktikal, menyoroti perdagangan mengikut trend sambil mengawal risiko. Ia boleh berfungsi sebagai strategi perdagangan intraday asas dan boleh dioptimumkan secara modular untuk pasaran dan produk yang berbeza untuk mewujudkan portfolio perdagangan yang pelbagai. Dalam penggunaan sebenar, mengawal kos dan mengelakkan perangkap tetap penting, jadi mengekalkan mental yang betul adalah kunci.


/*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 lanjut