모멘텀 소모 전략 (Momentum Exhaustion Strategy) 은 추세에 따른 전략으로, 하향 노출을 최소화하기 위해 이동 평균과 가격 비율 오시레이터를 이용한다. 이는 지수펀드 거래 모델에 속하며 위험을 효과적으로 제어할 수 있다.
이 전략의 핵심 지표는 고갈 및 고갈 이동 평균이다. 고갈은 가까운, 높은 및 낮은 가격에서 계산되는 가격 변동의 척도이다. 구체적인 계산은: (고갈의 가까운 + 높은 + 낮은 이동 평균) / 고갈의 이동 평균이다. 고갈 이동 평균은 고갈의 이동 평균이다. 고갈이 고갈 이동 평균을 넘을 때 시장의 통합과 새로운 트렌드 형성을 나타냅니다. 고갈이 고갈 이동 평균을 넘을 때 트렌드 반전을 신호하며 이익을 취하는 것을 고려해야합니다.
또한, 전략은 또한 300 일, 150 일 및 50 일 라인을 포함하여 트렌드를 결정하는 데 도움이되는 장기 및 단기 이동 평균을 사용합니다. 단기 이동 평균이 장기 이동 평균 아래로 넘으면 트렌드 반전을 신호하고 손실을 중단하는 것을 고려해야합니다.
MACD는 또한 단기 구매 및 판매 신호를 위해 사용됩니다. MACD 라인이 신호 라인의 위를 넘으면 상승 신호를 나타냅니다. MACD 라인이 신호 라인의 아래를 넘으면 하락 신호를 나타냅니다. RSI 바닥은 구매 신호로 사용됩니다.
특정 입출입 논리는 다음과 같습니다.
구매 신호: 마비 이동 평균 이상 마비 경로를 통과하고 150 일 마비 이상 50 일 MA 또는 30 이하의 RSI
단기 스톱 로스: 마감 이동 평균 이하의 마감 크로싱 또는 신호 라인 이하의 MACD 크로싱
중장기 스톱 로스: 150일 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스
이 전략은 트렌드 고갈 위험을 결정하고 통제하기 위해 여러 지표를 결합합니다. 이 장점은 다음과 같습니다.
고갈 지표는 통합 및 반전을 효과적으로 식별 할 수 있습니다. 트렌드 반전을 적시에 감지하는 것이 위험을 제어하는 데 중요합니다.
트렌드를 결정하기 위해 여러 시간 프레임의 이동 평균을 사용하는 것은 단기 시장 소음으로 오해되는 것을 피합니다.
MACD는 구매 및 판매 신호를 확인하고 전략의 성능을 향상시키는 데 도움이됩니다.
RSI는 낮은 가격에 구매하고 높은 가격에 판매하는 역할을 합니다.
명확한 수익 취득 및 스톱 로스 전략은 각 거래의 위험을 효과적으로 제어 할 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
여러 지표에 의존하는 경우, 잘못된 매개 변수 설정으로 인해 잘못된 거래 신호가 발생할 수 있습니다. 매개 변수는 반복적으로 테스트하고 최적화해야합니다.
고갈 지표는 완전히 신뢰할 수 없습니다. 가격 차이가 있을 때 실패 할 수 있습니다.
잘못된 스톱 로스 배치로 인해 단기 변동으로 인해 중단 될 수 있습니다. 스톱 로스는 장기 및 단기 효과를 균형 잡아야합니다.
전체 시장이 변동할 때 지표가 실패할 수 있습니다. 포지션 사이징을 통제해야 합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
다양한 매개 변수 조합을 테스트하여 최적의 매개 변수를 찾고 잘못된 신호를 줄이십시오. 주요 조정 가능한 매개 변수는 이동 평균 기간, 고갈 기간 등을 포함합니다.
ATR와 같은 변동성 지표를 포함하여 시장 변동성에 따라 동적으로 중지 손실 범위를 조정합니다.
다른 시장 조건에 따라 다른 포지션 사이징 규칙을 사용하여 포지션 사이징을 최적화하십시오.
트렌드 라인이나 지원 라인 같은 차트 패턴을 포함해서 전략 성능을 향상시킵니다.
기계 학습 알고리즘을 추가하여 주요 지표의 효과를 측정하여 동적 최적화를 실현합니다.
모멘텀 고갈 전략은 트렌드 역전 및 제어 위험을 식별하기 위해 여러 지표를 결합합니다. 트렌드 다음 능력을 가지고 있으며 진입 및 출구 지점을 효과적으로 결정할 수 있습니다. 매개 변수 최적화, 스톱 로스 규칙, 차트 패턴을 통합하는 등 추가 개선이 가능합니다. 전반적으로 시장 변동에 적응력이 있으며 위험 관리 전략 옵션으로 간주 될 수 있습니다.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h 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/ // © spiritualhealer117 //@version=4 strategy("Infiten Slope Strategy", overlay=false,calc_on_every_tick = true, default_qty_type=strategy.percent_of_equity, default_qty_value = 100) // //TIME RESTRICT FOR BACKTESTING { // inDateRange = (time >= timestamp(syminfo.timezone, 2003, // 1, 1, 0, 0)) and // (time < timestamp(syminfo.timezone, 2021, 5, 25, 0, 0)) // //} //OPTIMAL PARAMETERS { daysback = 30 volumesens = 1.618 //} //Calculating Exhaustion and Exhaustion Moving Average { clh = close+low+high exhaustion = (clh-sma(clh,daysback))/sma(clh,daysback) exhaustionSma = sma(exhaustion,daysback) //} //Long Term Moving Averages for sell signals { red = sma(close,300) white = sma(close,150) blue = sma(close,50) plot(red,color=color.red) plot(white,color=color.white) plot(blue,color=color.blue) //} //MACD Calculation { fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false) // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //} //SIGMOID Bottom { timeAdjust = 300/sma(close,500) //} //RSI bottom { len = input(14, minval=1, title="Length") up = rma(max(change(src), 0), len) down = rma(-min(change(close), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //} //Entry and exit conditions { //Sell conditions bigVolume = sma(volume,30)*volumesens sellcond1 = crossunder(exhaustion,exhaustionSma) and volume > bigVolume sellcond2 = crossunder(macd,signal) and volume > bigVolume midtermsellcond1 = crossunder(blue,white) longtermsellcond1 = white < red //Buy conditions buycond = crossover(exhaustion,exhaustionSma) and not longtermsellcond1 buycond2 = rsi < 30 buycond3 = crossover(blue,white) and longtermsellcond1 //} //Backtest Run Buy/Sell Commands { strategy.entry("buycond",true, when=buycond and bigVolume) strategy.entry("buycond2",true, when=buycond2 and bigVolume) strategy.close_all(when=sellcond1,comment="short term sell signal 1") strategy.close_all(when=midtermsellcond1, comment="mid term sell signal 1") strategy.close_all(when=longtermsellcond1, comment="long term sell signal 1") strategy.close_all(when=sellcond2, comment="short term sell signal 2") plot(strategy.position_size) //Sell on last tested day (only for data collection) //strategy.close_all(when=not inDateRange) //}