Handelsstrategie mit Leveraged Martingale-Futures

Schriftsteller:ChaoZhang, Datum: 2024-01-26 11:12:23
Tags:

img

Übersicht

Dies ist eine Futures-Handelsstrategie, die den Martingale-Mechanismus nutzt, um hohe Renditen zu erzielen.

Grundsätze

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.

Analyse der Vorteile

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.

Risikoanalyse

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.

Verbesserungsbereiche

Einige Möglichkeiten zur weiteren Optimierung der Strategie:

  1. Dynamische Anpassung der Hebelwirkung, niedriger bei Gewinn und höher bei Verlust

  2. Einbeziehung von Trendindikatoren zur Verlustsperre, wenn der Trend unklar ist

  3. Einrichtung einer Stop-Loss-Breite basierend auf der Marktvolatilität, bei Volatilität breiter

  4. Hinzufügen von automatischen Stopp-Verlustmodulen zur Begrenzung extremer Verluste

Zusammenfassung

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


Mehr