Berdasarkan strategi persilangan rata-rata pergerakan cepat dan lambat


Tanggal Pembuatan: 2023-11-22 16:38:26 Akhirnya memodifikasi: 2023-11-22 16:38:26
menyalin: 0 Jumlah klik: 622
1
fokus pada
1617
Pengikut

Berdasarkan strategi persilangan rata-rata pergerakan cepat dan lambat

Ringkasan

Strategi moving average crossover adalah strategi perdagangan kuantitatif sederhana dan efektif yang didasarkan pada moving average. Strategi ini menggunakan persilangan rata-rata bergerak cepat dan rata-rata bergerak lambat sebagai sinyal beli dan jual. Ini menghasilkan sinyal beli ketika garis cepat menerobos garis lambat dari bawah; ini menghasilkan sinyal jual ketika garis cepat dari atas ke bawah.

Prinsip Strategi

Logika inti dari strategi ini adalah menggunakan moving averages untuk menilai tren pasar. Moving averages sendiri memiliki fungsi untuk menggerakkan kebisingan pasar acak. Fast moving averages lebih cepat merespon perubahan harga, mencerminkan tren terbaru; sedangkan slow moving averages lebih lambat merespon perubahan harga terbaru, mewakili tren jangka menengah dan panjang.

Secara khusus, strategi ini pertama-tama mendefinisikan fast moving average sig1 dan slow moving average sig2. Kemudian berdasarkan hubungan silang antara sig1 dan sig2, menentukan titik jual beli. Ketika sig1 menerobos sig2 dari bawah, ia menghasilkan sinyal longCondition untuk membeli; ketika sig1 menerobos sig2 dari atas, ia menghasilkan sinyal shortCondition untuk menjual. Strategi ini kemudian membuat pesanan saat memenuhi kondisi buy dan sell, dan mengatur stop loss dan stop loss untuk keluar dari pesanan.

Analisis Keunggulan

Keuntungan dari strategi ini jelas:

  1. Logika sederhana, mudah dipahami dan diterapkan
  2. Parameter yang dapat disesuaikan dengan kondisi pasar yang berbeda
  3. Dapat dikombinasikan dengan sinyal filter indikator lainnya untuk meningkatkan stabilitas
  4. Berkinerja baik, misalnya, kombinasi EMA15-EMA30 menang hingga 83% pada data garis waktu EURCHF

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Efek whipsaw sangat parah, pengaturan stop loss sangat penting
  2. Peristiwa ini terjadi pada tahun 2011 dan terjadi pada tahun 2012.
  3. Perlu pengujian ulang untuk menyesuaikan dengan varietas dan siklus yang berbeda

Langkah-langkah optimasi:

  1. Menambahkan penilaian indikator lainnya, menghindari whipsaw
  2. Menyesuaikan jenis dan parameter moving average dengan varietas yang berbeda
  3. Mengoptimalkan Stop Loss Stop Loss Ratio, Mengontrol Risiko

Meringkaskan

Moving average crossover strategi secara keseluruhan adalah strategi kuantitatif yang sederhana dan praktis. Dengan parameter yang disesuaikan dan dioptimalkan dengan tepat, dapat menghasilkan keuntungan yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-16 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Simple yet effective MA cross strategy.
// You'll have to tune the parameters to get an optimal win ratio.
// If JPY or XAU or any other currency with pips defined as the 
// second decimal digit are involved, do not forget to set the respective flag on.
//
// Created by vitelot/yanez/Vts, who's the same fellow with different user names
// December 2018 -- Merry Xmas
//
strategy("MA cross strategy Vts", overlay=true, initial_capital=1000, currency="EUR", pyramiding=0)

yr  = input(2016, title="Starting year to analyse")
src = input(close, title="Source")
maType = input( defval="EMA", title="MA Type", options=["SMA","EMA","HMA","McG","WMA"])
//
isJPY = input(false, title="Is JPY or XAU involved?") // JPY and Gold have the pips defined as the 2 decimal digit

maPar1 = input(26, minval=1, title="MA fast period")
maPar2 = input(51, minval=2, title="MA slow period")

atrPar = input(14,minval=1, title="ATR period")
atrMulSL = input(1.5, title="SL ATR multiplicator")
atrMulTP = input(1.0, title="TP ATR multiplicator")

hma(sig, n) => // Hull moving average definition
    wma( 2*wma(sig,round(n/2))-wma(sig,n), round(sqrt(n)))

mcg(sig,length) => // Mc Ginley MA definition
    mg = 0.0
    mg := na(mg[1]) ? ema(sig, length) : mg[1] + (sig - mg[1]) / (length * pow(sig/mg[1], 4))

ma(t,sig,len) =>
    if t =="SMA"
        sma(sig,len)
    else
        if t == "EMA"
            ema(sig,len)
        else
            if t == "HMA"
                hma(sig,len)
            else
                if t == "McG" // Mc Ginley
                    mcg(sig,len)
                else
                    wma(sig,len)
                    
        
sig1 = ma(maType, src, maPar1)
sig2 = ma(maType, src, maPar2)

tickFactor = isJPY? 1e3: 1e5
sl = atrMulSL*atr(atrPar)*tickFactor
tp = atrMulTP*atr(atrPar)*tickFactor

plot(sig1, color=aqua, title="MA1", linewidth=2)
plot(sig2, color=orange, title="MA2", linewidth=2)

longCondition = crossunder(sig2, sig1) and year>=yr // change the >= to == if you like exact years not a range
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1) // exit trade when SL and TP are hit
    strategy.exit("Exit Long", "Long", loss=sl, profit=tp)
if (crossunder(sig1, sig2)) // or when the short condition is met
    strategy.close("Long")

shortCondition = crossover(sig2,sig1) and year>=yr // change the >= to == if you like exact years not a range
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", loss=sl, profit=tp)
if (crossover(sig1,sig2))
    strategy.close("Short")