Dies ist eine Futures-Handelsstrategie, die den Martingale-Mechanismus nutzt, um hohe Renditen zu erzielen.
Die Kernlogik dieser Strategie ist: Wenn der Preis die Stop-Loss-Linie auslöst, werden Positionen mit größeren Größen wieder geöffnet, während die Stop-Loss-Linie um einen bestimmten Prozentsatz gesenkt wird.
Im Einzelnen geht es zuerst zum aktuellen Preis mit der festgelegten Positionsgröße ein und nimmt Gewinn/Verlustniveaus ein. Wenn der Preis zur Stop-Loss-Linie bewegt, werden größere Positionen wieder geöffnet und die Stop-Loss-Linie wird um einen festgelegten Prozentsatz gesenkt. Solche Wiedereröffnungs- und Stop-Loss-Senkungsoperationen senken den durchschnittlichen Eröffnungspreis und erhöhen das Gewinnpotenzial. Nachdem die Anzahl der hinzugefügten Aufträge maximal erreicht ist, wartet es auf die Preisumkehr, um den Gewinn zu erzielen.
Der größte Vorteil ist die Fähigkeit, die Kostenbasis durch Hebel-Wiedereröffnung zu senken und gleichzeitig die Chance auf eine günstige Umkehrung zu haben, wenn die Trends negativ sind.
Es funktioniert auch gut für Rohstoffe und andere Märkte mit hoher Volatilität und verstärkt Gewinne/Verluste durch Hebelwirkung.
Das Hauptrisiko besteht darin, dass der Kurs nach der Wiedereröffnung den Abwärtstrend fortsetzen und sogar die vorherigen Stop-Loss-Levels brechen kann, was zu starken Verlusten führt.
Ein weiteres Risiko besteht darin, dass das Kapital nicht ausreicht, um die maximale Auftragsmenge vor der Umkehrung zu unterstützen.
Einige Möglichkeiten zur weiteren Optimierung der Strategie:
Dynamische Anpassung der Hebelwirkung, niedriger bei Gewinn und höher bei Verlust
Einbeziehung von Trendindikatoren zur Verlustsperre, wenn der Trend unklar ist
Einrichtung einer Stop-Loss-Breite basierend auf der Marktvolatilität, bei Volatilität breiter
Hinzufügen von automatischen Stopp-Verlustmodulen zur Begrenzung extremer Verluste
Dies ist eine typische gehebelte Martingale-Handelsstrategie. Durch die Senkung der Kosten durch zusätzliche Aufträge wird eine höhere Rendite erzielt, aber auch Risiken eingebracht.
/*backtest start: 2023-01-19 00:00:00 end: 2024-01-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Leveraged Martingale Strategy with Fees", overlay=true) // User-defined input parameters var float takeProfitPct = input(2.0, title="Take Profit Percentage") / 100.0 var float positionMultiplier = input(2.0, title="Position Size Multiplier") var int maxOrders = input(10, title="Maximum Number of Reinforced Orders") var float tradeSizeUSD = input(10000.0, title="Trade Size in USD") var float dropPctForNextTrade = input(1.0, title="Drop Percentage for Next Trade") / 100.0 var float leverage = input(5.0, title="Leverage Factor") var bool enterAtCurrentPrice = input(true, title="Enter First Trade at Current Price") var float takerFeePct = input(0.1, title="Taker Order Fee Percentage") / 100.0 // State variables var float last_entry_price = na var float avg_entry_price = na var float total_position_size = 0.0 var int num_trades = 0 // Entry logic if (num_trades == 0) if (enterAtCurrentPrice or close < last_entry_price * (1 - dropPctForNextTrade)) float size = tradeSizeUSD / close * leverage strategy.entry("Long", strategy.long, qty=size) avg_entry_price := close total_position_size := size last_entry_price := close num_trades := 1 else if (close < last_entry_price * (1 - dropPctForNextTrade) and num_trades < maxOrders) float size = tradeSizeUSD / close * leverage * pow(positionMultiplier, num_trades) strategy.entry("Double Long" + tostring(num_trades), strategy.long, qty=size) avg_entry_price := ((avg_entry_price * total_position_size) + (close * size)) / (total_position_size + size) total_position_size := total_position_size + size last_entry_price := close num_trades := num_trades + 1 // Take profit logic adjusted for leverage and fees var float take_profit_price = na var float fee_deduction = na if (num_trades > 0) take_profit_price := avg_entry_price * (1 + takeProfitPct / leverage) fee_deduction := total_position_size * close * takerFeePct if (close > take_profit_price + fee_deduction / total_position_size) strategy.close_all() num_trades := 0