이 전략은 MACD 지표와 스토카스틱 지표의 조합을 기반으로 한 암호화폐 거래 전략이다. 암호화폐 시장의 트렌드 변화를 파악하기 위해 비트코인 가격의 MACD 지표를 계산하고 스토카스틱 지표를 적용하여 거래 신호를 생성한다.
이 전략은 먼저 MACD 지표를 계산합니다. MACD는 트렌드를 따르는 지표인 이동 평균 컨버전스 디버전스를 의미합니다. 빠른 선과 느린 선으로 구성되며, 빠른 선은 단기 지수 이동 평균이며 느린 선은 장기 지수 이동 평균입니다. 빠른 선이 느린 선 위에 넘을 때 황금 십자 신호를 생성하여 상승 시장을 나타냅니다. 빠른 선이 느린 선 아래에 넘을 때 죽음의 십자 신호를 생성하여 하향 시장을 나타냅니다.
MACD 지표를 계산한 후 전략은 MACD 자체에 스토카스틱 지표 %K를 적용합니다.
%K = (현행 종료 - N 기간 중 최저 최저) / (N 기간 중 최저 최저 - N 기간 중 최저 최저) * 100
스토카스틱 지표는 최근 범위에서 가격 편차를 반영합니다. 20-80 사이의 %K 변동은 가격이 통합 거래 중임을 나타냅니다. %K가 아래에서 20을 넘으면 구매 신호를 생성합니다. %K가 위에서 80을 넘으면 판매 신호를 생성합니다.
이 전략은 암호화폐 시장에서 거래하기 위해 MACD와 스토카스틱 %K의 거래 신호를 결합합니다. %K가 20을 넘으면 구매 신호를 생성하고 %K가 80을 넘으면 판매 신호를 생성합니다.
이 전략은 트렌드 분석과 과잉 구매 과잉 판매 지표를 결합하여 시장의 중요한 전환점을 효과적으로 식별 할 수 있습니다. MACD 또는 스토카스틱만을 사용하는 것과 비교하면 %K와 MACD의 조합은 거래 신호의 신뢰성을 높이고 잘못된 신호를 줄입니다.
또한, 이 전략은 주식 시장에서 일반적으로 사용되는 기술 지표를 암호화폐 거래에 적용합니다. 이것은 시장 간 응용 프로그램입니다. 이 지표는 디지털 통화 시장에서도 동일하게 적용되며, 암호화폐의 높은 변동성으로 인해 더 나은 성능을 보일 수도 있습니다.
이 전략의 가장 큰 위험은 암호화폐 시장의 높은 변동성이며, 이는 쉽게 잘못된 신호를 생성하고 거래 손실로 이어집니다. 또한, 지표가 신호를 생성 할 때 가격은 이미 크게 움직여서 초기 트렌드 신호를 놓칠 위험이 있습니다.
이러한 위험을 통제하기 위해 수익을 차단하고 추가 손실을 피하기 위해 이동 스톱 손실을 사용하는 것이 좋습니다. 동시에 매개 변수는 또한 다른 시간 프레임 길이를 사용하여 더 많은 잠재적 인 기회를 발견하기 위해 적절하게 조정 할 수 있습니다.
첫째, 전략은 이동 평균을 볼린저 밴드와 같은 변동성 지표와 결합하여 변동성 매개 변수를 설정하여 브레이크의 타당성을 확인하고 잘못된 신호를 피할 수 있습니다.
둘째, 기계 학습 모델을 도입하여 역사적 데이터에 대한 훈련을 수행하고 임의의 숲 또는 LSTM 신경 네트워크 모델을 구축하여 지표 신호의 효과를 판단하는 데 도움이 될 수 있습니다.
셋째, 스톱 로스 메커니즘을 추가합니다. 가격이 특정 범위 이상으로 불리한 방향으로 움직일 때 자동으로 스톱 로스를 트리거하여 위험을 제어합니다.
이 전략은 암호화폐 거래 전략을 수립하기 위해 MACD 지표와 스토카스틱 지표 %K를 결합하여 두 지표의 신호를 상호 확인하는 방법을 사용하여 암호화폐 거래 전략을 수립합니다. 이 조합 지표 전략은 신호의 정확성을 어느 정도 향상시킬 수 있습니다. 그러나 우리는 또한 소음 및 지연 효과를 도입 할 수있는 지표의 과다 복잡성의 위험을 인식해야합니다. 다른 시장 환경에 따라 적절한 매개 변수 조정 및 위험 통제는 더 나은 전략 성능을 얻기 위해 똑같이 중요합니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Schaff Trend Cycle Strategy", shorttitle="STC Backtest", overlay=true) fastLength = input(title="MACD Fast Length", defval=23) slowLength = input(title="MACD Slow Length", defval=50) cycleLength = input(title="Cycle Length", defval=10) d1Length = input(title="1st %D Length", defval=3) d2Length = input(title="2nd %D Length", defval=3) src = input(title="Source", defval=close) highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true) macd = ema(src, fastLength) - ema(src, slowLength) k = nz(fixnan(stoch(macd, macd, macd, cycleLength))) d = ema(k, d1Length) kd = nz(fixnan(stoch(d, d, d, cycleLength))) stc = ema(kd, d2Length) stc := stc > 100 ? 100 : stc < 0 ? 0 : stc upper = input(75, defval=75) lower = input(25, defval=25) long = crossover(stc, lower) ? lower : na short = crossunder(stc, upper) ? upper : na long_filt = long and not short short_filt = short and not long prev = 0 prev := long_filt ? 1 : short_filt ? -1 : prev[1] long_final = long_filt and prev[1] == -1 short_final = short_filt and prev[1] == 1 //alertcondition(long_final, "Long", message="Long") //alertcondition(short_final,"Short", message="Short") //plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar) //plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar) strategy.entry("long", strategy.long, when = long ) strategy.entry("short", strategy.short, when = short)