Ini adalah strategi perdagangan berjangka yang memanfaatkan mekanisme martingale untuk mencapai pengembalian yang tinggi.
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.
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.
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.
Beberapa cara untuk lebih mengoptimalkan strategi:
Tingkat leverage disesuaikan secara dinamis, lebih rendah saat menghasilkan keuntungan dan lebih tinggi saat kehilangan
Menggabungkan indikator tren untuk menghentikan kerugian ketika tren tidak jelas
Setel lebar stop loss berdasarkan volatilitas pasar, lebih luas bila volatilitas
Tambahkan modul kehilangan auto stop untuk membatasi kerugian ekstrem
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