추세 추종 모멘텀 전략


생성 날짜: 2023-10-17 15:26:49 마지막으로 수정됨: 2023-10-17 15:26:49
복사: 0 클릭수: 628
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

추세 추종 모멘텀 전략

개요

이 전략은 사용자 정의 지표 분모를 기반으로 가격의 이동 평균과 거리의 축적 곱을 통해 가격 추세 방향을 판단하여 트렌드 추적을 구현합니다.

전략 원칙

이 전략은 사용자 정의 지표를 사용하여 가격과 이동 평균의 거리를 축적합니다. 구체적으로 다음과 같이 구현됩니다.

  1. 계산된 가격은 길이 200의 간단한 이동 평균의 거리 k=close-sma ((close,200)

  2. 축적주기 s=29을 정의하고, 최근 s주기 내의 k의 값에 대해 축적합을 한다: sum = 0, for i = 0 to s, sum := sum + k[i]

  3. sum>0일 때 다중 신호가 발생하고 sum일 때 공백 신호가 발생

  4. 다중 포지션으로 들어가면 sum<0이면 평점; 코디 포지션으로 들어가면 sum>0이면 평점

이 전략은 가격과 이동 평균의 거리의 축적 합을 통해 가격의 전반적인 추세 방향을 판단합니다. 통합 및 긍정적 인 경우 가격이 상승 추세에 있다고 생각하면 다면이 있어야하며, 통합 및 부정적인 경우 가격이 하락 추세에 있다고 생각하면 공백이 있어야합니다.

전략적 이점

  1. 사용자 정의 지표 인텔리저를 사용하여 가격 동향을 효과적으로 판단할 수 있습니다.

  2. 통합적 사고를 사용하여 가격과 이동 평균의 거리를 축적하여 추세를 판단하는 데 더 많은 정확성을 얻을 수 있습니다.

  3. 비교적 간단한 논리, 이해하기 쉬운 구현, 최적화 개선 편리함

  4. 인테리거 사이클 파라미터를 유연하게 조정하여 인테리거의 트렌드 판단의 민감도를 최적화할 수 있습니다.

  5. 재검토 성과, 수익 안정, 실무 적용 가능

전략적 위험

  1. 부적절하게 설정된 인더기 사이클은 인더기 반응이 민감하지 않아 트렌드 전환점을 놓칠 수 있습니다.

  2. 이동 평균의 길이가 잘못 설정되어 분자에서 가격 추세를 잘못 판단할 수 있습니다.

  3. 급격한 가격 변동으로 인한 급격한 사건으로 인해 인수계는 잘못된 신호를 냅니다.

  4. 거래 품종 선택이 부적절한 경우, 변동률이 너무 높은 품종을 선택하면, 부적절한 인더리얼 효과를 얻을 수 있습니다.

위험과 대응하는 방법:

  1. 통합주기 변수를 최적화하여 인테리저를 트렌드 변화에 더 민감하게 만듭니다.

  2. 다양한 길이의 이동 평균의 효과를 테스트하고, 트렌드를 효과적으로 판단할 수 있는 길이를 선택합니다.

  3. 주요 이벤트 전에 전략을 종료하여 큰 가격 변화로 인한 잘못된 신호를 피하십시오.

  4. 낮은 변동성을 가진 거래 품종을 선택하여 더 나은 인더리얼 효과를 얻습니다.

전략 최적화 방향

  1. RSI와 같은 다른 보조 지표들을 더하는 것이 고려될 수 있습니다.

  2. 다른 유형의 이동 평균과 가격 거리의 통합 효과를 연구할 수 있습니다.

  3. 다른 거래 품종에 적합하도록 통합 주기 변수를 자동으로 최적화 할 수 있습니다.

  4. 거래량 지표가 추가될 수 있으며, 이는 가격의 급격한 변동에 대해 인분자가 잘못된 신호를 발생시키지 않습니다.

  5. 기계 학습과 같은 방법을 통해 자동으로 인테리저 변수를 최적화하여 전략을 더 거칠게 만들 수 있습니다.

요약하다

이 전략은 사용자 정의 지표 인수자를 통해 가격 트렌드 방향을 판단하고, 가격과 이동 평균 거리의 축적 곱셈 방법을 사용하여 트렌드에 대한 효과적인 추적을 구현한다. 전략 논리 간단하고 명확하며, 재측량 성능이 좋다. 인수자 변수를 조정하고, 보조 지표를 추가하고, 자동 최적화 등의 방법을 통해 전략을 개선 할 수 있으며, 실제에서 더 안정적이고 신뢰할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=29)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = sum>0
exitlong = sum<0

shortCondition = sum<0
exitshort = sum>0

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)