모멘텀 추적 거래 전략 (Momentum Tracking Trading Strategy) 은 주로 시장 모멘텀 트렌드를 추적하고 여러 기술적 지표를 보조 판단으로 사용하는 자동화 거래 전략이다. 이 전략은 현재 시장의 주요 자금의 방향과 강도를 결정하기 위해 K 라인 정보를 분석하고, 그 다음 거래 시그널을 발행하여 거래량 가격 및 이동 평균과 같은 지표를 기반으로 트렌드 추적을 달성합니다.
전체적으로, 이 전략은 중장기 트렌드 트레이딩에 적합하며, 시장 트렌드를 효과적으로 포착하고 더 높은 단일 수익을 추구하기 위해 거래 빈도를 줄일 수 있습니다. 동시에 전략 매개 변수를 최적화 한 후 단기 거래에도 사용할 수 있습니다.
모멘텀 추적 전략의 핵심은 시장의 주요 자금의 방향을 판단하는 것입니다. 전략은 실시간으로 시장의 변동성을 모니터링하기 위해 ATR 지표를 계산합니다. 변동성이 증가하면 주요 자금이 축적되거나 분배되는 것을 의미하며 전략은 주요 자금이 운영되는 시기를 피하기 위해 일시적으로 시장에서 벗어날 것입니다.
변동성이 약화되면 주요 힘 축적 또는 할당이 완료되어 전략이 주요 힘의 특정 방향을 결정하기 위해 시장에 다시 진입한다는 것을 의미합니다. 판단 방법은 시장의 지원 및 압력 위치를 계산하여 돌파구 징후가 있는지 확인하는 것입니다. 명확한 돌파구가있는 경우 주요 펀드가 그 방향을 선택했음을 증명합니다.
주요 기금의 방향을 결정한 후 전략은 또다시 검증을 위한 여러 보조 기술 지표를 도입하여 잘못된 판단을 피합니다. 특히 MACD, KDJ 및 기타 지표가 주요 기금의 방향과 일치하는지 여부를 결정하기 위해 계산됩니다.
주요 펀드와 보조 지표의 방향이 같은 방향으로 신호를 발산 할 때만 전략이 포지션을 열 수 있습니다. 이것은 거래 빈도를 효과적으로 제어하고 높은 확률로만 진입합니다.
포지션 개척 후, 모멘텀 추적 전략은 실시간으로 가격 변화를 추적하고, ATR 값의 확장을 스톱 로스 신호로 사용합니다. 이것은 시장이 다시 주요 운영 단계에 들어갔고, 함락되지 않도록 즉시 현금으로 빠져 나야한다는 것을 의미합니다.
또한, 가격 움직임이 특정 범위를 초과하고 그 다음 인하가 발생하면 Stop Loss도 발생합니다. 이것은 정상적인 기술적 인 인회전이며 위험 통제를 위해 즉시 중단해야합니다.
모멘텀 추적 전략의 가장 큰 장점은 높은 수준의 체계화 및 표준화입니다. 거래 논리는 명확하며 각 입출구에는 임의적인 거래 대신 명확한 원칙과 규칙이 있습니다.
이것은 이 전략의 복제성을 매우 강력하게 만듭니다. 사용자는 수동 개입없이 구성 후 장기 사용에 적용 할 수 있습니다.
이 전략에는 주요 전력 판단, 보조 검증, 스톱 손실 라인 설정 등과 같은 다단계 위험 관리 메커니즘이 내장되어 있으며, 비 체계적 위험을 효과적으로 제어 할 수 있습니다.
구체적으로, 전략은 높은 확률 상황에서만 포지션을 개설하고 손실을 최대한 피하기 위해 과학적 스톱 손실 지점을 설정합니다. 이것은 안정적인 자본 성장을 보장합니다.
단기 전략에 비해 모멘텀 트래킹 전략의 보유 기간은 길고 각 수익은 더 높습니다. 이는 전체 전략 수익을 더 안정적이고 지속 가능하게 만듭니다.
또한 전략은 중장기 트렌드를 추적하여 트렌드의 변동성을 완전히 포착 할 수 있습니다. 이것은 특히 주요 트렌드 시장에서 눈에 띄습니다.
모멘텀 추적 전략은 ATR 매개 변수, 침투 매개 변수, 스톱 손실 매개 변수 등 여러 매개 변수를 포함합니다. 이러한 매개 변수 사이에 특정 상관관계가 있으므로 최적의 매개 변수 조합을 찾기 위해 반복 테스트가 필요합니다.
부적절한 매개 변수 구성은 과도한 거래 빈도 또는 불충분한 위험 통제로 쉽게 이어질 수 있습니다. 이것은 사용자에게 전략 최적화에 대한 특정 경험을 필요로합니다.
전략이 주요 파워와 지표 신호를 결정하면 가격의 돌파구에 의존하여 확인됩니다. 그러나 침투 거래에서 잘못된 돌파구가 발생할 수 있습니다. 함락 될 확률을 높일 것입니다.
중요한 돌파구가 실패하면 더 큰 손실이 발생할 수 있습니다. 이것은 전략의 본질적인 약점입니다.
기계 학습 알고리즘을 사용하여 매개 변수 간의 상관관계를 자동으로 감지하고 최적의 매개 변수 조합을 찾을 수 있습니다. 이것은 수동 테스트보다 훨씬 효율적입니다.
구체적으로, 환경 오류 알고리즘은 전략 수익을 극대화하기 위해 강화 학습에 기반한 매개 변수를 지속적으로 반복하는 데 사용할 수 있습니다.
기존의 지표, 예를 들어 거래량 지표, 자본 흐름 지표 등에 기반한 더 많은 보조 필터를 도입하여 신뢰성을 높이기 위해 돌파구 신호를 3번 또는 4번 검증할 수 있습니다.
그러나 너무 많은 필터도 기회를 놓칠 수 있습니다. 필터 강도는 균형을 잡아야합니다. 또한 필터 자체는 상관관계를 피해야합니다.
운동 추적 전략을 다른 전략과 결합하여 서로 다른 전략의 장점을 활용하여 직각성을 달성하고 전반적인 안정성을 향상시킵니다.
예를 들어, 단기적인 반전 전략을 적용하고 돌파구를 발견한 후 반전 거래를 시작하면 더 많은 이익을 얻을 수 있습니다.
일반적으로 모멘텀 추적 거래 전략은 권장 할 가치가있는 체계화된 트렌드 추적 전략입니다. 명확한 거래 논리, 충분한 위험 통제가 있으며 사용자에게 안정적이고 효율적인 투자 수익을 가져올 수 있습니다.
그러나 전략 자체에는 몇 가지 내재된 약점도 있습니다. 이 전략의 효과를 극대화하기 위해 사용자가 매개 변수를 최적화하고 전략을 통합 할 수있는 능력을 갖추어야합니다. 전반적으로 모멘텀 추적 전략은 어느 정도의 기초를 가진 양적 열광자들에게 적합한 양적 제품입니다.
/*backtest start: 2023-12-12 00:00:00 end: 2023-12-15 01:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Created by frasmac2k Strategy credit to Alex Morris //@version=5 strategy("Mechanical", shorttitle="MECH", overlay=true) // Get the current date and time currentYear = year currentMonth = month currentDay = dayofmonth // Create a timestamp for the present date and time currentTimestamp = timestamp(currentYear, currentMonth, currentDay) // Define time interval for backtesting dStart = input(timestamp('2023-07-01'), title='Set Start date', tooltip='Select a start date to run the script from') // Define direction of strategy direction = input.string('Forward',title='Direction', tooltip='Forward will go LONG on a Green anchor candle. Inverse will go short on a Green anchor candle and vice versa for Red candle', options=['Forward', 'Inverse']) // Define the anchor hour as user input with a range of 0 to 23 anchorHour = input.int(11, title="Anchor Hour", tooltip='Set the hour to trade', minval=0, maxval=23) // Define the take profit and stop loss in pips takeProfitPips = input.int(10, title='Define TP Pips', tooltip='How many pips do you want to set TP. Choose a sensible value related to the instrument', minval=5) stopLossPips = input.int(10,'Define SL Pips', tooltip='How many pips do you want to set SL. Choose a sensible value related to the instrument', minval=5) // Define Tick size tick10p = input.int(100, title='tick size', tooltip='Choose how many ticks equal 10 pips. This can vary by broker so measure 10 pips on the chart and select how many ticks that equates to. Forex is typically 100. Some instruments such as indices can be 1000', options=[100,1000]) // Declare TP/SL variables var float takeProfit = na var float stopLoss = na // Calculate take profit and stop loss levels in ticks if tick10p == 100 takeProfit := takeProfitPips * 10 stopLoss := stopLossPips * 10 if tick10p == 1000 takeProfit := takeProfitPips * 100 stopLoss := stopLossPips * 100 // Declare offset time var int offset = na if currentTimestamp > timestamp('2023-10-29') offset := 4 else offset := 5 //adjust for exchange time anchorHour := anchorHour - offset // Define the anchor hour as user input with a range of 0 to 23 tradeHour = anchorHour // Define logical check for strategy date range isStratTime = true // Calculate the time condition for placing the order at the user-defined hour (start of the next hour) isTradeTime = true // Logic condition for forwards or inverse isForward = direction == 'Forward' isInverse = direction == 'Inverse' // Declare entry condition variables var bool longCondition = na var bool shortCondition = na // Declare and initialize variables for anchorCandle open and close prices var float anchorOpen = na var float anchorClose = na var float tradeOpen = na var float tradeClose = na // Set logic by direction if isForward // Strategy logic if isTradeTime and isStratTime //Obtain candle open/close anchorOpen := open anchorClose := close // Define entry conditions longCondition := anchorClose > anchorOpen shortCondition := anchorClose < anchorOpen // Entry logic if longCondition strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') if shortCondition strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') if isInverse // Strategy logic if isTradeTime and isStratTime //Obtain candle open/close anchorOpen := open anchorClose := close // Define entry conditions shortCondition := anchorClose > anchorOpen longCondition := anchorClose < anchorOpen // Entry logic if longCondition strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') if shortCondition strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') // Define the time range for the background shade startHour = anchorHour startMinute = 0 endHour = anchorHour endMinute = 0 // Check if the current time is within the specified range isInTimeRange = (hour == startHour and minute >= startMinute) or (hour == endHour and minute <= endMinute) or (hour > startHour and hour < endHour) // Define the background color for the shade backgroundColor = color.new(color.red, 90) // Apply the background shade bgcolor(isInTimeRange ? backgroundColor : na)