Ini adalah strategi perdagangan niaga hadapan yang memanfaatkan mekanisme martingale untuk mencapai pulangan yang tinggi. Ia secara dinamik menyesuaikan saiz kedudukan untuk meningkatkan kedudukan apabila kehilangan untuk memenuhi sasaran keuntungan.
Logik utama strategi ini ialah: apabila harga mencetuskan garis stop loss, buka semula kedudukan dengan saiz yang lebih besar sambil menurunkan garis stop loss dengan peratusan tertentu. Dengan meningkatkan saiz kedudukan, ia bertujuan untuk menurunkan harga masuk purata. Apabila bilangan kedudukan mencapai pesanan maksimum yang ditetapkan, ia menunggu pembalikan harga untuk mengambil keuntungan.
Secara khusus, ia mula-mula memasuki pada harga semasa dengan saiz kedudukan yang ditetapkan dan mengambil tahap keuntungan / kerugian. Apabila harga bergerak ke garisan stop loss, kedudukan yang lebih besar akan dibuka semula dan garisan stop loss diturunkan dengan peratusan yang ditetapkan. Operasi pembukaan semula dan penurunan stop loss seperti itu akan menurunkan harga pembukaan purata, meningkatkan potensi keuntungan. Selepas jumlah pesanan tambahan mencapai maksimum, ia menunggu pembalikan harga untuk mencapai keuntungan.
Kelebihan terbesarnya adalah keupayaan untuk menurunkan asas kos melalui pembukaan semula leveraged, sementara masih mempunyai peluang pembalikan yang menguntungkan apabila trend negatif.
Ia juga berfungsi dengan baik untuk komoditi dan pasaran turun naik yang tinggi, memperkuat keuntungan / kerugian melalui leverage.
Risiko utama ialah harga mungkin terus trend menurun selepas dibuka semula, bahkan memecahkan tahap stop loss sebelumnya, yang membawa kepada kerugian besar.
Risiko lain adalah modal yang tidak mencukupi untuk menyokong kuantiti pesanan maksimum sebelum pembalikan.
Beberapa cara untuk mengoptimumkan lagi strategi:
Sesuaikan tahap leverage secara dinamik, lebih rendah apabila mendapat keuntungan dan lebih tinggi apabila kehilangan
Memasukkan penunjuk trend untuk menghentikan kerugian apabila trend tidak jelas
Tetapkan lebar stop loss berdasarkan turun naik pasaran, lebih luas apabila turun naik
Tambah modul kehilangan berhenti automatik untuk mengehadkan kerugian melampau
Ini adalah strategi perdagangan martingale leveraged yang tipikal. Dengan menurunkan kos melalui pesanan tambahan, ia mengejar pulangan yang lebih tinggi tetapi juga memperkenalkan risiko. Masih ada ruang untuk pengoptimuman melalui penyesuaian parameter dan pengembangan ciri untuk memenuhi keadaan pasaran 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