Strategi ini dinamakan
Strategi ini mula-mula menggunakan penunjuk stok untuk menggambar pengayun tersuai dengan pengayun parameterPeriod ditetapkan kepada 5, dan menetapkan ambang atas dan bawah k1 dan k2 untuk membina kawasan penyatuan. Apabila nilai penunjuk stok masuk ke kawasan penyatuan, ia menunjukkan bahawa mungkin terdapat peluang pembalikan.
Kemudian penunjuk RSI dimasukkan untuk mengenal pasti fenomena overbought dan oversold. Penunjuk RSI dapat mengenal pasti tepat masa penembusan pasaran had atas dan bawah. Strategi ini menetapkan garis overbought RSI pada 70 dan garis oversold pada 30.
Di samping itu, strategi ini juga memperkenalkan trendActivity faktor sebagai penapis trend utama. Apabila penunjuk stochastic dan RSI memenuhi keadaan pembalikan pada masa yang sama, ia juga memeriksa sama ada trend utama masih cukup aktif untuk mengelakkan kerugian akibat pecah palsu di pasaran kejutan.
Akhirnya, strategi ini menggunakan prinsip purata kedudukan Martingale klasik untuk mengawal risiko keseluruhan. Dengan menyesuaikan jumlah dagangan secara dinamik, kedudukan tambahan diletakkan apabila kedudukan awal mengalami kerugian untuk mencapai titik impas dan dengan itu mengawal pengeluaran maksimum.
Penggabungan penunjuk RSI dapat dengan berkesan mengenal pasti fenomena overbought dan oversold untuk membantu menilai masa pembalikan.
Menetapkan pengayun untuk menentukan kawasan penyatuan boleh menapis beberapa isyarat pecah palsu.
Menetapkan penapis trend utama mengelakkan kerugian di pasaran yang tidak menentu.
Purata kedudukan Martingale secara berkesan mengawal pengambilan maksimum strategi dan adalah kunci untuk keuntungan yang mampan.
Dalam keadaan pasaran yang tidak normal, penunjuk RSI mungkin gagal dan menyebabkan penilaian yang salah mengenai keadaan overbought dan oversold.
Tetapan parameter osilator yang tidak betul juga boleh menyebabkan penapisan isyarat yang berlebihan atau pengenalan pecah palsu. Ini memerlukan pengoptimuman parameter berdasarkan data pasaran sejarah.
Rata-rata kedudukan Martingale akan membawa kepada kerugian cascading di bawah persekitaran tertentu.
Strategi ini hanya telah disahkan pada data pasangan mata wang GBPUSD 15 minit. Mungkin terdapat risiko pemasangan data di pasaran lain dan tempoh lain.
Mengoptimumkan parameter RSI untuk mencari parameter yang lebih sesuai dengan persekitaran pasaran semasa.
Uji dan optimumkan parameter osilator supaya ia dapat menilai kawasan penyatuan dengan lebih tepat.
Tambah logik stop loss. Aktiv menghentikan kerugian apabila kerugian mencapai tahap tertentu untuk mengawal kerugian tunggal dengan berkesan.
Mengoptimumkan peraturan penetapan penapis trend utama untuk mengelakkan peluang pembalikan yang hilang.
Uji pelbagai tetapan saiz kedudukan tambahan. Perlu memastikan bahawa jumlah tambahan tidak terlalu besar untuk menyebabkan kehilangan cepat.
Strategi ini menggabungkan penunjuk purata bergerak berganda, penunjuk RSI dan osilator tersuai untuk menilai fenomena terobosan had atas dan bawah dalam jangka pendek, dan menggunakan penapis trend utama untuk mengelakkan pecah palsu untuk perdagangan scalping yang cekap. Pada masa yang sama, prinsip purata kedudukan Martingale klasik diperkenalkan untuk mengawal tahap risiko keseluruhan. Strategi ini berpotensi menghasilkan pulangan yang stabil selepas pengoptimuman parameter dan pengurusan risiko yang ketat.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © cloudofw //@version=5 strategy("F2.2 Martingale Scalping Strategy", overlay=true) // Input parameters rsiOverbought = input.int(70, "RSI Overbought Threshold") rsiOversold = input.int(30, "RSI Oversold Threshold") oscillatorPeriod = input.int(5, "Period for oscillator") k1 = input.float(0.2, "K1 for oscillator's zone") k2 = input.float(0.5, "K2 for oscillator's zone") trendActivity = input.float(1.0, "Main Trend filter", minval=0.1) decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01) // Calculate custom oscillator and RSI oscillator = ta.stoch(close, high, low, oscillatorPeriod) rsiValue = ta.rsi(close, 14) zoneHigh = 100 - k1 * 100 zoneLow = k2 * 100 // Entry conditions longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought // Martingale logic var lot_multiplier = 1.0 var last_lot_size = strategy.equity * 0.01 var trade_1_profit = 0.0 if (strategy.position_size != 0) lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0 trade_1_profit := strategy.grossprofit else lot_multiplier := 1.0 trade_1_profit := 0.0 lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit last_lot_size := lot_size // Trading logic if longCondition and strategy.position_size == 0 strategy.entry("Long", strategy.long) if shortCondition and strategy.position_size == 0 strategy.entry("Short", strategy.short) // Exit conditions if longCondition == false and strategy.position_size > 0 strategy.close("Long") if shortCondition == false and strategy.position_size < 0 strategy.close("Short") // Indicators on chart plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") plot(oscillator, color=color.blue, title="Oscillator") hline(zoneHigh, "Upper Zone", color=color.red) hline(zoneLow, "Lower Zone", color=color.green)
Zhang BaoleApakah sebab yang menyebabkan simulasi kod disalin secara langsung dan mendapati bahawa ketika sampai pada titik penambahan, operasi penambahan tidak dilakukan?