Tren Mengikuti Strategi Beli dan Jual

Penulis:ChaoZhang, Tanggal: 2023-10-17 12:59:59
Tag:

img

Gambaran umum

Trend Following Buy and Sell Strategy adalah strategi perdagangan tren berikut hari yang sederhana. Premisnya adalah untuk menentukan arah tren berdasarkan Moving Average dan membeli / menjual penurunan dan penurunan dalam tren.

Logika Strategi

Strategi ini menggunakan Simple Moving Average (SMA) untuk menentukan arah tren. Dalam uptrend, ketika aksi lilin menawarkan dip, strategi akan pergi panjang ketika tinggi lilin saat ini memecahkan tinggi lilin sebelumnya. Dalam downtrend, ketika aksi lilin menawarkan blip, strategi akan pergi pendek ketika rendah lilin saat ini memecahkan rendah lilin sebelumnya.

Strategi ini juga menggunakan %K dan %D dari Blanchflower Oscillator untuk penentuan tren. Ini akan menutup posisi dan perdagangan ke arah yang berlawanan ketika %K melintasi di atas %D. Selain itu, garis MACD dan sinyal bertindak sebagai filter untuk hanya mengambil perdagangan yang selaras dengan arah tren yang ditentukan oleh MACD dan sinyal.

Strategi dapat berjalan hanya panjang, pendek, atau keduanya. Bulan awal dan tahun memungkinkan backtesting dari titik itu sampai sekarang. Semua parameter seperti periode SMA, periode %K, periode %D, parameter MACD dll dapat disesuaikan.

Analisis Keuntungan

  • Menggunakan SMA untuk menentukan tren menghindari whipsaws dan perdagangan yang salah
  • Menggunakan Blanchflower Oscillator tepat waktu mendeteksi pembalikan tren dan mengendalikan risiko
  • MACD dan filter sinyal mengurangi perdagangan kebisingan terhadap tren
  • Parameter yang dapat disesuaikan beradaptasi dengan perilaku harga yang berbeda
  • Hanya trading long, hanya trading short atau dual direction menyesuaikan diri dengan sistem pasar

Analisis Risiko

Risiko utama dari strategi ini adalah:

  • Risiko kerugian besar dari penetrasi SMA yang besar dapat meningkatkan periode SMA untuk menurunkan risiko.
  • Perdagangan yang sering dan overtrading di pasar yang terikat rentang.
  • Filter tidak efektif dari pengaturan parameter MACD dan sinyal yang buruk.
  • Akumulasi posisi besar dari perdagangan dua arah yang menyebabkan kerugian.

Peluang Peningkatan

Strategi ini dapat ditingkatkan dalam hal berikut:

  • Mengoptimalkan periode SMA untuk menyaring whipsaw sambil menjaga kemampuan deteksi tren
  • Mengoptimalkan parameter %K, %D untuk menangkap pembalikan tren sambil mengurangi whipsaws
  • Mengoptimalkan parameter MACD untuk penyaringan kebisingan yang lebih efektif
  • Tambahkan kontrol ukuran posisi misalnya kuantitas tetap, variabel % dari ekuitas dll.
  • Tambahkan mekanisme stop loss misalnya trailing stop, time stop, ATR stop dll.

Kesimpulan

Trend Following Buy and Sell Strategy memiliki logika yang sederhana dan langsung untuk memperdagangkan pullbacks dalam tren yang diidentifikasi oleh SMA dan disaring oleh indikator. Parameter penyesuaian halus dan kontrol risiko dapat menyebabkan hasil yang layak, tetapi enkapsulasi Combine masih diperlukan untuk mencegah overfit dan meningkatkan ketahanan. Secara keseluruhan ini adalah strategi perdagangan intraday yang praktis.


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

//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)

// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)

//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal

if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)//	if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
    if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
		strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
    if (k < k[1])
		strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")

if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
    if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
		strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
    if (k > k[1])
		strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Lebih banyak