
이 양적 거래 전략은 시장에서 다른 거래 기회를 잡기 위해 여러 가지 기술 지표를 결합 한 포괄적 인 거래 시스템입니다. 이 시스템의 핵심은 Ichimoku 클라우드 그래프 (다기능 트렌드 지표), 상대적으로 강한 지수 (RSI) 및 거래량 가중 이동 평균 (VWMA) 의 세 가지 지표로 구성되어 있으며, 실제 변동幅度 (ATR) 동적 설정 중지 및 손실 중지 수준을 사용합니다.
이 전략의 핵심 원칙은 다중 지표 조합을 통해 거래 신호를 확인하여 신호의 신뢰도를 높이는 것이다. 구체적으로:
이치모쿠 클라우드 지도 구성 요소:
RSI 지표표준 14주기 RSI를 사용하여 가격 동력과 과매매 현상을 측정합니다.
VWMA 지표20주기 거래량 가중 이동 평균, 가격 추세를 확인하기 위한
ATR 지표: 시장의 변동성에 따라 적응하는 스톱로즈 및 스톱 스톱 레벨을 동적으로 설정하는 데 사용됩니다.
선택된 전략 유형에 따라, 시스템은 다른 신호 생성 논리를 활성화합니다:
거래 신호가 생성될 때마다, 시스템은 ATR 값에 따라 동적 중지 및 중지 수준을 설정합니다. ATR의 1.5 배의 중지 및 ATR의 3.0 배의 중지로 기본 설정하여 위험 관리와 시장의 변동성에 일치하도록합니다.
다차원 확인 메커니즘이치모쿠 클라우드 그래프, RSI, VWMA의 3가지 다른 종류의 지표들을 조합하여 트렌드, 동력, 거래량에서 3차원 거래 신호를 확인하는 것은 가짜 신호의 위험을 현저히 낮춘다.
매우 적응력이 좋다전략 패키지는 4가지의 다른 하위 전략을 제공하며, 다양한 시장 환경에 적응할 수 있으며, 트렌드 상태에서 격변 시장에 대한 전략 선택이 있습니다.
동적 위험 관리: ATR 지표를 사용하여 스톱 및 스톱 레벨을 동적으로 설정하여 위험 관리가 시장의 변동성에 자동으로 조정하여 고정 포인트 스톱 스톱이 다양한 변동 환경에서 부적응하는 것을 피합니다.
반복 방지 신호 메커니즘: 이전 신호의 상태를 추적함으로써 (prevSignal 변수) 동일한 방향으로 연속적으로 반복되는 신호를 피하고 불필요한 거래 비용을 줄입니다.
시각적 도움말: 각 거래 신호와 그 출처 전략을 표기하여 차트에 표시하여 추적 분석과 실시간 모니터링을 가능하게 한다.
모듈 디자인: 코드 구조가 명확하고 기능 모듈이 분리되어 후속 유지 및 확장이 용이합니다. 예를 들어 새로운 정책 변형을 쉽게 추가하거나 기존 정책 변수를 조정할 수 있습니다.
매개변수 민감도: 전략은 여러 가지 기술 지표를 사용하며, 각 지표에는 자신의 파라미터 설정이 있습니다. 이것은 전략의 파라미터 선택에 대해 민감하게 만듭니다. 다른 시장이나 시간 프레임은 최적의 효과를 얻기 위해 다른 파라미터 조합을 필요로 할 수 있습니다.
신호 지연 위험기술 지표는 본질적으로 뒤쳐져 있으며, 특히 이동 평균 지표는 트렌드 전환점 근처의 늦은 진입을 초래할 수 있습니다. 해결책은 몇 가지 선두 지표를 추가하거나 특정 지표의 주기를 줄여서 신호의 적당성을 높이는 것입니다.
과도한 거래의 위험네 가지 전략: 특정 시장 조건에서 빈번한 신호가 발생하여 과도한 거래가 발생할 수 있습니다. 해결책은 신호 필터링 조건을 추가하거나 거래 냉각 기간 메커니즘을 도입하여 짧은 시간에 거래 빈도를 제한하는 것입니다.
클라우드 그래프는 복잡성을 설명합니다.이치모쿠 클라우드 지도는 비교적 복잡한 지표 시스템이며, 올바르게 해석하는 데는 경험이 필요합니다. 이치모쿠 클라우드 지도의 사용 원칙을 깊이 배우거나, 클라우드 지도의 사용 방식을 단순화하여 핵심 구성 요소만 사용하는 방법을 고려하는 것이 해결책입니다.
RSI는 판단을 단순화합니다.: 코드에서 RSI 이탈의 판단은 단순화 알고리즘을 사용하여 모든 유효한 이탈 형태를 잡을 수 없습니다. 해결책은 이탈 검출 알고리즘을 개선하여 더 정확한 극치 판단 방법을 사용하는 것입니다.
정지 손실 비율을 고정: ATR를 사용하여 동적으로 스톱포트 지점을 설정하지만, 스톱포트 스톱포트의 ATR 배수는 고정되어 모든 시장 조건에 적합하지 않을 수 있습니다. 해결책은 시장의 변동 특성이나 전략 유형에 따라 ATR 배수를 동적으로 조정하거나 이동 스톱포트 전략을 시행하는 것입니다.
탈선 검출 알고리즘 개선: 현재 코드의 RSI 이탈 검사는 단순화 된 방법을 사용하여 더 복잡한 피크밸리 탐지 알고리즘을 구현하여 이탈 식별의 정확도를 향상시킬 수 있습니다. 구체적으로 ZigZag 지표 또는 지형 이론을 사용하여 가격과 지표의 중요한 전환점을 식별하고, 그 다음 이들 지점의 상대적 위치를 비교하여 이탈을 판단 할 수 있습니다.
시간 필터를 추가합니다.많은 시장은 다른 시간대에 다른 특성을 나타냅니다. 시간 필터 조건을 추가하여 특정 거래 시간에 특정 전략을 활성화하거나 비활성화하여 비효율적인 거래 시간을 피할 수 있습니다.
볼륨 증가 확인: 전략은 VWMA를 사용하지만, 신호 발생시의 거래량이 이전 N주기의 평균 거래량보다 높을 것을 요구하는 등의 직접적인 거래량 분석을 추가하여 신호 신뢰성을 향상시킬 수 있다.
적응형 매개변수 구현핵심 매개 변수 (RSI 마이너스, ATR 배수 등) 를 시장의 변동에 따라 자동으로 조정하도록 설계합니다. 예를 들어, 높은 변동성 시장에서 더 느슨한 RSI 마이너스 및 더 큰 중지 거리를 사용하거나 그 반대의 경우.
트렌드 강도 필터에 가입하세요: ADX와 같은 트렌드 강도 지표를 도입하여 트렌드 강도가 충분히 있을 때만 트렌드 추적 전략을 적용하고, 트렌드가 약할 때 역전 또는 충격 전략으로 전환하여 전략의 적응성을 향상시킵니다.
부분 포지션 관리 구현: 현재 전략은 고정된 포지션 크기를 사용한다 (기계 자금의 10%를 기본으로), 신호 강도, 시장의 변동성 또는 계정 자금 곡선에 기반한 동적 포지션 관리를 구현할 수 있다. 예를 들어, 신호가 강할 때 포지션을 증가시키고, 높은 변동성 환경에서 포지션을 감소시킨다.
추적 손실 기능 추가: 고정 ATR 배수의 중지 이외에, 가격 유리한 방향으로 움직일 때 자동으로 중지 수준을 조정하는 트레일링 스톱 기능을 구현하고, 수익의 일부를 잠금하는 동시에 가격에 충분한 호흡 공간을 제공합니다.
기계학습을 통합하는 방법: 기계 학습 알고리즘을 사용하여 전략 변수를 최적화하거나 신호 필터링을 수행하는 것을 고려하십시오. 예를 들어, 무작위 숲을 사용하거나 벡터 기계 분류기를 지원하여 각 신호의 신뢰성을 평가하여 낮은 품질의 신호를 필터링하십시오.
다중 지표 통합 거래 시스템은 기능이 포괄적이고, 설계가 유연한 양적 거래 전략 제품군으로, 이치모쿠 클라우드 그래프, RSI, VWMA의 3대 기술 지표를 통합하고, ATR의 동적 위험 관리와 결합하여, 상인에게 다양한 시장 환경에 대응하는 솔루션을 제공합니다. 이 전략의 주요 장점은 다차원 신호 확인 메커니즘, 전략 선택의 유연성 및 동적 위험 관리 방법에 있습니다.
동시에, 우리는 전략에 존재하는 위험을 인식해야 합니다. 예를 들어, 변수 민감성, 신호 지연 및 이탈 판단 간소화 같은 문제. 이러한 위험에 대응하기 위해, 우리는 여러 가지 최적화 방향을 제안합니다.
전체적으로, 이 전략 시스템은 거래자에게 실제 거래에 직접 적용할 수 있는 강력한 거래 프레임 워크를 제공하며, 전략의 추가 개발 및 사용자 정의에 대한 기초가 될 수 있습니다. 지속적인 최적화와 조정으로, 이 전략은 다양한 시장 환경에서 안정적인 거래 성능을 얻을 수 있습니다.
/*backtest
start: 2024-06-30 00:00:00
end: 2025-06-28 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":50000000}]
*/
//@version=5
strategy("Ichimoku + RSI + VWMA Strategy Suite (w/ ATR SLTP)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === STRATEJI SECIMI === //
strategy_type = input.string("IchimokuRSITrend", options=["IchimokuRSITrend", "VWMA_RSIBounce", "DivergenceReversal", "FlatBreakout"], title="Strateji Tipi")
// === ATR PARAMETRESİ === //
atrLength = input.int(14, title="ATR Periyodu")
atrMultSL = input.float(1.5, title="Stop-Loss x ATR")
atrMultTP = input.float(3.0, title="Take-Profit x ATR")
atr = ta.atr(atrLength)
// === GÖSTERGE PARAMETRELERİ === //
rsi = ta.rsi(close, 14)
vwma = ta.vwma(close, 20)
// Ichimoku bileşenleri
tenkan = (ta.highest(9) + ta.lowest(9)) / 2
kijun = (ta.highest(26) + ta.lowest(26)) / 2
senkouSpanA = (tenkan + kijun) / 2
senkouSpanB = (ta.highest(52) + ta.lowest(52)) / 2
priceAboveCloud = close > senkouSpanA and close > senkouSpanB
priceBelowCloud = close < senkouSpanA and close < senkouSpanB
tenkanAboveKijun = tenkan > kijun
tenkanFlat = math.abs(tenkan - kijun) < 1.0
// RSI Divergence Etiketi (basit taklit)
rsiBullishDiv = ta.lowestbars(rsi, 5) < ta.lowestbars(rsi, 5)[1] and ta.lowestbars(close, 5) > ta.lowestbars(close, 5)[1]
rsiBearishDiv = ta.highestbars(rsi, 5) > ta.highestbars(rsi, 5)[1] and ta.highestbars(close, 5) < ta.highestbars(close, 5)[1]
// === SİNYAL TANIMLARI === //
var string prevSignal = "none"
longSignal = false
shortSignal = false
// === STRATEJİ 1: Ichimoku Bulut + RSI Momentum === //
if strategy_type == "IchimokuRSITrend"
longSignal := priceAboveCloud and tenkanAboveKijun and rsi > 50 and close > vwma and prevSignal != "long"
shortSignal := priceBelowCloud and not tenkanAboveKijun and rsi < 50 and close < vwma and prevSignal != "short"
// === STRATEJİ 2: VWMA Cross + RSI Aşırı Satım === //
if strategy_type == "VWMA_RSIBounce"
longSignal := ta.crossover(close, vwma) and rsi > 35 and tenkanAboveKijun and prevSignal != "long"
shortSignal := ta.crossunder(close, vwma) and rsi < 65 and kijun > tenkan and prevSignal != "short"
// === STRATEJİ 3: RSI Divergence + Ichimoku Reversal === //
if strategy_type == "DivergenceReversal"
longSignal := rsiBullishDiv and tenkanAboveKijun and vwma > close and prevSignal != "long"
shortSignal := rsiBearishDiv and kijun > tenkan and vwma < close and prevSignal != "short"
// === STRATEJİ 4: Flat Zone + RSI Breakout === //
if strategy_type == "FlatBreakout"
longSignal := tenkanFlat and rsi > 55 and close > vwma and prevSignal != "long"
shortSignal := tenkanFlat and rsi < 45 and close < vwma and prevSignal != "short"
// === STRATEJI GİRİŞ/ÇIKIŞLARI === //
if longSignal
strategy.entry("Long", strategy.long)
strategy.exit("TP/SL Long", from_entry="Long", stop=close - atr * atrMultSL, limit=close + atr * atrMultTP)
label.new(bar_index, low, strategy_type + " → LONG", style=label.style_label_up, color=color.green, textcolor=color.white)
prevSignal := "long"
if shortSignal
strategy.entry("Short", strategy.short)
strategy.exit("TP/SL Short", from_entry="Short", stop=close + atr * atrMultSL, limit=close - atr * atrMultTP)
label.new(bar_index, high, strategy_type + " → SHORT", style=label.style_label_down, color=color.red, textcolor=color.white)
prevSignal := "short"