
Strategi ini adalah strategi perdagangan grid yang meningkatkan posisi berdasarkan tingkat penurunan harga dan menutup posisi ketika target keuntungan tetap tercapai. Logika inti dari strategi ini adalah membeli saat pasar turun ke kisaran yang telah ditentukan, dan menutup seluruh posisi saat harga pulih untuk mencapai target keuntungan, dan memperoleh keuntungan dengan mengulang proses ini secara terus-menerus. Strategi ini sangat cocok untuk menangkap peluang pemulihan jangka pendek di pasar yang bergejolak.
Strategi ini menggunakan mekanisme gabungan dari perdagangan grid dan pengambilan keuntungan terarah:
Ini adalah strategi perdagangan grid sederhana tetapi praktis, yang membangun posisi secara berkelompok sesuai dengan rentang penurunan yang telah ditetapkan dan menutup semua posisi saat target keuntungan tercapai. Keuntungan inti dari strategi ini terletak pada kepastian pelaksanaan dan diversifikasi risiko, tetapi ketika menggunakannya, perhatian harus diberikan pada pemilihan lingkungan pasar dan optimalisasi parameter. Masih banyak ruang untuk mengoptimalkan strategi dengan menambahkan stop loss dinamis, meningkatkan manajemen posisi, dll. Saat menggunakannya dalam perdagangan nyata, disarankan untuk melakukan pengujian ulang yang memadai terlebih dahulu dan menyesuaikan parameter berdasarkan kondisi pasar sebenarnya.
/*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, "#.##") + "%")