Sumber daya yang dimuat... Pemuatan...

Strategi Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-05-17 15:48:04
Tag:EMASMA

img

Gambaran umum

Prinsip Strategi

Inti dari strategi ini adalah menggunakan karakteristik tren rata-rata bergerak dan sinyal crossover untuk menentukan arah tren dan waktu masuk. Pertama, atur periode rata-rata bergerak cepat (default 50) dan rata-rata bergerak lambat (default 200) melalui parameter, dan pilih untuk menggunakan SMA atau EMA. Kemudian hitung dua rata-rata bergerak dan tentukan situasi crossover mereka:

  1. Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat (salib emas), buka posisi panjang jika tidak ada posisi saat ini, dan atur harga stop-loss (dihitung berdasarkan persentase stop-loss).
  2. Jika ada posisi long yang sudah ada, tutup posisi ketika terjadi death cross.

Keuntungan Strategi

  1. Logikanya sederhana dan jelas, mudah dimengerti dan diterapkan, dan merupakan dasar dari strategi mengikuti tren.
  2. Ini mendukung SMA dan EMA, yang dapat dipilih secara fleksibel.
  3. Cocok untuk menangkap tren jangka menengah hingga panjang, gaya mengikuti tren.

Risiko Strategi

  1. Pasar yang berfluktuasi cepat dapat menyebabkan perdagangan yang sering dan kinerja yang buruk.
  2. Stop loss persentase tetap mungkin tidak mengendalikan risiko dengan baik.

Arah Optimasi Strategi

  1. Pertimbangkan untuk memperkenalkan indikator terkait volatilitas seperti ATR untuk menyesuaikan posisi stop loss secara dinamis.

Ringkasan


/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)

//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length") 
maSlowLength  = input(200, title="Quick MA Length") 
useSma        = input(true, title="Use SMA? If false, EMA is used.")

maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow  = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)

stop_loss_percentage = input(2.0, title="Stop Loss (%)")

var float longStopLevel = na
var float shortStopLevel = na

bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross  = ta.crossunder(maQuick, maSlow)

//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------

if(strategy.position_size == 0)
    // Golden cross, enter a long position
    if(isGoldenCross)
        strategy.entry("Buy", strategy.long)
        longStopLevel := close - close * stop_loss_percentage/100.0
        strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
    // Death cross, enter short position
    else if(isDeathCross)
        strategy.entry("Sell", strategy.short)
        shortStopLevel := close + close * stop_loss_percentage/100.0
        strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)

//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
    // Close long position on death cross
    if(strategy.position_size > 0 and isDeathCross)
        strategy.close("Buy")
    
    // Close short position on golden cross
    else if(strategy.position_size < 0 and isGoldenCross)
        strategy.close("Sell")

//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)

Berkaitan

Lebih banyak