
Strategi membeli dan menjual trend adalah strategi perdagangan dalam masa sehari yang mengikuti trend. Gagasan asas strategi ini adalah untuk menentukan arah trend berdasarkan purata bergerak, membeli dan menjual dalam pergerakan trend.
Strategi ini menggunakan purata bergerak sederhana (SMA) untuk menentukan arah trend. Dalam trend menaik, apabila garis K muncul pada titik rendah, strategi ini akan melakukan lebih banyak apabila melanggar titik tertinggi garis K sebelumnya; dalam trend menurun, apabila garis K muncul pada titik tinggi, strategi ini akan melakukan kosong apabila melanggar titik terendah garis K sebelumnya.
Strategi ini juga menggunakan indikator Blanchflower %K dan %D untuk menilai trend. Ia melakukan perdagangan berlawanan arah ketika%K melintasi%D. Selain itu, strategi ini juga menggunakan MACD dan kurva isyarat sebagai syarat penapisan dan hanya melakukan perdagangan jika MACD dan isyarat sesuai dengan arah trend.
Strategi ini boleh dilakukan hanya dengan banyak, hanya dengan kosong atau dengan banyak kosong pada masa yang sama. Tarikh permulaan boleh ditetapkan pada bulan dan tahun permulaan pengukuran semula. Semua parameter seperti kitaran purata bergerak, kitaran K, kitaran D, parameter MACD dan sebagainya boleh disesuaikan.
Strategi ini mempunyai risiko utama:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi trend-tracking membeli-belah strategi keseluruhan idea yang jelas dan mudah, dengan bergerak rata-rata untuk menentukan arah trend, dan menggunakan penapis penunjuk untuk mengunci peluang perdagangan dalam trend. Strategi ini boleh mendapat kesan yang baik melalui parameter pengoptimuman, tetapi masih memerlukan gabungan kod kemasan untuk mengurangkan risiko pengoptimuman dan meningkatkan kestabilan.
/*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)