Berdasarkan strategi silang bagi purata bergerak pantas dan perlahan


Tarikh penciptaan: 2023-11-22 16:38:26 Akhirnya diubah suai: 2023-11-22 16:38:26
Salin: 0 Bilangan klik: 622
1
fokus pada
1617
Pengikut

Berdasarkan strategi silang bagi purata bergerak pantas dan perlahan

Gambaran keseluruhan

Strategi perpindahan rata-rata adalah strategi perdagangan kuantitatif yang mudah dan berkesan berdasarkan purata bergerak. Strategi ini menggunakan persilangan rata-rata bergerak cepat dan rata-rata bergerak perlahan sebagai isyarat membeli dan menjual. Isyarat membeli dihasilkan apabila garis cepat menembusi garis perlahan dari arah bawah; isyarat jual dihasilkan apabila garis cepat jatuh dari arah atas dan menembusi garis perlahan.

Prinsip Strategi

Logik utama strategi ini adalah menggunakan purata bergerak untuk menilai trend pasaran. Purata bergerak sendiri mempunyai fungsi untuk menggerakkan bunyi pasaran secara rawak. Purata bergerak pantas bertindak balas lebih cepat terhadap perubahan harga, mencerminkan trend terkini; dan purata bergerak perlahan bertindak balas lebih lambat terhadap perubahan harga terkini, mewakili trend jangka menengah dan panjang.

Khususnya, strategi ini mula-mula menentukan purata bergerak cepat sig1 dan purata bergerak perlahan sig2 . Kemudian berdasarkan hubungan silang antara sig1 dan sig2 untuk menilai titik jual beli. Apabila sig1 dari bawah menembusi sig2 menghasilkan sinyal beli longCondition; apabila sig1 dari atas menembusi sig2 menghasilkan sinyal jual shortCondition. Strategi ini kemudiannya membuat pesanan apabila memenuhi syarat membeli dan menjual, dan menetapkan pesanan berhenti dan berhenti keluar.

Analisis kelebihan

Kelebihan strategi ini adalah ketara:

  1. Logiknya mudah, mudah difahami dan dilaksanakan
  2. Fleksibiliti dalam penyesuaian parameter, boleh disesuaikan dengan keadaan pasaran yang berbeza
  3. Boleh digabungkan dengan isyarat penapis indikator lain untuk meningkatkan kestabilan
  4. Prestasi yang baik, contohnya, EMA15-EMA30 gabungan menang sebanyak 83% pada data EURCHF

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Kesan whipsaw teruk, penyetempatan stop loss penting
  2. Perkembangan yang tidak baik dalam pasaran saham
  3. Ujian berulang diperlukan untuk menyesuaikan diri dengan pelbagai jenis dan kitaran

Langkah-langkah pengoptimuman:

  1. Menambah penilaian lain, mengelakkan whipsaw
  2. Menyesuaikan jenis dan parameter purata bergerak untuk pelbagai jenis
  3. Optimumkan nisbah stop loss dan kawalan risiko

ringkaskan

Strategi silang rata-rata bergerak secara keseluruhan adalah strategi kuantitatif yang mudah dan praktikal. Dengan penyesuaian parameter dan pengoptimuman yang sesuai, ia dapat menstabilkan keuntungan dalam pelbagai keadaan pasaran. Ia patut dikaji dan digunakan oleh pedagang kuantitatif.

Kod 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")