Strategi Pembalikan Crossover Rata-rata Pergerakan Ganda


Tanggal Pembuatan: 2023-12-28 12:00:27 Akhirnya memodifikasi: 2023-12-28 12:00:27
menyalin: 0 Jumlah klik: 543
1
fokus pada
1623
Pengikut

Strategi Pembalikan Crossover Rata-rata Pergerakan Ganda

Ringkasan: Strategi ini adalah strategi perdagangan klasik yang didasarkan pada persilangan rata-rata, dengan indikator yang dipilih dengan garis rata-rata ganda, termasuk rata-rata bergerak sederhana (SMA), rata-rata bergerak indeks (EMA), rata-rata bergerak linear (VWMA) dan rata-rata bergerak berimbang (HMA).

Prinsip: Logika inti dari strategi ini adalah dua persilangan rata-rata. Dengan menghitung rata-rata dua parameter yang berbeda, sinyal beli dihasilkan ketika rata-rata cepat melewati rata-rata lambat; sinyal jual dihasilkan ketika rata-rata cepat melewati rata-rata lambat.

Analisis Keuntungan: Keuntungan dari strategi crossover dua rata-rata adalah operasi yang mudah, penilaian tren yang paling dasar dapat diperoleh melalui satu sinyal, tidak perlu terlalu banyak pilihan dan penyesuaian parameter, sangat cocok untuk pedagang pemula. Dan berbagai jenis rata-rata memiliki tes, Anda dapat memilih kombinasi yang berbeda untuk dioptimalkan.

Analisis risiko: Risiko utama dari strategi ini adalah bahwa strategi persilangan rata-rata yang umum akan memiliki banyak sinyal palsu, yang menyebabkan masalah keuntungan kecil dari beberapa posisi yang kosong, yang mempengaruhi keuntungan keseluruhan. Selain itu, pengaturan panjang rata-rata rata-rata tetap cepat dan lambat juga akan gagal dalam beberapa siklus.

Arah optimasi: 1) Mencoba berbagai uji siklus untuk menentukan kombinasi siklus rata-rata yang optimal. 2) Mempertimbangkan parameter untuk memasukkan set kedua rata-rata dan penilaian tambahan dari indikator RSI untuk mengurangi sinyal palsu. 3) Memperkenalkan penilaian kondisional berdasarkan perubahan inkremental indikator MA dan bukan sekat sederhana, untuk mendapatkan penilaian sekat yang lebih andal.

Singkatnya: Strategi ini menggunakan kerangka strategi crossover linear tradisional, melakukan pengujian biner untuk menemukan kombinasi siklus linear terbaik, sambil menambahkan penilaian stop loss berdasarkan ROC dan harga linear. Secara keseluruhan, strategi biner yang mudah digunakan dan sesuai dengan logika perdagangan kuantitatif. Selain itu, banyak ide optimasi juga memberikan ruang untuk pengembangan strategi ini.

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

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(5, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)

//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition) // and time>timestamp(2018,6,1,9,30)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition) // and time>timestamp(2018,6,1,9,30)
    strategy.entry("Short", strategy.short)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
    strategy.close("Short")

longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
    strategy.close("Long")