Strategi perdagangan berjangka Martingale leveraged

Penulis:ChaoZhang, Tanggal: 2024-01-26 11:12:23
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan berjangka yang memanfaatkan mekanisme martingale untuk mencapai pengembalian yang tinggi.

Prinsip-prinsip

Logika inti dari strategi ini adalah: ketika harga memicu garis stop loss, buka kembali posisi dengan ukuran yang lebih besar sambil menurunkan garis stop loss sebesar persentase tertentu. Dengan meningkatkan ukuran posisi, itu bertujuan untuk menurunkan harga masuk rata-rata. Ketika jumlah posisi mencapai pesanan maksimum yang ditetapkan, itu menunggu pembalikan harga untuk mengambil keuntungan.

Secara khusus, pertama masuk pada harga saat ini dengan ukuran posisi yang ditetapkan dan mengambil tingkat keuntungan / kerugian. Ketika harga bergerak ke garis stop loss, posisi yang lebih besar akan dibuka kembali dan garis stop loss diturunkan dengan persentase yang ditetapkan. Operasi pembukaan kembali dan penurunan stop loss tersebut akan menurunkan harga pembukaan rata-rata, meningkatkan potensi keuntungan. Setelah jumlah pesanan tambahan mencapai maksimum, ia menunggu pembalikan harga untuk mencapai keuntungan.

Analisis Keuntungan

Keuntungan terbesarnya adalah kemampuan untuk menurunkan basis biaya melalui pembukaan kembali leveraged, sementara masih memiliki kesempatan untuk pembalikan yang menguntungkan ketika tren negatif.

Ini juga bekerja dengan baik untuk komoditas dan pasar volatilitas tinggi lainnya, memperkuat keuntungan / kerugian melalui leverage.

Analisis Risiko

Risiko utama adalah harga dapat melanjutkan tren penurunan setelah pembukaan kembali, bahkan melanggar tingkat stop loss sebelumnya, yang mengarah pada kerugian besar.

Risiko lain adalah modal yang tidak cukup untuk mendukung jumlah pesanan maksimum sebelum pembalikan.

Bidang Peningkatan

Beberapa cara untuk lebih mengoptimalkan strategi:

  1. Tingkat leverage disesuaikan secara dinamis, lebih rendah saat menghasilkan keuntungan dan lebih tinggi saat kehilangan

  2. Menggabungkan indikator tren untuk menghentikan kerugian ketika tren tidak jelas

  3. Setel lebar stop loss berdasarkan volatilitas pasar, lebih luas bila volatilitas

  4. Tambahkan modul kehilangan auto stop untuk membatasi kerugian ekstrem

Ringkasan

Ini adalah strategi perdagangan martingale leveraged yang khas. Dengan menurunkan biaya melalui pesanan tambahan, ini mengejar pengembalian yang lebih tinggi tetapi juga memperkenalkan risiko. Masih ada ruang untuk optimasi melalui penyesuaian parameter dan perluasan fitur untuk memenuhi kondisi pasar yang lebih banyak.


/*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


Lebih banyak