Strategi Crossover Rata-rata Bergerak Larry Williams

Penulis:ChaoZhang, Tanggal: 2023-12-26 15:03:16
Tag:

img

Gambaran umum

Ini adalah strategi crossover rata-rata bergerak sederhana dan klasik yang diciptakan oleh pedagang terkenal Larry Williams. Strategi ini menggunakan rata-rata bergerak sederhana 9 hari sebagai garis cepat dan rata-rata bergerak eksponensial 21 hari sebagai garis lambat.

Logika Strategi

Strategi ini didasarkan pada golden crossover dan death crossover rata-rata bergerak untuk menentukan peluang panjang dan pendek. Ketika garis cepat melanggar di atas garis lambat dari bawah, itu adalah crossover emas, menunjukkan perubahan ke tren bullish. Breakout semacam itu digunakan untuk pergi panjang. Ketika garis cepat melanggar di bawah garis lambat dari atas, itu adalah crossover kematian, menunjukkan perubahan ke tren bearish. Breakout semacam itu digunakan untuk pergi pendek.

Untuk menghindari false breakout yang menyebabkan kerugian virtual, garis 21 hari juga digunakan untuk menentukan tren utama. Hanya ketika garis cepat pecah dan harga juga melanggar garis 21 hari, tindakan perdagangan akan diambil. Ini dapat secara efektif menyaring banyak false breakout.

Secara khusus, sinyal panjang dipicu ketika: garis cepat melanggar di atas level tertinggi kemarin dan melanggar di atas garis 21 hari. sinyal pendek dipicu ketika: garis cepat melanggar di bawah level rendah kemarin dan melanggar di bawah garis 21 hari.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Ide strategi sederhana dan mudah dipahami dan diimplementasikan.
  2. Teknik rata-rata bergerak sudah matang dan banyak digunakan.
  3. Pengenalan garis 21 hari secara efektif menyaring kebocoran palsu.
  4. Menggunakan titik ekstrim kemarin untuk masuk posisi dapat mencegah terjebak.
  5. Parameter strategi yang relatif kuat tanpa overfit mudah.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. Di pasar yang tidak stabil, rata-rata bergerak tertinggal dan mungkin melewatkan titik masuk terbaik.
  2. Di pasar yang terikat kisaran dengan pergerakan harga sampingan, sering terjadi kerugian kecil.
  3. Tidak dapat merespon secara efektif terhadap peristiwa mendadak dan perubahan tren yang signifikan.

Untuk mengatasi risiko ini, optimasi dapat dilakukan dalam aspek berikut:

  1. Memperkenalkan indikator MACD untuk lebih banyak sinyal real-time.
  2. Meningkatkan parameter periode MA untuk mengurangi frekuensi perdagangan.
  3. Tambahkan strategi stop loss untuk mengontrol jumlah kerugian perdagangan tunggal.

Arahan Optimasi

Arah optimasi utama untuk strategi ini meliputi:

  1. Optimasi parameter: Metode yang lebih sistematis dapat digunakan untuk menguji kombinasi periode MA yang berbeda untuk menemukan parameter yang lebih baik.

  2. Tambahkan stop loss. Atur stop loss bergerak yang tepat, stop loss persentase dll untuk secara efektif mengontrol kerugian perdagangan tunggal.

  3. Menggabungkan indikator lain. Memperkenalkan sinyal dari MACD, ATR, KD dll untuk mendapatkan lebih banyak dimensi konfirmasi dan meningkatkan stabilitas strategi.

  4. Mengoptimalkan mekanisme keluar. meneliti berbagai jenis metode keluar seperti keluar sinyal pembalikan, bergerak keluar mengambil keuntungan dll

Kesimpulan

Singkatnya, strategi crossover rata-rata bergerak ini adalah strategi tren yang sangat tipikal dan praktis. Ini memiliki keuntungan mudah dipahami dan diimplementasikan, dan juga memiliki ruang untuk perbaikan. Melalui metode seperti optimasi parameter, optimasi stop loss, kombinasi multi-indikator dll, perbaikan berkelanjutan dapat dilakukan untuk mengubahnya menjadi sistem perdagangan yang lebih stabil dan praktis.


// @_benac
//@version=5
strategy('Larry', overlay=true , initial_capital=1000 )


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Usage for Stocks , or Criptos with value bigger then 1, cuz of 0.01 ´pip.
// Daily timeframe
//Observation Point
start     = timestamp(2020, 00, 00, 00, 00)         // backtest start window
finish    = timestamp(2022, 01, 07, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"  

if time < start 
    strategy.close_all("Closing All")

// Take infos from inputs. 
inp_mmshort = input.int(defval = 9, title = "Media Curta"  )
inp_mminter = input.int(defval = 21, title = "Media Curta"  )

// Risk Manager, here define max and min 
inp_max = input.int(defval = 15, title = "Percentual Ganho"  )
inp_min = input.int(defval = 5, title = "Percental  Perda"  )

// Converting the input to % 
pmax = (inp_max / 100 )
pmin =  (inp_min / 100)

// Infos From Moving Average
mm_short = ta.sma(close , inp_mmshort)
mm_inter = ta.ema(close , inp_mminter)


// Trend Logic
//Long Condition 

//Setup do Larry Willians Bem Simples , media virou para cima e rompeu a maxima de referencia, compra. 
tendencia_alta = mm_short[2] > mm_short[1] and mm_short > mm_short[1] and close > high[1] and close > mm_short and mm_short > mm_inter
tendencia_baixa = mm_short[2] < mm_short[1] and mm_short < mm_short[1] and close > low[1] and close < mm_short and mm_short < mm_inter

// Creating the entry
if tendencia_alta 
    strategy.entry("Compra" , strategy.long , stop = low - 0.01  )
    stop_inst = low - 0.01 
if tendencia_baixa 
    strategy.entry("Venda" , strategy.short , stop= high + 0.01  )
    stop_inst = high + 0.01


// TrailingStop Creation

// Sell Position
if strategy.position_size < 0 
    gain_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close < gain_p 
        strategy.close_all(comment = " 1 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close > stop_p 
        strategy.close_all(comment = " 2 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    
    if  high > mm_short[1]
        strategy.close_all(comment = " 3 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
      

// Buy Position    
if strategy.position_size > 0
    gain_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close > gain_p 
        strategy.close_all(comment = " 1- Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close < stop_p 
        strategy.close_all(comment = " 2 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if low < mm_short[1]
        strategy.close_all(comment = " 3 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
        



Lebih banyak