이 전략은 여러 시간 프레임을 이용한 이동 평균선 교차 원리에 적응한 트렌드 추적 전략이다. 이 전략은 동시에 빠른 선, 느린 선 및 MACD 지표를 사용하여 거래 신호 판단을 하고, 중장선 트렌드의 추가적인 이익을 취하는 것을 목표로 한다.
이 전략은 주로 두 개의 이동평등선 교차 시스템과 MACD 지표의 조합 응용에 기초한다. 두 개의 이동평등선 교차 시스템은 단기 EMA와 느린 EMA로 구성되어 있으며, 각각 단기 평균선과 장기 평균선을 계산한다. 빠른 선에서 느린 선을 통과 할 때 구매 신호가 발생하여 거래가 하락으로 변하는 것을 나타낼 수 있으며, 다중 포지션을 구축 할 수 있다. 빠른 선 아래 느린 선을 통과 할 때 판매 신호가 발생하여 거래가 하락으로 변하는 것을 나타냅니다.
이 전략은 양 이동평균선의 추세 판단과 MACD의 동력 전환 신호를 결합하여 중장선 추세 이득을 얻는 동시에 위조 돌파구를 효과적으로 필터링 할 수 있습니다. 구체적으로, 빠른 선에서 느린 선을 통과하면 MACD 기둥이 동시에 녹색으로 변하면 더 신뢰할 수있는 다중 신호를 생성합니다. 반대로, 빠른 선 아래 느린 선을 통과하면 MACD 기둥이 동시에 빨간색으로 변하면 더 강한 공백 신호를 생성합니다.
또한, 이 전략은 변수 자율성을 도입한다. 변수 최적화 과정에서, 빠른 선주기, 느린 선주기 및 MACD 변수는 다른 시간 단위의 효과에 따라 자동으로 조정되어, 전략이 다른 상황 환경에서 최적의 성능을 얻을 수 있도록 보장한다.
복합 쌍방향 시스템과 MACD 지표, 복합적인 여러 요소의 의사결정을 하고, 잡음과 거짓 신호에 의해 오도되는 것을 피한다.
자기 적응 파라미터 기능을 적용하여 전략이 동적으로 변수를 조정하여 시장 변화에 적응하고 거래 결정을 자동으로 최적화 할 수 있습니다.
중장선 트렌드를 잘 파악하고, 흔들리는 시장의 가짜 돌파구를 필터링하여, 트렌드 상황에서 추가 수익을 얻습니다.
시간 프레임 분석을 통해 더 큰 수준의 트렌드 방향을 파악할 수 있습니다.
전략 논리는 명확하고 간단하며, 코드 구조는 최적화되어 있으며, 이해하기 쉽고 수정할 수 있으며, 다양한 요구에 맞게 조정된다.
쌍평선 시스템은 카튼 위프사우의 위험이 있으며, 충격적인 상황에는 적합하지 않으며, 트렌드가 비교적 명백한 주식과 기간을 선택해야 한다.
MACD는 지연성이 있어 급격한 변화의 추세를 추적하는 데 적합하지 않으며 다른 지표와 함께 사용해야합니다.
매개 변수 최적화에는 충분한 회수 주기가 필요하며, 과잉 맞춤을 피하기 위해 엄격한 위험 평가가 필요합니다.
장선 포지션은 급격한 사건으로 인한 시스템적 위험에 주의를 기울이고, 적시에 피해를 막아야 한다.
적응 파라미터 기능이 지나치게 최적화되어 있을 가능성이 있으며, 너무 자주 파라미터 조정되는 것을 피하기 위해 충분히 검증해야 한다.
다양한 급속도 평균선 조합을 테스트할 수 있으며, 소음을 필터링하고 추세에 부합하는 평균선 파라미터를 선택할 수 있다.
MACD의 다중 모음 변수를 시험하여, 반응 경향 전환점을 앞당기는 모음 변수를 찾을 수 있다.
트렌드 지표를 필터로 추가하여 트렌드가 불분명할 때 거래를 중지하고 휘파람을 피하십시오.
단위 손실을 제어하기 위해 이동 상쇄 또는 상쇄 상쇄를 설정하여 상쇄 메커니즘을 도입 할 수 있습니다.
기계 학습 알고리즘을 추가하여 더 많은 데이터 훈련 변수를 사용하여 규칙에 적응하여 전략 안정성을 향상시킬 수 있습니다.
여러 품종의 중매를 시도할 수 있고, 관련 품종들 사이에서 거래 포트폴리오를 형성하여 시장의 체계적인 위험을 분산시킬 수 있다.
이 전략은 이중 이동 평균선 교차와 MACD 동력 지표를 통합하여 트렌드 추적과 리듬 제어의 유기적 결합을 실현한다. 자율 적응 파라미터의 도입은 전략을 더 거칠게 만들고 시장 변화에 순조롭게 적응할 수 있다. 단일 지표 전략에 비해 이 전략은 중장선 추세에서 풍부한 거래 수익을 얻을 수 있는 강력한 의사결정 효과를 형성한다. 다음 단계는 파라미터 최적화, 위험 제어 등의 방법으로 전략의 효과를 더욱 강화할 수 있다.
/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// To enable alerts: Change 'Strategy' to read 'Study' below and you also need to comment out lines 43 and 47 - Strategy code
// strategy(title="Riz Coloured MACD", shorttitle="Riz MACD" , initial_capital=5000, default_qty_value=3 )
//study(title="Riz Coloured MACD", shorttitle="Riz MACD")
source = close
fastLength = input(21, minval=1), slowLength=input(55,minval=1)
signalLength=input(9,minval=1)
MACDCandlesCheckedBack=input(6,minval=1)
MACDTolerance=input(4,minval=1)
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
signal = ema(macd, signalLength)
hist = macd - signal
// ====== BASIC COLOURING - IF HISTOGRAM IS HIGHER THAN PREVIOUS 2 CANDLES THEN WE ARE TICKING UP and VISA VERSA ============//
isTickingUp = hist > hist[1] and hist > hist[2] //and hist > hist[3]
isTickingDown = hist < hist[1] and hist < hist[2] // and hist < hist[3]
// ======= MACD STRATEGY CODE ========== //
// Check if MACD is ticking in the right direction to take a trade - adding 1 at the end means it starts at -1 so not to include the current candle
MACDHistHighestHigh= highest(hist, MACDCandlesCheckedBack)[1]
MACDHistLowestLow = lowest(hist, MACDCandlesCheckedBack)[1]
MACDConfirmsLong() => (hist - MACDHistLowestLow) > MACDTolerance
MACDConfirmsShort() => (MACDHistHighestHigh - hist) > MACDTolerance
plot(macd, title="MACD", color=blue, linewidth=3)
plot(signal, title="SIGNAL", color=orange, linewidth=3)
// === SIMPLE COLOURING BASED ON LAST 2 CANDLES - EASY TO REFERENCE IN DAY TO DAY MACD USE ====//
plot(hist, title="HIST", color=isTickingDown ? fuchsia : isTickingUp ? lime : green, linewidth=3, style=histogram)
// ==== ALTERNATIVE COLOURING FOR PLOT BASED ON STRATEGY SETTINGS INSTEAD
//plot(hist, title="HIST", color=MACDConfirmsLong() ? lime : MACDConfirmsShort() ? fuchsia : green, linewidth=3, style=histogram)
// === STRATEGY - ENTER POSITIONS - COMMENT OUT TO ENABLE ALERTS === //
strategy.entry(id = "Long", long = true, when = MACDConfirmsLong()) // use function to decide when to go long
strategy.entry(id = "Short", long = false, when = MACDConfirmsShort())
// === CREATE ALERT CONDITIONS === //
alertup = MACDConfirmsLong()
alertdown = MACDConfirmsShort()
alertcondition(alertup, title='MACD Long', message='Riz MACD says go LONG!')
alertcondition(alertdown, title='MACD Short', message='Riz MACD says go SHORT!')