RSI dan gabungan purata bergerak MT5 Strategi Scalping Martingale

Penulis:ChaoZhang, Tarikh: 2023-12-01 17:56:56
Tag:

img

Ringkasan

Strategi ini dinamakan RSI and Moving Average Combination MT5 Martingale Scalping Strategy. Ia menggabungkan penunjuk purata bergerak berganda dan penunjuk Indeks Kekuatan Relatif (RSI) untuk melaksanakan perdagangan scalping frekuensi tinggi, sambil menggabungkan prinsip purata kedudukan Martingale untuk mengawal tahap risiko keseluruhan strategi.

Logika Strategi

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Analisis Kelebihan

  1. Penggabungan penunjuk RSI dapat dengan berkesan mengenal pasti fenomena overbought dan oversold untuk membantu menilai masa pembalikan.

  2. Menetapkan pengayun untuk menentukan kawasan penyatuan boleh menapis beberapa isyarat pecah palsu.

  3. Menetapkan penapis trend utama mengelakkan kerugian di pasaran yang tidak menentu.

  4. Purata kedudukan Martingale secara berkesan mengawal pengambilan maksimum strategi dan adalah kunci untuk keuntungan yang mampan.

Analisis Risiko

  1. Dalam keadaan pasaran yang tidak normal, penunjuk RSI mungkin gagal dan menyebabkan penilaian yang salah mengenai keadaan overbought dan oversold.

  2. 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.

  3. Rata-rata kedudukan Martingale akan membawa kepada kerugian cascading di bawah persekitaran tertentu.

  4. Strategi ini hanya telah disahkan pada data pasangan mata wang GBPUSD 15 minit. Mungkin terdapat risiko pemasangan data di pasaran lain dan tempoh lain.

Arahan pengoptimuman

  1. Mengoptimumkan parameter RSI untuk mencari parameter yang lebih sesuai dengan persekitaran pasaran semasa.

  2. Uji dan optimumkan parameter osilator supaya ia dapat menilai kawasan penyatuan dengan lebih tepat.

  3. Tambah logik stop loss. Aktiv menghentikan kerugian apabila kerugian mencapai tahap tertentu untuk mengawal kerugian tunggal dengan berkesan.

  4. Mengoptimumkan peraturan penetapan penapis trend utama untuk mengelakkan peluang pembalikan yang hilang.

  5. Uji pelbagai tetapan saiz kedudukan tambahan. Perlu memastikan bahawa jumlah tambahan tidak terlalu besar untuk menyebabkan kehilangan cepat.

Ringkasan

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)


Lebih lanjut

Zhang BaoleApakah sebab yang menyebabkan simulasi kod disalin secara langsung dan mendapati bahawa ketika sampai pada titik penambahan, operasi penambahan tidak dilakukan?