
Strategi ini ialah strategi perdagangan grid yang meningkatkan kedudukan berdasarkan tahap penurunan harga dan menutup kedudukan apabila sasaran keuntungan tetap dicapai. Logik teras strategi adalah untuk membeli apabila pasaran jatuh ke julat pratetap, dan untuk menutup keseluruhan kedudukan apabila harga melantun untuk mencapai keuntungan sasaran, dan untuk mendapatkan keuntungan dengan sentiasa mengulangi proses ini. Strategi ini amat sesuai untuk menangkap peluang pemulihan jangka pendek dalam pasaran yang tidak menentu.
Strategi ini menggunakan mekanisme komposit perdagangan grid dan pengambilan untung berarah:
Ini adalah strategi perdagangan grid yang mudah tetapi praktikal, yang membina kedudukan dalam kelompok mengikut julat penurunan pratetap dan menutup semua kedudukan apabila keuntungan sasaran dicapai. Kelebihan teras strategi terletak pada kepastian pelaksanaannya dan kepelbagaian risiko, tetapi apabila menggunakannya, perhatian harus diberikan kepada pemilihan persekitaran pasaran dan pengoptimuman parameter. Masih terdapat banyak ruang untuk pengoptimuman strategi dengan menambahkan stop loss dinamik, menambah baik pengurusan kedudukan, dsb. Apabila menggunakannya dalam dagangan sebenar, adalah disyorkan untuk menjalankan ujian belakang yang mencukupi terlebih dahulu dan melaraskan parameter berdasarkan keadaan pasaran sebenar.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy Down 5%, Sell at 5% Profit", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Inputs
initial_date = input(timestamp("2024-01-01 00:00:00"), title="Initial Purchase Date")
profit_target = input.float(5.0, title="Profit Target (%)", minval=0.1) // Target profit percentage
rebuy_drop = input.float(5.0, title="Rebuy Drop (%)", minval=0.1) // Drop percentage to rebuy
// Variables
var float initial_price = na // Initial purchase price
var int entries = 0 // Count of entries
var float total_profit = 0 // Cumulative profit
var bool active_trade = false // Whether an active trade exists
// Entry Condition: Buy on or after the initial date
if not active_trade
initial_price := close
strategy.entry("Buy", strategy.long)
entries += 1
active_trade := true
// Rebuy Condition: Buy if price drops 5% or more from the initial price
rebuy_price = initial_price * (1 - rebuy_drop / 100)
if active_trade and close <= rebuy_price
strategy.entry("Rebuy", strategy.long)
entries += 1
// Exit Condition: Sell if the price gives a 5% profit on the initial investment
target_price = initial_price * (1 + profit_target / 100)
if active_trade and close >= target_price
strategy.close_all(comment="Profit Target Hit")
active_trade := false
total_profit += profit_target
// Display information on the chart
plotshape(series=close >= target_price, title="Target Hit", style=shape.labelup, location=location.absolute, color=color.green, text="Sell")
plotshape(series=close <= rebuy_price, title="Rebuy", style=shape.labeldown, location=location.absolute, color=color.red, text="Rebuy")
// Draw statistics on the chart
var label stats_label = na
if (na(stats_label))
stats_label := label.new(x=bar_index, y=close, text="", style=label.style_none, size=size.small)
label.set_xy(stats_label, bar_index, close)
label.set_text(stats_label, "Entries: " + str.tostring(entries) + "\nTotal Profit: " + str.tostring(total_profit, "#.##") + "%")