Trend Mengikut Strategi Beli dan Jual

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

img

Ringkasan

Strategi Beli dan Jual Berikutan Trend adalah strategi perdagangan trend berikut hari yang mudah. premisnya adalah untuk menentukan arah trend berdasarkan Purata Bergerak dan membeli / menjual penurunan dan penurunan dalam trend.

Logika Strategi

Strategi ini menggunakan Purata Bergerak Sederhana (SMA) untuk menentukan arah trend. Dalam trend menaik, apabila tindakan lilin menawarkan dip, strategi akan menjadi panjang apabila tinggi lilin semasa memecahkan tinggi lilin sebelumnya. Dalam trend menurun, apabila tindakan lilin menawarkan blip, strategi akan menjadi pendek apabila rendah lilin semasa memecahkan rendah lilin sebelumnya.

Strategi ini juga menggunakan %K dan %D dari Blanchflower Oscillator untuk penentuan trend. Ia akan menutup kedudukan dan berdagang ke arah yang bertentangan apabila %K melintasi di atas %D. Di samping itu, garis MACD dan Isyarat bertindak sebagai penapis untuk hanya mengambil perdagangan yang sejajar dengan arah trend yang ditentukan oleh MACD dan Isyarat.

Strategi ini boleh berjalan panjang sahaja, pendek sahaja, atau kedua-duanya. Bulan permulaan dan tahun membolehkan backtesting dari titik itu sehingga sekarang. Semua parameter seperti tempoh SMA, tempoh %K, tempoh %D, parameter MACD dll boleh disesuaikan.

Analisis Kelebihan

  • Menggunakan SMA untuk menentukan trend mengelakkan whipsaws dan perdagangan yang tidak betul
  • Menggunakan Blanchflower Oscillator tepat pada masanya mengesan pembalikan trend dan mengawal risiko
  • MACD dan penapis isyarat mengurangkan perdagangan bising terhadap trend
  • Parameter yang boleh disesuaikan menyesuaikan diri dengan tingkah laku harga yang berbeza
  • Dagangan hanya panjang, hanya pendek atau dua arah menyesuaikan diri dengan rejimen pasaran

Analisis Risiko

Risiko utama strategi ini ialah:

  • Risiko kerugian yang besar daripada penembusan SMA yang besar.
  • Perdagangan yang kerap dan overtrading di pasaran terhad julat.
  • Penapisan yang tidak berkesan dari MACD yang buruk dan tetapan parameter isyarat.
  • Posisi besar yang terkumpul daripada perdagangan dua arah yang menyebabkan kerugian.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dalam aspek berikut:

  • Mengoptimumkan tempoh SMA untuk menapis whipsaw sambil mengekalkan keupayaan pengesanan trend
  • Mengoptimumkan parameter %K, %D untuk menangkap pembalikan trend sambil mengurangkan whipsaws
  • Mengoptimumkan parameter MACD untuk penapisan bunyi yang lebih berkesan
  • Tambah kawalan saiz kedudukan, contohnya kuantiti tetap, peratusan ekuiti yang berubah-ubah, dll.
  • Tambah mekanisme stop loss e.g. trailing stop, time stop, ATR stop dan lain-lain

Kesimpulan

Strategi Beli dan Jual Trend Following mempunyai logik yang mudah dan mudah untuk berdagang pulback dalam trend yang dikenal pasti oleh SMA dan disaring oleh penunjuk. Parameter penyesuaian halus dan kawalan risiko boleh membawa kepada hasil yang baik, tetapi pengelupasan gabungan masih diperlukan untuk mengelakkan overfit dan meningkatkan ketahanan. Secara keseluruhan, ini adalah strategi perdagangan intraday yang praktikal.


/*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 lanjut