
Ini adalah strategi trend-following indeks ETF yang bergerak berdasarkan rata-rata bergerak. Ini menggunakan persilangan arah dan kecenderungan rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menentukan arah tren, untuk mencapai trend-following indeks ETF yang bergerak dengan risiko rendah.
Strategi ini menggunakan moving average 50 periode dan 150 periode. Ketika bergerak cepat di atas rata-rata bergerak cepat, dan rata-rata bergerak cepat memiliki kemiringan yang lebih besar dari titik terendah, maka trend akan bergeser, dan jika bergerak lambat di bawah rata-rata bergerak cepat, atau rata-rata bergerak cepat memiliki kemiringan yang lebih kecil dari titik terendah, maka trend akan berbalik dan posisi akan merata.
Strategi ini sederhana dan langsung menggunakan arah dan kemiringan rata-rata bergerak untuk menilai tren pasar, menghindari kurva fit, dan mengendalikan risiko secara efektif. Sementara itu, rata-rata bergerak secara alami memiliki sifat yang tidak berisik dan dapat secara efektif menyaring kebisingan pasar.
Ini adalah indeks ETF berisiko rendah dengan strategi trend-following dinamis dengan keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Solusi yang sesuai:
Strategi ini juga dapat dioptimalkan dalam beberapa hal:
Strategi ini adalah strategi yang rendah risiko, mudah untuk menerapkan indeks ETF kuantitatif yang bergerak mengikuti tren. Ini menggunakan arah tren cross-determinasi rata-rata bergerak, memiliki kekuatan kontrol risiko yang kuat, untuk mencapai biaya rendah, stabilitas pendapatan dan lain-lain. Strategi ini juga memiliki beberapa kekurangan, tetapi dapat lebih dioptimalkan dengan berbagai cara, sehingga menjadi alat yang efektif untuk penempatan aset indeks ETF.
/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//please use on daily SPY, or other indexes only
strategy("50-150 INDEX TREND FOLLOWING", overlay=true)
//user input
fastSMA = input(title="Fast Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=50,confirm=false)
slowSMA = input(title="Slow Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=150,confirm=false)
longSlopeThreshold = input(title="Bullish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=5,confirm=false)
shortSlopeThreshold = input(title="Bearish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-5,confirm=false)
atrValue = input(title="Average True Range (Int)",type=input.integer,minval=1,maxval=100,step=1,defval=14,confirm=false)
risk = input(title="Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=100,confirm=false)
//create indicator
shortSMA = sma(close, fastSMA)
longSMA = sma(close, slowSMA)
//calculate ma slope
angle(_source) =>
rad2degree=180/3.14159265359
ang=rad2degree*atan((_source[0] - _source[1])/atr(atrValue))
shortSlope=angle(shortSMA)
longSlope=angle(longSMA)
//specify crossover conditions
longCondition = (crossover(shortSMA, longSMA) and (shortSlope > longSlopeThreshold)) or ((close > shortSMA) and (shortSMA > longSMA) and (shortSlope > longSlopeThreshold))
exitCondition = crossunder(shortSMA, longSMA) or (shortSlope < shortSlopeThreshold)
strategy.initial_capital = 50000
//units to buy
amount = (risk / 100) * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)
//long trade
if (longCondition and strategy.position_size == 0)
strategy.order("Long", strategy.long, units)
//close long trade
if (exitCondition and strategy.position_size > 0)
strategy.order("Exit", strategy.short, strategy.position_size)
// Plot Moving Average's to chart
plot(shortSMA, color=color.blue)
plot(longSMA, color=color.green)