Strategi Beli dan Jual Mengikuti Tren


Tanggal Pembuatan: 2023-10-17 12:59:59 Akhirnya memodifikasi: 2023-10-17 12:59:59
menyalin: 0 Jumlah klik: 628
1
fokus pada
1617
Pengikut

Strategi Beli dan Jual Mengikuti Tren

Ringkasan

Strategi trend-following adalah strategi perdagangan harian yang mengikuti tren sederhana. Gagasan dasar dari strategi ini adalah untuk menilai arah tren berdasarkan rata-rata bergerak, dan membeli dan menjual pada getaran dalam tren.

Prinsip Strategi

Strategi ini menggunakan SMA untuk menentukan arah tren. Dalam tren naik, ketika garis K muncul di titik rendah, strategi ini akan melakukan lebih banyak ketika melewati titik tertinggi dari garis K sebelumnya. Dalam tren turun, ketika garis K muncul di titik tinggi, strategi ini akan melakukan kosong ketika melewati titik terendah dari garis K sebelumnya.

Strategi ini juga menggunakan Blanchflower Intensity Indicator%K dan%D untuk menilai tren. Ketika%K melewati%D untuk melakukan perdagangan berlawanan arah. Selain itu, strategi ini juga menggunakan MACD dan Signal Curve sebagai kondisi penyaringan dan hanya melakukan perdagangan jika MACD dan Signal sesuai dengan arah tren.

Strategi ini dapat dilakukan hanya lebih banyak, hanya lebih banyak atau lebih banyak pada saat yang sama. Tanggal awal dapat ditetapkan sebagai bulan dan tahun awal pengukuran ulang. Semua parameter seperti periode rata-rata bergerak, periode K, periode D, parameter MACD, dll. dapat disesuaikan.

Analisis Keunggulan

  • Menggunakan Moving Average untuk menentukan arah tren dapat secara efektif memfilter getaran dan menghindari perdagangan yang salah
  • Penggunaan indikator Blanchflower dapat menentukan perubahan tren tepat waktu untuk mengendalikan risiko
  • Filter MACD dan Sinyal mengurangi perdagangan noise yang tidak sesuai dengan arah tren
  • Parameter yang dapat disesuaikan untuk perilaku harga varietas yang berbeda
  • Hanya melakukan over, short, atau two-way trading, dengan fleksibilitas untuk beradaptasi dengan kondisi pasar

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  • Risiko kerugian besar akibat penembusan besar rata-rata bergerak. Anda dapat meningkatkan siklus rata-rata bergerak secara tepat untuk mengurangi risiko.
  • Seringnya perdagangan dalam tren getaran menyebabkan overtrading. Anda dapat meningkatkan% K siklus untuk mengurangi frekuensi perdagangan.
  • Jika parameter MACD dan Signal tidak diatur dengan benar, filter tidak akan berfungsi. Parameter harus dioptimalkan sesuai dengan varietas tertentu.
  • Posisi kosong yang terlalu banyak terakumulasi menyebabkan kerugian besar dalam perdagangan dua arah.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  • Mengoptimalkan siklus rata-rata bergerak, memfilter getaran sedapat mungkin sambil mempertahankan penilaian tren
  • Optimalkan parameter% K,% D, mengurangi whipsaw sambil menjaga capture trend reversal
  • Optimalkan parameter MACD agar filternya lebih efektif dan mengurangi transaksi noise
  • Meningkatkan kontrol posisi, seperti jumlah tetap untuk membuka posisi, posisi floating, dan lain-lain
  • Menambahkan strategi stop loss, seperti stop loss bergerak, stop loss waktu, stop loss ATR

Meringkaskan

Strategi trend-following trading strategi secara keseluruhan jelas dan sederhana, menilai arah tren melalui moving averages, dan menggunakan filter indikator untuk mengunci peluang perdagangan dalam tren. Strategi ini dapat memberikan hasil yang baik melalui optimasi parameter, tetapi masih membutuhkan kemasan kode Combine untuk mengurangi risiko optimasi dan meningkatkan stabilitas. Selain itu, optimasi yang tepat untuk mengendalikan risiko juga penting.

Kode Sumber Strategi
/*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)