
MACD 트렌드 추적 전략은 MACD 지표에 기반한 정량 거래 전략이다. 이 전략의 주요 아이디어는 MACD 지표의 골드 포크와 데드 포크 신호를 사용하여 트렌드의 방향을 판단하고 적절한 시기에 상위 또는 하위 포지션을 설정하는 것이다. MACD 라인이 신호 라인을 통과하고 0 축을 통과하면 상위 포지션을 열고, MACD 라인이 신호 라인을 통과하고 0 축을 통과하면 하위 포지션을 열는다. 이 전략은 최근 하락을 다중 상위 중지 지점으로 사용하고, 최근 하락을 하위 중지 지점으로 사용합니다.
MACD 트렌드 추적 전략의 핵심 원칙은 MACD 지표를 사용하여 트렌드 형성 및 반전을 포착하는 것입니다. MACD 지표는 두 개의 평행선 (빠른 평행선과 느린 평행선) 의 차원으로 구성되어 있으며, 신호 라인을 사용하여 거래 신호를 생성합니다. MACD 라인이 신호 라인을 통과하고 0 축을 통과하면 상향 트렌드가 형성되어 다단위 포지션이 열립니다. MACD 라인이 신호를 통과하고 0 축을 통과하면 하향 트렌드가 형성되어 공백 포지션이 열립니다.
MACD 트렌드 추적 전략은 트렌드 기회를 효과적으로 잡을 수 있으며, 트렌드 형성 초기부터 포지션을 구축하여 트렌드의 동력을 최대한 활용합니다.
이 전략은 동시에 MACD 금 포크 데드 포크와 0 축을 필터링 조건으로 사용하여 흔들리는 시장에서 가짜 신호를 잘 필터링 할 수 있습니다.
이 전략은 최근 눈에 띄는 하위/높이 지점을 스톱로즈 지점으로 사용하고, 단편 거래의 위험 지점을 통제할 수 있다.
전략 논리는 명확하고, 이해하기 쉽고, 구현하기 쉬우며, 초보자 학습에 적합하다.
MACD 지표는 본질적으로 지연 지표이며, 트렌드 반전의 초기에는 큰 회전이 발생할 수 있습니다.
전략: 불안정한 시장에서 거래가 자주 발생하여 거래 비용이 더 높을 수 있습니다.
스톱피스의 설정은 최근 눈에 띄는 고하점에 의존하며, 경우에 따라서는 너무 일찍 또는 너무 늦게 스톱피스가 발생할 수 있다.
이 전략은 포지션 관리와 자금 관리를 고려하지 않고 실제 적용에서는 구체적인 상황에 따라 최적화해야 한다.
신호의 신뢰성과 정확성을 높이기 위해 필터링 조건으로 다른 기술 지표 또는 가격 행동 패턴을 도입하는 것이 고려 될 수 있습니다.
ATR 또는 퍼센티지 스톱을 사용하여 위험을 더 잘 제어하는 것과 같은 스톱을 설정하는 방법을 최적화하십시오.
포지션 관리 및 자금 관리 메커니즘을 도입하여 시장의 변동성과 계정 이자 등에 따라 포지션 크기를 동적으로 조정하십시오.
다른 시장과 거래 기준에 대해, 파라미터를 최적화하고 조정하여 가장 적합한 파라미터 조합을 찾습니다.
MACD 트렌드 추적 전략은 MACD 지표의 특성을 활용하여 트렌드 기회를 포착하는 간단하고 효과적인 정량화 거래 전략이다. 이 전략은 논리적으로 명확하고 이해하기 쉽고 구현하기 때문에 초보자 학습에 적합하다. 그러나 실제 응용에서는 위험을 통제하는 데 주의를 기울이고 다른 방법과 결합하여 최적화 및 개선을 수행하여 더 안정적인 거래 성과를 얻습니다.
/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MACD trendfollow", shorttitle="MACD TF", overlay=true)
// switch = input(true, title="Enable MACD Bar Color")
// X001TK MACD trendfollow Strategy
//
//
// This strategy combines the non standart approach in MACD strategy to buy once to buy when the MACD value goes above Signal line and a zero line, to sell on the opposite condition.
//
//
// This strategy goes long if the MACD (3,9,5) goes above its Signal and above zero
//
// You can set Stop loss on the recent lowest low when long position is opened and recent highest hugh in short
//
//
// Exit rule is simple. We close the LONG position once MACD goes below Signal line and close SHORT on the opposite condition
//
//
//
//
// Input
fastMAlen = input(3, minval=1, title="MACD fast moving average")
slowMAlen = input(9,minval=1, title="MACD slow moving average")
signalMACDlen = input(5,minval=1, title="MACD signal line moving average")
// switch = input(true, title="Enable MACD Bar Color")
length = input(1, minval=1)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2002, title = "From Year", minval = 2000)
ToMonth = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2029, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 00, 00) // backtest finish window
window() => true // create function "within window of time"
// MACD Calculation
MACD = ema(close, fastMAlen) - ema(close, slowMAlen)
signalMACD = ema(MACD, signalMACDlen)
delta = MACD - signalMACD
fastMA = ema(close,fastMAlen)
slowMA = ema(close,slowMAlen)
// Colors
//bartrendcolor = MACD > signalMACD and MACD > 0? green : MACD < signalMACD and MACD < 0? red : MACD < signalMACD? gray : gray
//barcolor(switch?bartrendcolor:na)
barcolour=(MACD > signalMACD and MACD > 0)?#53B987:(MACD < signalMACD and MACD < 0)?#EB4D5C:na
barcolor(color=barcolour)
// === STRATEGY ===
// conditions
longCond = MACD > signalMACD and MACD > 0
XlongCond = MACD < signalMACD
ShortCond = MACD < signalMACD and MACD < 0
XShortCond = MACD > signalMACD
strategy.entry("long", strategy.long, when=longCond==true and window()==true )
//strategy.exit(id="Close Long", stop=longStop)//, limit=longTake)
strategy.close("long", when=XlongCond==true and window()==true)
strategy.entry("short", strategy.short, when=ShortCond==true and window()==true )
//strategy.exit(id="Close Short", stop=shortStop)//, limit=shortTake)
strategy.close("short", when=XShortCond==true and window()==true)
// === /STRATEGY ===