
Gagasan utama strategi ini adalah untuk menentukan arah bullish berdasarkan trend harga mingguan, masuk ke dalam bullish apabila terdapat bentuk garis matahari; berhenti apabila harga naik ke titik berhenti yang ditetapkan, dan berhenti jika turun ke titik berhenti yang ditetapkan.
Strategi ini mula-mula mentakrifkan syarat-syarat untuk menilai trend mingguan:
isUptrend = close > close[1]
isDowntrend = close < close[1]
Jika harga penutupan semasa lebih besar daripada harga penutupan hari sebelumnya, ia akan dianggap sebagai trend bullish, sebaliknya turun.
Kemudian, kita menentukan isyarat perdagangan harian:
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend
Iaitu, harga penutupan hari sebelumnya lebih besar daripada harga pembukaan hari sebelumnya, dan harga pembukaan hari sebelumnya lebih besar daripada harga penutupan hari sebelumnya, dan berada dalam trend bullish, memenuhi syarat kemasukan berganda.
Selepas masuk, titik hentian ditetapkan sebagai harga penutupan hari sebelumnya dan dikurangkan 1.382 kali panjang garis fizikal hari sebelumnya:
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
Titik henti ditetapkan sebagai harga penutupan hari sebelumnya ditambah dua kali ganda perbezaan antara titik henti dan harga penutupan:
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)
Untuk mencapai halangan kerugian dan keuntungan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Untuk mengawal risiko ini, pertimbangan untuk menambah pengoptimuman seperti berikut:
Strategi ini juga boleh dioptimumkan dengan:
Strategi ini agak praktikal secara keseluruhan, idea terasnya menonjolkan perdagangan trend, sambil mengawal risiko. Ia boleh digunakan sebagai strategi asas untuk perdagangan garis pendek dalam sehari, atau dapat dioptimumkan secara modular mengikut pasaran dan varieti yang berbeza, untuk mencapai portofolio perdagangan yang pelbagai. Dalam penggunaan praktikal, perhatian masih diperlukan untuk mengawal kos dan mengelakkan risiko, menjaga mental yang sesuai adalah 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)