Diese Strategie ist ein Gitterhandelssystem, das Positionen basierend auf Preisrückgängen hinzufügt und Positionen schließt, wenn ein festes Gewinnziel erreicht wird. Die Kernlogik besteht darin, zu kaufen, wenn der Markt auf einen vorgegebenen Prozentsatz sinkt, alle Positionen zu schließen, wenn der Preis auf den Zielgewinn zurückfällt, und Renditen zu erzielen, indem dieser Prozess wiederholt ausgeführt wird. Diese Strategie eignet sich besonders für die Erfassung von kurzfristigen Rückschlägen in oszillierenden Märkten.
Die Strategie setzt einen kombinierten Mechanismus des Netthandels und der gezielten Gewinnentnahme ein:
Dies ist eine strukturell einfache, aber praktische Grid-Trading-Strategie, die Positionen in Chargen bei vorgegebenen Preisrückgängen aufbaut und Positionen gleichmäßig schließt, wenn Gewinnziele erreicht werden. Die Hauptvorteile der Strategie liegen in der Ausführungssicherheit und der Risikodiversifizierung, aber die Auswahl des Marktumfelds und die Optimierung der Parameter sind während der Implementierung entscheidend. Es gibt ein erhebliches Optimierungspotenzial durch das Hinzufügen dynamischer Stop-Losses und die Verbesserung des Positionsmanagements. Für den Live-Handel werden gründliches Backtesting und eine Anpassung der Parameter basierend auf den tatsächlichen Marktbedingungen empfohlen.
/*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, "#.##") + "%")