모멘텀 전략


생성 날짜: 2023-09-26 15:16:56 마지막으로 수정됨: 2023-09-26 15:16:56
복사: 1 클릭수: 777
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

동력 전략은 가격 변화의 추세에 따라 거래하는 전략이다. 이 전략은 일정 주기 동안의 가격 변화 상황을 계산하여 가격 운동 추세를 판단하고 거래 신호를 생성한다. 가격이 상승 추세에있을 때 구매 신호를 생성하고 가격이 하락 추세에있을 때 판매 신호를 생성한다. 이 전략은 쌍동력 지표의 교차를 사용하여 거래 신호를 생성한다.

전략 원칙

이 전략은 특정 주기 내의 종결 가격 변화를 계산하여 가격의 동력을 판단한다. 구체적으로, N주기 전의 종결 가격에 대한 종결 가격의 변화를 계산한다.

먼저 첫 번째 동력 지수 MOM0을 계산하고, 공식은 다음과 같다:

MOM0 = CLOSE - CLOSE[N]

그 중 CLOSE는 현재 주기 종료 가격을 나타냅니다.[N]은 N주기 전의 종결 가격을 나타냅니다. 따라서 MOM0>0은 N주기 전의 종결 가격 상승을 나타냅니다. MOM0은 N주기 전의 종결 가격 하락을 나타냅니다.

다음으로 두 번째 운동 지표 MOM1을 계산하여 다음과 같은 공식으로 계산한다:

MOM1 = MOM0 - MOM0[1]

즉, MOM0의 현재 주기의 값을 지난 주기의 값을 빼면 계산한다. MOM1>0은 MOM0의 상승을 의미하며, MOM1은 MOM0의 하락을 의미한다.

동시에 세 번째 동력 지표 MOM2를 계산하여 다음과 같은 수식을 사용한다:

MOM2 = CLOSE - CLOSE[1]

즉, 현재 주기 종료 가격을 지난 주기 종료 가격을 빼서 계산한다. MOM2>0은 종료 가격이 상승한 것을 나타내고, MOM2은 종료 가격이 떨어졌음을 나타낸다.

MOM0>0과 MOM1>0일 때, 동력이 계속 상승하는 것을 나타내며, 구매 신호를 생성한다. MOM0과 MOM2일 때, 동력이 계속 떨어지는 것을 나타내며, 판매 신호를 생성한다.

코드에는 시간 조건time_cond이 추가되어, 설정된 재검토 시간 동안만 거래 신호가 발생한다. 또한 주문을 내기 전에 조건이 여전히 유효한지 확인하고, 신호가 사라진 후에도 주문을 내리는 상황을 피한다.

우위 분석

  • 동력 전략은 가격 변화의 경향을 포착하고 가격 자체의 영향을 받지 않고, 상위와 하위의 위험을 피합니다.
  • 쌍동량 지표 교차를 사용하여 가짜 돌파를 필터링하여 잘못된 신호를 피합니다.
  • 시간 및 조건 검사를 늘려 무효 거래를 줄일 수 있다.
  • 간단하고 이해하기 쉬운 전략, 실행하기 쉬운 전략
  • 다양한 시장 환경에 적용할 수 있는 유연하게 조정 가능한 매개 변수

위험 분석

  • 동력 지표가 지연되어 전환점을 놓칠 수 있습니다.
  • 이중 지표의 교차는 필러 효과를 증가시키지만, 일부 기회를 놓칠 수도 있습니다.
  • 가격 상승과 하락의 강도와 속도를 판단할 수 없습니다.
  • 신중하게 선택해야 하는 매개 변수, 너무 민감하면 거래 빈도와 슬라이드 포인트 비용이 증가할 수 있습니다.
  • 효과는 변수 최적화에 의존하며, 다른 기간에 변수가 조정되어야 합니다.

동량 주기를 줄이고, 트렌드 판단을 도입하거나, 스톱로스를 구성하여 위험을 줄일 수 있다. 또한 거래량 지표에 포함되는 파동도 고려할 수 있다.

최적화 방향

  • 다른 동력 계산 방법을 시도해 보세요. ROC, RSI 등과 같이요.
  • 트렌드 판단을 높여 역동적인 시장을 피하라
  • 단편적 손실을 통제하기 위한 전략
  • 거래량 지표와 결합하여 거래량 지원을 보장합니다.
  • 기계 학습 알고리즘을 추가하여 매개 변수의 동적 최적화를 구현합니다.
  • 다중 시간 프레임 전략, 단기 및 장기 동향을 구분하는 것
  • 다른 시장 가격 관계를 활용하여 시장 간 중매를 고려하십시오.

요약하다

동력 전략은 가격 변화의 추세를 추적하는 것이 아니라 가격 자체를 통해 시장의 뜨거운 방향을 효과적으로 판단하고 가격 상승과 하락의 기회를 잡을 수 있습니다. 그러나 동력은 지연성이 있으며, 매개 변수 선택과 조합 최적화는 전략 효과에 중요합니다. 이 전략은 쌍동력 지표의 교차에 기반하여 일부 소음을 필터링 할 수 있습니다. 매개 변수를 지속적으로 최적화하고, 새로운 기술 지표를 추가하고, 기계 학습을 이용하는 등의 방법으로 전략 효과를 더욱 강화하여 위험을 제어 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-09-25 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
 
time_cond  = true

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2

if (mom0 > 0 and momX > 0 and time_cond)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
	strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
	strategy.cancel("MomSE")

plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")