Ini adalah tren indeks momentum ETF mengikuti strategi berdasarkan rata-rata bergerak. Ini menggunakan persilangan dan kemiringan rata-rata bergerak cepat dan lambat untuk menentukan arah tren untuk tren momentum risiko rendah mengikuti aset ETF indeks.
Strategi ini menggunakan rata-rata bergerak 50 periode dan 150 periode. Ketika rata-rata bergerak cepat melintasi rata-rata bergerak lambat, dan kemiringan rata-rata bergerak cepat lebih besar dari ambang batas, itu menandakan pembalikan tren naik untuk entri panjang. Ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat, atau kemiringan rata-rata bergerak cepat kurang dari ambang batas, itu menandakan pembalikan tren menurun untuk posisi keluar.
Strategi ini hanya memanfaatkan arah dan kemiringan moving average untuk menentukan tren pasar, menghindari overfit dan mengontrol risiko secara efektif.
Ini adalah tren ETF indeks momentum berisiko rendah yang mengikuti strategi dengan keuntungan berikut:
Ada juga beberapa risiko:
Solusi:
Ada beberapa bidang strategi ini dapat lebih dioptimalkan:
Kesimpulannya, ini adalah strategi indeks momentum ETF yang berisiko rendah dan mudah diimplementasikan. Ini menentukan arah tren menggunakan crossover rata-rata bergerak dan memiliki keuntungan seperti pengendalian risiko yang kuat, biaya implementasi yang rendah dan keuntungan yang stabil. Meskipun beberapa kekurangan ada, strategi dapat ditingkatkan lebih lanjut dalam banyak aspek untuk menjadi alat yang efektif untuk alokasi aset ETF indeks.
/*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)