Strategi Crossover Rata-rata Bergerak Ganda Reversal

Penulis:ChaoZhang, Tanggal: 2023-12-28 12:00:27
Tag:

img

Gambaran umum: Strategi ini didasarkan pada strategi perdagangan klasik crossover rata-rata bergerak. Ini menggunakan rata-rata bergerak ganda, termasuk Rata-rata Gerak Sederhana (SMA), Rata-rata Gerak Eksponensial (EMA), Rata-rata Gerak Berimbang Variabel (VWMA) dan Rata-rata Gerak Hull (HMA).

Prinsip: Logika inti dari strategi ini adalah crossover rata-rata bergerak ganda. Dengan menghitung dua rata-rata bergerak dengan parameter yang berbeda, sinyal beli dihasilkan ketika rata-rata bergerak cepat melintasi yang lambat, dan sinyal jual dihasilkan ketika rata-rata bergerak cepat melintasi yang lambat.

Analisis Keuntungan: Keuntungan utama dari strategi crossover rata-rata bergerak ganda adalah kesederhanaan dan kemudahan operasi. Dengan hanya satu sinyal, penilaian tren paling dasar dapat diperoleh tanpa terlalu banyak pemilihan dan penyesuaian parameter, yang sangat cocok untuk pedagang pemula. Selain itu, berbagai jenis rata-rata bergerak diuji untuk mengoptimalkan kombinasi yang berbeda.

Analisis Risiko: Risiko utama dari strategi ini adalah bahwa strategi crossover rata-rata bergerak umum akan memiliki banyak sinyal palsu, yang mengakibatkan beberapa keuntungan kecil dan posisi datar, yang mempengaruhi pengembalian keseluruhan.

Arah Optimasi: 1) Uji periode yang berbeda untuk menentukan kombinasi optimal dari persilangan rata-rata bergerak; 2) Pertimbangkan untuk memperkenalkan seperangkat kedua parameter rata-rata bergerak dan indikator RSI untuk membantu penilaian untuk mengurangi sinyal palsu; 3) Memperkenalkan penilaian kondisi berdasarkan perubahan tambahan dari indikator MA alih-alih persilangan sederhana untuk mendapatkan penilaian persilangan yang lebih andal.

Ringkasan: Strategi ini mengadopsi kerangka strategi crossover rata-rata bergerak tradisional untuk menguji rata-rata bergerak ganda untuk menemukan kombinasi optimal periode rata-rata bergerak. Pada saat yang sama, menambahkan penilaian stop-loss berdasarkan ROC dan harga rata-rata bergerak. Secara keseluruhan, ini adalah strategi rata-rata bergerak ganda yang sederhana dan mudah digunakan yang sesuai dengan logika perdagangan kuantitatif. Selain itu, ide-ide pengoptimalan yang kaya juga memberikan ruang untuk pengembangan lebih lanjut dari strategi ini.


/*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")



Lebih banyak