Strategi Perdagangan Pullback Rata-rata Bergerak Dinamis


Tanggal Pembuatan: 2024-02-27 14:38:45 Akhirnya memodifikasi: 2024-02-27 14:38:45
menyalin: 0 Jumlah klik: 584
1
fokus pada
1617
Pengikut

Strategi Perdagangan Pullback Rata-rata Bergerak Dinamis

Ringkasan

Strategi ini menggunakan sistem dua rata-rata untuk mencari peluang potensial untuk terobosan dalam saham atau mata uang digital tertentu. Prinsip dasarnya adalah membeli saham atau mata uang digital ketika rata-rata jangka pendek bangkit dari bawah rata-rata jangka panjang. Menjual saham atau mata uang digital ketika harga menguji kembali rata-rata jangka panjang.

Prinsip Strategi

Strategi ini menggunakan rata-rata bergerak sederhana (SMA) dari dua periode yang berbeda sebagai sinyal perdagangan. Siklus SMA pertama lebih panjang, mewakili arah tren keseluruhan. Siklus SMA kedua lebih pendek, digunakan untuk menangkap pergerakan harga jangka pendek.

Ketika SMA jangka pendek memakai SMA jangka panjang dari bawah, mewakili harga dalam tren naik secara keseluruhan, sehingga strategi membuka posisi multihead. Ketika harga turun untuk menguji kembali SMA jangka panjang, menandakan berakhirnya pullback jangka pendek, ketika strategi mempertimbangkan stop loss atau profit untuk menutup posisi.

Selain itu, strategi ini juga menetapkan kondisi over-sell dan over-buy untuk menghindari perdagangan dalam situasi yang ekstrim. Posisi hanya akan dibuka jika kondisi crossover dan penilaian yang wajar terpenuhi secara bersamaan.

Keunggulan Strategis

  • Menggunakan Sistem Dua Garis Persamaan untuk Mengidentifikasi Tren Jangka Pendek dan Menengah
  • Menggabungkan keuntungan dari trend-following dan backtracking trading
  • Pemasangan selang-seling dan selang-seling dalam kondisi overbought, mengurangi transaksi yang tidak perlu

Analisis risiko

  • Waktu yang tepat untuk mengakhiri pergantian ini sangat sulit untuk diprediksi, dan mungkin ada kesalahan dalam penghentian.
  • Jika tren berubah, tidak dapat berhenti dengan cepat, dan mungkin menanggung kerugian yang lebih besar
  • Setting parameter yang tidak tepat dapat menyebabkan terlalu sering atau konservatif perdagangan

Optimasi Strategi

Strategi ini masih bisa dioptimalkan lebih jauh:

  1. Instrumen yang lebih canggih digunakan untuk mengidentifikasi pergerakan dan tren harga, seperti Brinks, KD Indicator, dan lain-lain
  2. Tergabung dengan faktor-faktor lain untuk menentukan kapan penarikan berakhir, seperti perubahan volume transaksi, volatilitas, dan lain-lain
  3. Mengukur posisi secara dinamis untuk memaksimalkan keuntungan
  4. Mengoptimalkan logika stop loss, menggunakan KAMA, Ichimoku cloud, dan timeline yang lebih rendah untuk menentukan kapan stop loss terjadi

Meringkaskan

Strategi ini mengintegrasikan keuntungan dari trend tracking dan trading backtracking, menggunakan sistem dua garis lurus untuk menilai munculnya peluang. Pada saat yang sama, kondisi overbought dan oversold tertentu yang tertanam dapat mencegah pembukaan posisi yang tidak perlu. Ini adalah strategi perdagangan kuantitatif yang sangat praktis yang layak untuk diteliti dan dioptimalkan.

Kode Sumber Strategi
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)