Strategi retracement berbasis momentum


Tanggal Pembuatan: 2024-01-23 15:23:14 Akhirnya memodifikasi: 2024-01-23 15:23:14
menyalin: 0 Jumlah klik: 564
1
fokus pada
1617
Pengikut

Strategi retracement berbasis momentum

Ringkasan

Strategi ini bertujuan untuk mengidentifikasi potensi peluang retracement di pasar. Strategi ini menggunakan sistem dua garis sejajar: rata-rata bergerak jangka panjang ((MA1)) dan rata-rata bergerak jangka pendek ((MA2)). Tujuan utamanya adalah untuk menunjukkan peluang retracement yang potensial di dalam tren besar, sehingga melakukan overtrading ketika harga close out di bawah MA1 tetapi di atas MA2.

Prinsip Strategi

Strategi ini menggunakan dua rata-rata bergerak: MA1 (panjang) dan MA2 (pendek). Prinsipnya adalah bahwa jika harga jangka pendek muncul kembali dan menguji dukungan tren jangka panjang, maka ini mungkin merupakan kesempatan untuk melakukan lebih banyak. Secara khusus, jika harga tutup lebih tinggi dari dukungan jangka panjang (MA1), menunjukkan tren besar masih bagus; dan jika harga tutup jatuh dari rata-rata jangka pendek (MA2) namun tetap berdiri di atas rata-rata jangka panjang (MA1), maka ini adalah peluang untuk mundur yang khas.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Implementasi yang sederhana, mudah dipahami, parameter yang dapat disesuaikan secara fleksibel
  2. Mengidentifikasi tren besar dan menghindari perdagangan berlawanan dengan sistem dua garis lurus
  3. Filter waktu yang dapat disesuaikan untuk menghindari abnormalitas pasar pada periode waktu tertentu
  4. Ukuran posisi dapat disesuaikan dengan preferensi risiko yang berbeda
  5. Menggunakan mekanisme stop loss untuk membatasi risiko kerugian

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Kembali ke Kegagalan, Harga Terus Turun, Tidak Bisa Dihentikan
  2. Tren besar berbalik, dukungan rusak
  3. Pasar bergejolak, rata-rata bergerak menyimpang
  4. Salah memilih periode waktu, melewatkan peluang perdagangan

Oleh karena itu, ada beberapa hal yang dapat dioptimalkan dan ditingkatkan:

  1. Optimalkan parameter moving average untuk meningkatkan kualitas sinyal trading
  2. Mengoptimalkan level stop loss, untuk mendapatkan keuntungan dengan asumsi meminimalkan risiko
  3. Menyesuaikan filter waktu, dan fokus pada waktu perdagangan terbaik
  4. Pengujian varietas dan lingkungan pasar

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan parameter moving average untuk mencari kombinasi parameter yang optimal
  2. Uji berbagai mekanisme penghentian kerugian, seperti tracking loss, dan oscillation loss.
  3. Menambahkan filter lain, seperti filter volume transaksi, filter volatilitas, dan sebagainya
  4. Meningkatkan mekanisme manajemen posisi, seperti penambahan posisi dengan garpu emas dan penurunan posisi dengan garpu mati.
  5. Menambahkan mekanisme penghentian otomatis
  6. Melakukan pengujian ulang dan menghitung indikator kunci untuk menentukan parameter optimal

Meringkaskan

Strategi ini secara keseluruhan adalah strategi tarik mundur garis pendek yang sederhana dan praktis. Ini menggunakan identifikasi peluang mundur dan menetapkan stop loss bergerak untuk mengendalikan risiko. Strategi ini mudah dipahami dan diterapkan, parameternya disesuaikan dengan fleksibilitas, dapat memenuhi preferensi risiko yang berbeda.

Kode Sumber Strategi
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter =true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)