
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.
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.
Strategi ini memiliki risiko utama sebagai berikut:
Strategi ini dapat dioptimalkan dalam beberapa hal:
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.
/*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)