이중 추진력 전략

저자:차오장, 날짜: 2023-09-28 15:03:57
태그:

전반적인 설명

이중 모멘텀 전략은 엔트리 및 출구 신호를 생성하기 위해 빠르고 느린 모멘텀 지표를 사용합니다. 그것은 일일 및 4 시간 시간 프레임에서 트렌딩 도구에 적합한 빠른 반응 전략입니다. 이 구현은 QuantCT 앱을 기반으로합니다.

전략은 긴 / 짧은 또는 긴 모드를 구성 할 수 있습니다. 또한 전략이 입력 및 출력 신호에만 작용하도록 고정 스톱 손실을 활성화하거나 무시 할 수 있습니다.

전략 논리

이 전략은 빠른 기간 (디폴트 5일) 및 느린 기간 (디폴트 10일) 을 사용합니다.

느린 모멘텀과 빠른 모멘텀이 모두 0보다 높을 때 긴 입구 신호가 생성됩니다.

느린 모멘텀이나 빠른 모멘텀이 0 이하로 떨어지면 출구 신호가 생성됩니다.

마찬가지로, 느린 운동량과 빠른 운동량이 0보다 낮을 때 짧은 입구 신호가 생성됩니다. 느린 운동량 또는 빠른 운동량이 0을 넘으면 출구 신호가 생성됩니다.

따라서 전략은 다른 기간에 두 개의 동력 지표의 교차를 사용하여 트렌드 변화를 포착합니다.

이점 분석

  • 이중 모멘텀을 사용하면 추세 변화 탐지가 더 정확하고 잘못된 신호가 더 적습니다.

  • 빠른 기간의 동력은 시장 변화에 빠르게 반응하고 느린 기간은 소음을 필터링합니다.

  • 유연한 장/단 또는 단장 방식은 다른 거래 선호도에 적합합니다.

  • 선택적인 스톱 손실은 위험을 제어합니다.

  • 빠르게 반응하는 특성으로 인해 매일 또는 더 높은 시간 프레임에서 트렌드 거래에 적합합니다.

위험 분석

  • 듀얼 모멘텀은 지표 값이 0보다 높고 0보다 낮으며 약간의 지연이 있습니다.

  • 이 전략은 트렌드 의존도가 높고, 더 많은 윙사와 함께 범위에 묶인 시장에서 낮은 성과를 낼 수 있습니다.

  • 스톱 로스를 사용하지 않으면 큰 손실이 발생할 수 있습니다.

  • 잘못된 상징이나 시간 프레임 선택은 좋지 않은 결과를 초래할 수 있습니다.

리스크를 통제하기 위해, 동력 기간을 조정하고, 합리적인 고정 스톱 손실 비율을 사용하며, 강한 트렌드 기호를 선택하고 일일 또는 더 높은 시간 프레임에서 실행하십시오.

더 나은 기회

이 전략은 여러 가지 방법으로 향상될 수 있습니다.

  1. 트렌드 전환점에 잘못된 거래를 피하기 위해 MACD 또는 RSI 같은 필터를 추가합니다.

  2. 시장 변동성에 따라 정지 거리를 조정하기 위해 적응 스톱 손실을 추가합니다.

  3. 단계적 최적화, 앞으로 걸음 분석 등을 통해 다른 기호에 대한 모멘텀 매개 변수를 최적화합니다.

  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)








더 많은