Strategi perdagangan pembalikan rata-rata bergerak ganda

Penulis:ChaoZhang, Tanggal: 2023-11-10 11:18:38
Tag:

img

Gambaran umum

Strategi ini dirancang berdasarkan salib emas dan salib mati rata-rata bergerak cepat dan lambat. Ketika MA cepat melintasi di atas MA lambat, pergi panjang. Ketika MA cepat melintasi di bawah MA lambat, pergi pendek. Strategi ini cocok untuk perdagangan jangka menengah hingga panjang dan dapat menangkap pembalikan tren di pasar.

Logika Strategi

Strategi ini menggunakan rata-rata bergerak eksponensial (EMA) untuk menghitung garis cepat dan lambat. panjang MA cepat adalah 10 periode dan panjang MA lambat adalah 30 periode. strategi pertama menghitung EMA cepat dan EMA lambat, kemudian memetakan garis dan menunjukkan latar belakang berwarna yang berbeda untuk menunjukkan arah tren.

Ketika penutupan hari ini berada di atas MA cepat dan MA cepat berada di atas MA lambat, latar belakang berwarna hijau, menunjukkan tren kenaikan.

Dalam tren naik, jika ada lilin merah (tutup di bawah terbuka) dan kemarin juga lilin merah, pergi panjang. Setel stop loss di 300 poin dan ambil keuntungan dengan menutup posisi pendek.

Dalam tren penurunan, jika ada lilin hijau (tutup di atas terbuka) dan kemarin juga lilin hijau, pergi pendek. Setel stop loss di 300 poin dan ambil keuntungan dengan menutup posisi panjang.

Setelah membuka posisi di setiap arah, jika waktu ditahan melebihi 1008000000 milidetik (sekitar 2 minggu), paksa tutup posisi untuk mencegah kebuntuan.

Analisis Keuntungan

  • Sistem EMA ganda dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi titik pembalikan tren
  • MAs cepat dan lambat dikombinasikan dengan warna candlestick memberikan sinyal masuk yang andal
  • Strategi stop loss dan take profit mengurangi kerugian untuk perdagangan individu
  • Mekanisme penutupan posisi paksa menghindari kerugian besar dari kebuntuan

Analisis Risiko

  • Sistem EMA kurang sensitif terhadap lonjakan harga, mungkin kehilangan beberapa peluang perdagangan
  • Pengaturan parameter MA cepat dan lambat yang tidak benar dapat menyebabkan sinyal palsu
  • Stop loss point yang terlalu ketat meningkatkan risiko likuidasi.
  • Pengaturan waktu penutupan paksa yang tidak benar dapat menyebabkan keluar prematur atau menahan terlalu lama

Arahan Optimasi

  • Uji profitabilitas sistem EMA di bawah parameter yang berbeda untuk mengoptimalkan panjang MA cepat dan lambat
  • Pertimbangkan untuk menambahkan indikator lain seperti MACD untuk konfirmasi untuk meningkatkan akurasi sinyal
  • Hubungkan stop loss dengan perubahan volume harian
  • Mengatur secara dinamis waktu penutupan paksa berdasarkan volatilitas pasar

Kesimpulan

Secara keseluruhan strategi ini cukup seimbang, menggunakan EMA ganda untuk tren dan filter candlestick dengan aturan tambahan untuk menghindari sinyal palsu.


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
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/
// © yeainshukla

//@version=5


strategy('BuyRedSellGreen4H', overlay = true)
greenCandle = close > open
redCandle = open > close

start  = timestamp(2023,9,18,0,00)
end = timestamp(2023,12,31,0,00)


fastLength = input.int(10, title="Fast Average Length")
slowLength = input.int(30, title="Slow Average Length")

averageData = input.source(close, title="Average Data Source")

// Calculate exponential moving averages
fastAverage = ta.ema(averageData, fastLength)
slowAverage = ta.ema(averageData, slowLength)

// Plot averages
plot(fastAverage, color=color.navy, title="Fast EMA")
plot(slowAverage, color=color.fuchsia, linewidth=2, title="Slow EMA")

// Show the moving average trend with a coloured background
backgroundColor = if close > fastAverage and fastAverage > slowAverage
    color.new(color.green, 85)
else if close < fastAverage and fastAverage < slowAverage
    color.new(color.red, 85)
else
    color.new(color.orange, 90)

bgcolor(backgroundColor, title="EMA Background")


if time >= start and time < end
    if(close < open) 
        if(close[1] < open[1])
            strategy.entry("Enter Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Enter Long")
            strategy.close("Enter Short")

    else
        if(close[1] > open[1])
            strategy.entry("Enter Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Enter Short")
            strategy.close("Enter Long")
    if strategy.position_size < 0 or strategy.position_size > 0// short and long is opened.
        if((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) > 1008000000)
            strategy.close("Enter Short")
            strategy.close("Enter Long")

Lebih banyak