
Gagasan utama dari strategi ini adalah untuk menentukan arah bullish berdasarkan tren harga mingguan, dalam kasus bullish, masuk ke bullish setelah munculnya bentuk garis matahari; berhenti ketika harga naik ke stop loss yang ditentukan, dan berhenti jika turun ke stop loss yang ditentukan.
Strategi ini pertama-tama mendefinisikan kriteria untuk menilai tren mingguan:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Jika harga penutupan saat ini lebih besar dari harga penutupan hari sebelumnya, maka akan dianggap sebagai tren bullish, sebaliknya, akan menjadi bearish.
Kemudian, tentukan sinyal intraday:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
Harga penutupan hari sebelumnya lebih besar dari harga penutupan hari sebelumnya, dan harga penutupan hari sebelumnya lebih besar dari harga penutupan hari sebelumnya, dan berada dalam tren bullish, memenuhi syarat masuk multihead.
Setelah masuk, stop loss ditetapkan sebagai harga penutupan hari sebelumnya dikurangi 1.382 kali panjang garis fisik hari sebelumnya:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
Stop loss ditetapkan sebagai harga penutupan hari sebelumnya ditambah dua kali perbedaan antara stop loss dan harga penutupan:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
Hal ini dilakukan untuk mencapai stop loss recovery.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Untuk mengendalikan risiko ini, pertimbangkan untuk menambahkan optimasi berikut:
Strategi ini juga dapat dioptimalkan dengan cara:
Strategi ini secara keseluruhan relatif praktis, ide inti menonjolkan perdagangan tren, sekaligus mengendalikan risiko. Dapat digunakan sebagai strategi dasar untuk perdagangan short-line dalam sehari, atau dapat dioptimalkan secara modular sesuai dengan berbagai pasar dan varietas, untuk mencapai portofolio perdagangan yang beragam. Dalam penerapan praktis, tetap perlu memperhatikan pengendalian biaya dan pencegahan risiko, menjaga pola pikir yang tepat sangat penting.
/*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)