이중 동력 전략은 거래 신호와 퇴출 신호를 생성하기 위해 빠르고 느린 두 가지 동력 지표를 사용합니다. 이것은 일선과 4 시간선의 트렌드 품종에 적합한 신속한 반응 전략입니다. 이 전략은 QuantCT 응용 프로그램에서 구현됩니다.
조작 모드는 다공간 또는 다머리만 설정할 수 있다.
고정 스톱을 설정하거나 스톱을 무시할 수 있으며, 이 전략은 출전 및 출전 신호에 따라만 작동한다.
이 전략은 빠른 주기 (기본 5일) 과 느린 주기 (기본 10일) 의 동력 지표를 사용합니다.
느린 운동량과 빠른 운동량이 동시에 0보다 크면 복수 신호를 생성한다.
느린 운동 또는 빠른 운동이 0보다 작을 때 평소 위치 신호를 발생한다.
유사하게, 느린 운동량과 빠른 운동량이 동시에 0보다 작을 때, 공백 신호가 발생한다. 느린 운동량이나 빠른 운동량이 0보다 크면 평소 신호가 발생한다.
따라서, 이 전략은 두 개의 서로 다른 주기적 동력의 교차를 사용하여 트렌드의 변화를 포착하여 트렌드 추적을 구현한다.
이중동량 지표를 사용하면 시장 추세의 변화를 더 정확하게 포착하고 가짜 신호를 줄일 수 있습니다.
빠른 주기의 동력은 시장 변화에 민감하여 트렌드에 빠르게 반응할 수 있습니다. 느린 주기는 시장 소음을 필터링하여 거래 방향이 올바른지 확인합니다.
다양한 거래 취향에 맞게 다중 또는 양방향 거래에 대한 유연한 선택
스톱로스, 리스크 컨트롤을 사용하거나 사용하지 않거나 선택할 수 있습니다.
이 전략은 민감하게 반응하며, 특히 일선이나 더 높은 주기의 트렌드 거래에 적합하며, 초과 수익을 얻을 수 있다.
양동량전략의 추세 판단은 지표값이 0보다 크거나 작은 것에 의존한다.
이 전략은 추세에 더 의존하며, 종합 시장에서 좋지 않은 성과를 거두며, 과도한 거래가 발생하여 거래 비용이 증가합니다.
만약 스톱로스를 사용하지 않는다면, 큰 단독 손실의 위험이 있다.
적절한 품종과 잘못된 주기가 전략의 부실성으로 이어질 수 있습니다.
위험을 제어하기 위해, 동량 주기의 파라미터를 적절히 조정하고, 합리적인 고정 스톱 스포트 비율을 설정하는 것이 좋습니다. 명확한 추세를 보이는 품종을 선택하면서, 일선 또는 더 높은 주기로 이 전략을 실행하십시오.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
트렌드 전환점의 잘못된 거래를 피하기 위해 MACD 또는 RSI와 같은 다른 지표 필터를 추가하십시오.
시장의 변동에 따라 역동적으로 중지량을 조정하는 적응적 중지 장치를 추가하십시오.
동력 매개 변수를 최적화하여 다른 품종에 더 적합한 매개 변수 조합을 찾는다. 단계적 최적화, Walk Forward Analysis 등의 방법을 통해 달성할 수 있다.
포지션 관리 메커니즘을 추가하고, 새로운 포지션의 크기를 예상 수익에 따라 조정한다.
다중 헤드 시장과 빈 헤드 시장을 구분하고, 비대칭 출입 전략을 취한다. 빈 헤드 시장은 더 급진적일 수 있고, 다중 헤드 시장은 더 신중할 수 있다.
쌍동량 전략은 빠른 및 느린 운동 지표의 교차 판단 트렌드 방향을 통해, 간단한 지표를 사용하여 시장 추세 변화를 캡처, 일내 또는 일간의 명백한 추세를 추적하는 데 적합, 좋은 초과 수익을 얻을 수 있습니다. 동시에, 이 전략은 또한 약간의 뒤처진 위험이 있으며, 다른 지표와 함께 위험을 제어하고, 품종 및 매개 변수를 대상으로 최적화하여 더 안정적인 성능을 얻을 필요가 있습니다.
/*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)