듀얼 모멘텀 전략


생성 날짜: 2023-09-28 15:03:57 마지막으로 수정됨: 2023-09-28 15:03:57
복사: 2 클릭수: 715
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이중 동력 전략은 거래 신호와 퇴출 신호를 생성하기 위해 빠르고 느린 두 가지 동력 지표를 사용합니다. 이것은 일선과 4 시간선의 트렌드 품종에 적합한 신속한 반응 전략입니다. 이 전략은 QuantCT 응용 프로그램에서 구현됩니다.

조작 모드는 다공간 또는 다머리만 설정할 수 있다.

고정 스톱을 설정하거나 스톱을 무시할 수 있으며, 이 전략은 출전 및 출전 신호에 따라만 작동한다.

전략 원칙

이 전략은 빠른 주기 (기본 5일) 과 느린 주기 (기본 10일) 의 동력 지표를 사용합니다.

느린 운동량과 빠른 운동량이 동시에 0보다 크면 복수 신호를 생성한다.

느린 운동 또는 빠른 운동이 0보다 작을 때 평소 위치 신호를 발생한다.

유사하게, 느린 운동량과 빠른 운동량이 동시에 0보다 작을 때, 공백 신호가 발생한다. 느린 운동량이나 빠른 운동량이 0보다 크면 평소 신호가 발생한다.

따라서, 이 전략은 두 개의 서로 다른 주기적 동력의 교차를 사용하여 트렌드의 변화를 포착하여 트렌드 추적을 구현한다.

우위 분석

  • 이중동량 지표를 사용하면 시장 추세의 변화를 더 정확하게 포착하고 가짜 신호를 줄일 수 있습니다.

  • 빠른 주기의 동력은 시장 변화에 민감하여 트렌드에 빠르게 반응할 수 있습니다. 느린 주기는 시장 소음을 필터링하여 거래 방향이 올바른지 확인합니다.

  • 다양한 거래 취향에 맞게 다중 또는 양방향 거래에 대한 유연한 선택

  • 스톱로스, 리스크 컨트롤을 사용하거나 사용하지 않거나 선택할 수 있습니다.

  • 이 전략은 민감하게 반응하며, 특히 일선이나 더 높은 주기의 트렌드 거래에 적합하며, 초과 수익을 얻을 수 있다.

위험 분석

  • 양동량전략의 추세 판단은 지표값이 0보다 크거나 작은 것에 의존한다.

  • 이 전략은 추세에 더 의존하며, 종합 시장에서 좋지 않은 성과를 거두며, 과도한 거래가 발생하여 거래 비용이 증가합니다.

  • 만약 스톱로스를 사용하지 않는다면, 큰 단독 손실의 위험이 있다.

  • 적절한 품종과 잘못된 주기가 전략의 부실성으로 이어질 수 있습니다.

위험을 제어하기 위해, 동량 주기의 파라미터를 적절히 조정하고, 합리적인 고정 스톱 스포트 비율을 설정하는 것이 좋습니다. 명확한 추세를 보이는 품종을 선택하면서, 일선 또는 더 높은 주기로 이 전략을 실행하십시오.

최적화 방향

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

  1. 트렌드 전환점의 잘못된 거래를 피하기 위해 MACD 또는 RSI와 같은 다른 지표 필터를 추가하십시오.

  2. 시장의 변동에 따라 역동적으로 중지량을 조정하는 적응적 중지 장치를 추가하십시오.

  3. 동력 매개 변수를 최적화하여 다른 품종에 더 적합한 매개 변수 조합을 찾는다. 단계적 최적화, Walk Forward Analysis 등의 방법을 통해 달성할 수 있다.

  4. 포지션 관리 메커니즘을 추가하고, 새로운 포지션의 크기를 예상 수익에 따라 조정한다.

  5. 다중 헤드 시장과 빈 헤드 시장을 구분하고, 비대칭 출입 전략을 취한다. 빈 헤드 시장은 더 급진적일 수 있고, 다중 헤드 시장은 더 신중할 수 있다.

요약하다

쌍동량 전략은 빠른 및 느린 운동 지표의 교차 판단 트렌드 방향을 통해, 간단한 지표를 사용하여 시장 추세 변화를 캡처, 일내 또는 일간의 명백한 추세를 추적하는 데 적합, 좋은 초과 수익을 얻을 수 있습니다. 동시에, 이 전략은 또한 약간의 뒤처진 위험이 있으며, 다른 지표와 함께 위험을 제어하고, 품종 및 매개 변수를 대상으로 최적화하여 더 안정적인 성능을 얻을 필요가 있습니다.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © QuantCT

//@version=4
strategy("Momentum Strategy Idea",
         shorttitle="Momentum", 
         overlay=false,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)

// ____ Inputs

fast_period = input(title="Fast Period", defval=5) 
slow_period = input(title="Slow Period", defval=10)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

mom_fast = mom(close, fast_period)
mom_slow = mom(close, slow_period)
    
enter_long = (mom_slow > 0 and mom_fast > 0)
exit_long = (mom_slow < 0 or mom_fast < 0)
enter_short = (mom_slow < 0 and mom_fast < 0)
exit_short = (mom_slow > 0 or mom_fast > 0)

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 
   
// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)
    
// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

mom_fast_plot = plot(mom_fast, color=colors)
mom_slow_plot = plot(mom_slow, color=colors)
fill(mom_fast_plot, mom_slow_plot, color=colors, transp=50)