모멘텀 지수 추세 추종 전략


생성 날짜: 2023-12-05 15:13:25 마지막으로 수정됨: 2023-12-05 15:13:25
복사: 0 클릭수: 429
avatar of ChaoZhang ChaoZhang
1
집중하다
1234
수행원

모멘텀 지수 추세 추종 전략

개요

이것은 이동 평균을 기반으로 한 지수 ETF 동적 양 트렌드 추종 전략이다. 그것은 빠른 이동 평균과 느린 이동 평균의 방향과 기울기를 교차하여 트렌드 방향을 판단하여 낮은 위험 지수 ETF 자산의 동적 양 트렌드 추종을 구현한다.

전략 원칙

이 전략은 50주기 및 150주기 이동 평균을 사용한다. 빠른 이동 평균 위에 느린 이동 평균을 가로질러, 빠른 이동 평균의 기울기가 경착값보다 크면, 트렌드 전환이라고 간주하고, 더 많은 것을 한다. 빠른 이동 평균 아래에 느린 이동 평균을 가로질러, 또는 빠른 이동 평균의 기울기가 경착값보다 작을 때, 트렌드 역전이라고 간주하고, 평소 위치한다.

이 전략은 간단하고 직접적으로 이동 평균의 방향과 기울기를 사용하여 시장 추세를 판단하여 곡선 조화를 피하고 위험을 효과적으로 제어합니다. 이동 평균은 자연적으로 소음 제거 특성을 가지고 있으며 시장 소음을 효과적으로 필터링 할 수 있습니다.

우위 분석

이것은 낮은 위험의 지수 ETF이며 다음과 같은 장점을 가진 동적 경향을 따르는 전략입니다.

  1. 위험 제어 능력은 강하다. 이동 평균 필터링 시장 소음으로 위험을 효과적으로 제어한다.
  2. 낮은 비용으로 구현한다. 간단한 이동 평균만 사용한다. 낮은 비용으로 구현한다.
  3. 이윤 안정. 지수 ETF 자체는 변동이 적고, 추세에 따라 협력하면 안정적인 초과 수익을 얻을 수 있다.
  4. 적응성이 강하다. 조정 가능한 매개 변수가 많으며, 다양한 지수 ETF에 대해 최적화할 수 있다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 빠른 반전을 놓칠 수도 있다. 이동 평균을 사용하여 추세를 판단하고, 빠른 반전을 놓칠 수도 있다.
  2. 매개 변수 민감. 매개 변수 설정이 잘못되면 거래가 너무 많거나 기회를 놓치게 될 수 있습니다.
  3. 효과는 시장 환경 변화에 따라 달라진다. 불안정한 상황에서는 좋지 않을 수 있다.

대응방법:

  1. 다른 지표와 함께 판단하는 것은 빠른 반전이다.
  2. 매개 변수 테스트 최적화.
  3. 시장 환경의 역동성에 따라 조정 파라미트.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 다른 지표인 MACD, KD와 같은 보조 판단을 사용하여 전략의 효과를 높여라.
  2. 스톱 로직을 추가하여 리스크를 더욱 제어합니다.
  3. 이동 평균 주기 변수를 최적화하여 더 많은 지수 ETF를 적용한다.
  4. 동적으로 변수를 조정하여 시장 환경의 변화에 적응하십시오.

요약하다

이 전략은 낮은 위험, 간단하게 실행 인덱스 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)