Strategi ini adalah sistem perdagangan grid yang menambah kedudukan berdasarkan penurunan harga dan menutup kedudukan apabila mencapai sasaran keuntungan tetap. Logik terasnya adalah untuk membeli apabila pasaran jatuh kepada peratusan yang telah ditetapkan, menutup semua kedudukan apabila harga bangkit ke keuntungan sasaran, dan menjana pulangan dengan berulang kali melaksanakan proses ini. Strategi ini sangat sesuai untuk menangkap kebangkitan jangka pendek di pasaran berayun.
Strategi ini menggunakan mekanisme gabungan perdagangan grid dan mengambil keuntungan arah:
Ini adalah strategi perdagangan grid yang sederhana secara struktural tetapi praktikal yang membina kedudukan dalam batch pada penurunan harga yang telah ditetapkan dan menutup kedudukan secara seragam apabila mencapai sasaran keuntungan. Kelebihan utama strategi terletak pada kepastian pelaksanaannya dan kepelbagaian risiko, tetapi pemilihan persekitaran pasaran dan pengoptimuman parameter adalah penting semasa pelaksanaan. Terdapat potensi pengoptimuman yang signifikan melalui penambahan stop-loss dinamik dan peningkatan pengurusan kedudukan. Untuk perdagangan langsung, pengujian balik menyeluruh dan penyesuaian parameter berdasarkan keadaan pasaran sebenar disyorkan.
/*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, "#.##") + "%")