이것은 이동 평균에 기반한 전략에 따른 모멘텀 인덱스 ETF 트렌드입니다. 이는 빠른 및 느린 이동 평균의 교차와 기울기를 사용하여 지수 ETF 자산의 저 위험 모멘텀 트렌드를 따르는 트렌드 방향을 결정합니다.
이 전략은 50주기 및 150주기 이동 평균을 사용합니다. 빠른 이동 평균이 느린 이동 평균을 넘어서고 빠른 이동 평균의 기울기가 임계보다 크면, 긴 진입에 대한 상향 트렌드 반전을 신호합니다. 빠른 이동 평균이 느린 이동 평균을 넘어서거나 빠른 이동 평균의 기울기가 임계보다 작을 때, 출입 포지션에 대한 하향 트렌드 반전을 신호합니다.
이 전략은 단순히 이동 평균의 방향과 기울기를 활용하여 시장 트렌드를 결정하고 과잉 조정 및 위험을 효과적으로 제어합니다. 한편 이동 평균은 본질적으로 강력한 신호를 위해 시장 소음을 필터 할 수있는 능력을 가지고 있습니다.
이것은 다음과 같은 장점을 가진 전략에 따른 저위험 동력 지수 ETF 트렌드입니다.
또한 몇 가지 위험이 있습니다.
해결책:
이 전략이 더 이상 최적화 될 수있는 몇 가지 영역이 있습니다:
결론적으로, 이것은 낮은 위험, 구현하기 쉬운 모멘텀 인덱스 ETF 트렌드 다음 전략입니다. 이동 평균 크로스오버를 사용하여 트렌드 방향을 결정하고 강력한 리스크 제어, 낮은 구현 비용 및 안정적인 이익과 같은 장점을 가지고 있습니다. 일부 결함이 있지만 전략은 인덱스 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)