
Cette stratégie est une stratégie de trading en grille qui augmente les positions en fonction de l’ampleur de la baisse des prix et ferme les positions lorsqu’un objectif de profit fixe est atteint. La logique principale de la stratégie est d’acheter lorsque le marché tombe dans une fourchette prédéfinie, et de fermer la position globale lorsque le prix rebondit pour atteindre le profit cible, et de réaliser des bénéfices en répétant constamment ce processus. Cette stratégie est particulièrement adaptée pour saisir les opportunités de rebond à court terme sur des marchés volatils.
La stratégie utilise un mécanisme composite de trading en grille et de prise de bénéfices directionnelle :
Il s’agit d’une stratégie de trading en grille simple mais pratique, qui crée des positions par lots en fonction de la plage de baisse prédéfinie et ferme toutes les positions lorsque le profit cible est atteint. L’avantage principal de la stratégie réside dans la certitude de son exécution et la diversification des risques, mais lors de son utilisation, il convient de prêter attention à la sélection de l’environnement de marché et à l’optimisation des paramètres. Il reste encore beaucoup de place pour optimiser la stratégie en ajoutant des stop loss dynamiques, en améliorant la gestion des positions, etc. Lors de son utilisation dans le cadre d’un trading réel, il est recommandé d’effectuer au préalable des backtests suffisants et d’ajuster les paramètres en fonction des conditions réelles du marché.
/*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, "#.##") + "%")