Cette stratégie est un système de négociation en grille qui ajoute des positions basées sur des baisses de prix et ferme des positions lorsque l'on atteint une cible de profit fixe. La logique de base est d'acheter lorsque le marché tombe à un pourcentage prédéfini, de fermer toutes les positions lorsque le prix rebondit au profit cible et de générer des rendements en exécutant ce processus à plusieurs reprises. Cette stratégie est particulièrement adaptée pour capturer les rebonds à court terme sur les marchés oscillants.
La stratégie utilise un mécanisme combiné de négociation de réseaux et de prise de profit directionnelle:
Il s'agit d'une stratégie de trading de grille structurellement simple mais pratique qui construit des positions en lots à des baisses de prix prédéfinies et ferme uniformément les positions en atteignant les objectifs de profit. Les principaux avantages de la stratégie résident dans sa certitude d'exécution et sa diversification des risques, mais la sélection de l'environnement du marché et l'optimisation des paramètres sont cruciales lors de la mise en œuvre.
/*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, "#.##") + "%")