다중 지표 추세 발산 양적 거래 전략

BB RSI STOCH MFI EMA SMA
생성 날짜: 2025-02-08 16:08:01 마지막으로 수정됨: 2025-02-08 16:08:01
복사: 0 클릭수: 420
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 지표 추세 발산 양적 거래 전략

개요

이것은 여러 기술 지표에 기반한 트렌드 추적 및 탈선 거래 전략이다. 이 전략은 시장의 과매매 과매매 기회를 포착하기 위해 브린 밴드 (Bollinger Bands), 상대적으로 강한 지표 (RSI), 무작위 지표 (Stochastic) 및 자본 흐름 지표 (MFI) 를 종합적으로 사용하며, 여러 지표의 교차 확인을 통해 거래 신호의 신뢰성을 강화한다.

전략 원칙

이 전략은 거래 신호를 확인하기 위해 여러 층의 필터링 메커니즘을 사용합니다.

  1. 부린 띠를 ((20,2)) 가격 변동 영역의 참조로 사용하여, 가격이 부린 띠를 넘어선 경우 구매 신호 선별을 유발한다.
  2. RSI(3) 는 오버오프로로 설정되어 있습니다. 오버오프로 구간 ((85,15), RSI가 15을 상향으로 돌파하면 오버오프로 확인됩니다.
  3. 무작위 지표 ((10,3) 의 설정은 ((85,15) 이며, K 라인이 상향으로 15을 돌파할 때 추가로 오버셀을 확인한다.
  4. MFI의 10주기 EMA 이동은 자본의 흐름을 확인하는 데 사용되며, 상승 추세는 구매를 지원한다. 구매 조건이 동시에 충족되어야 합니다: 가격이 브린을 넘어간다면, RSI가 과매매를 넘어간다면, 무작위 지표가 과매매를 넘어간다면, 그리고 MFI가 상승하는 경우. 판매 조건은 반대입니다: 가격이 브린을 뚫고 궤도에 올랐고, RSI가 오버 바이를 뚫고, 무작위 지표가 오버 바이를 뚫고 니다.

전략적 이점

  1. 여러 기술 지표의 크로스 검증으로 가짜 신호를 크게 줄일 수 있다.
  2. 트렌드와 동력 지표가 결합되어 트렌드를 포착하고 반전을 경고할 수 있습니다.
  3. 빠른 RSI ((3주기) 를 사용하여 입점 시간 효율성을 높인다.
  4. MFI를 통해 자금의 흐름을 확인하고 거래의 신뢰성을 높여줍니다.
  5. 브린 띠를 변동 기준으로 사용하여 다른 시장 환경에 적응하십시오.

전략적 위험

  1. 여러 지표를 사용하면 신호 지연이 발생하고 최적의 진입 기회를 놓칠 수 있습니다.
  2. 수평 변동 시장에서 거래가 자주 발생할 수 있습니다.
  3. 빠른 RSI는 소음에 민감할 수 있다.
  4. 전략의 안정성을 검증하기 위해서는 더 많은 표본이 필요합니다. 다음의 위험 통제 조치를 취하는 것이 좋습니다.
  • 손해 차단장치
  • 단일 거래 규모를 제어합니다.
  • 다른 시장 환경에 따라 변수를 조정
  • 더 많은 시장 특성을 결합하여 거래를 필터링합니다.

전략 최적화 방향

  1. 동적으로 조정된 지표 변수:
  • 시장의 변동에 따라 부린 대역변수 조정
  • RSI 및 시장 주기 조정 및 무작위 지표의 주기적 설정
  1. 시장 환경 필터 추가:
  • 트렌드 강도 지표 추가
  • 교통량 변화를 고려하세요.
  1. 위험 관리 개선:
  • 동적 상쇄를 실현
  • 포지션 보유 기간 제한
  1. 신호 최적화:
  • 트렌드 확인 조건 추가
  • 최적화 지표 중량

요약하다

이 전략은 다중 지표 협동으로 비교적 완전한 거래 시스템을 구축한다. 전략의 핵심 장점은 다양한 유형의 지표의 교차 검증을 통해 신호 신뢰성을 향상시키는 데 있으며, 동향, 동적 및 자본 흐름과 같은 여러 시장 특성을 고려한다. 약간의 후퇴 위험이 있지만, 합리적인 매개 변수 최적화 및 위험 관리 조치를 통해 전략은 좋은 응용 잠재력을 가지고 있다.

전략 소스 코드
/*backtest
start: 2022-02-09 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
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/
// © ahmetkaratas4238

//@version=5
strategy("İzmir Stratejisi", overlay=true)

// **Bollinger Bantları Hesaplamaları**
bbLength = 20
bbMult = 2.0
basis = ta.sma(close, bbLength)
dev = bbMult * ta.stdev(close, bbLength)
upperBand = basis + dev
lowerBand = basis - dev

// **RSI (3,85,15) Hesaplaması**
rsiLength = 3
rsiUpper = 85
rsiLower = 15
rsi = ta.rsi(close, rsiLength)

// **Stochastic (10,3,85,15) Hesaplaması**
stochLength = 10
smoothK = 3
smoothD = 3
stochUpper = 85
stochLower = 15
k = ta.sma(ta.stoch(close, high, low, stochLength), smoothK)
d = ta.sma(k, smoothD)

// **Money Flow Index (MFI) Hesaplaması**
mfiLength = 14
mfi = ta.mfi(close, mfiLength)  // Hata düzeltildi: Artık yalnızca periyot alıyor
mfiTrendUp = ta.ema(mfi, 10) > ta.ema(mfi[1], 10)  // MFI yükseliş trendi
mfiTrendDown = ta.ema(mfi, 10) < ta.ema(mfi[1], 10) // MFI düşüş trendi

// **ALIM ŞARTLARI**
var bbBreakdown=false
var rsiBreakout=false
var stochBreakout=false
bbBreakdown := ta.crossunder(close,lowerBand)?true:bbBreakdown  // Fiyat BB altına sarktı mı?
rsiBreakout := ta.crossover(rsi, rsiLower)?true:rsiBreakout  // RSI 15 seviyesini yukarı kırdı mı?
stochBreakout := ta.crossover(k, stochLower)?true:stochBreakout  // Stochastic alt bandı yukarı kırdı mı?
buyCondition = bbBreakdown and rsiBreakout and stochBreakout and mfiTrendUp

// **SATIM ŞARTLARI**
var bbBreakup=false
var rsiBreakdown=false
var stochBreakdown=false
bbBreakup := ta.crossunder(close, upperBand)?true:bbBreakup  // Fiyat BB üst bandından aşağı kırdı mı?
rsiBreakdown := ta.crossunder(rsi, rsiUpper)?true:rsiBreakdown  // RSI 85 seviyesini aşağı kırdı mı?
stochBreakdown := ta.crossunder(k, stochUpper)?true:stochBreakdown  // Stochastic üst bandı aşağı kırdı mı?
sellCondition = bbBreakup and rsiBreakdown// and stochBreakdown and mfiTrendDown

if ta.crossunder(close,lowerBand)
    bbBreakup:=false
if ta.crossover(rsi, rsiLower)
    rsiBreakdown:=false
if ta.crossover(k, stochLower)
    stochBreakdown:=false

if ta.crossunder(close, upperBand)
    bbBreakdown:=false
if ta.crossunder(rsi, rsiUpper)
    rsiBreakout:=false
if ta.crossunder(k, stochUpper)
    stochBreakout:=false

// **Alım İşlemi Aç**
if buyCondition
    strategy.entry("Long", strategy.long)

// **Satım İşlemi Yap (Pozisyon Kapat)**
if sellCondition
    strategy.close("Long")

// **Bollinger Bantlarını Göster**
plot(upperBand, title="Üst BB", color=color.red)
plot(lowerBand, title="Alt BB", color=color.green)
plot(basis, title="Orta BB", color=color.blue)

// **Alım ve Satım Sinyallerini İşaretle**
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="AL")
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="SAT")