리소스 로딩... 로딩...

멀티존 SMC 이론에 기반한 지능형 트렌드 다음 전략

저자:차오장, 날짜: 2024-11-29 15:38:01
태그:SMASMCOBEQ

img

전반적인 설명

이 전략은 스마트 머니 콘셉트 (SMC) 이론에 기초하여 시장을 평형, 프리미엄 및 할인 (discount) 이라는 세 가지 주요 가격 구역으로 나누어 종합적인 트렌드 트레이딩 시스템을 구축합니다. 50 기간 간 간단한 이동 평균 (SMA) 과 오더 블록 분석을 결합하여 서로 다른 지역 간의 가격 움직임을 통해 거래 기회를 식별합니다.

전략 원칙

핵심 논리는 몇 가지 핵심 요소를 포함합니다.

  1. 시장 범위를 결정하기 위해 마지막 8개의 촛불에서 스윙 하락과 하락을 계산합니다.
  2. 평형 구역은 오징어 높고 낮은 중간 지점으로 정의되며, 상위에는 프리미엄 구역, 아래에는 할인 구역입니다.
  3. 전체 트렌드 방향을 결정하기 위해 50주기 SMA를 사용합니다.
  4. 가격이 SMA보다 높을 때 할인 구역에서 구매 신호를 생성하고 가격이 SMA보다 낮을 때 프리미엄 구역에서 판매 신호를 생성합니다.
  5. 거래 신호를 확인하기 위해 20개의 촛불 내에서 가장 높고 가장 낮은 가격을 분석하여 주문 블록을 식별합니다.
  6. 유동성 구역으로 상승과 하락을 표시하여 잠재적 인 가격 반전 지점을 예측합니다.

전략적 장점

  1. 명확한 시장 단계 식별을 제공하는 구조화된 구역 분할 방법.
  2. 여러 신호 확인 메커니즘을 통해 구역, 트렌드 및 주문 블록의 세 번 확인.
  3. 실시간 주요 가격 수준 업데이트를 통해 시장 변화에 동적 적응.
  4. 스톱 로스 및 포지션 관리를 포함한 포괄적 인 리스크 관리 시스템
  5. 깔끔하고 효율적인 코드 구현, 유지보수 및 최적화 쉽습니다.

전략 위험

  1. 변동성 있는 시장에서 잠재적인 잘못된 파업 신호
  2. 지표는 역사적인 데이터에 의존하기 때문에 급격한 시장 반전에서 지연됩니다.
  3. 고정 기간 이동 평균은 모든 시장 환경에 적합하지 않을 수 있습니다.
  4. 리스크 통제를 위해 적절한 스톱 로스 설정이 필요합니다. 권장 위험 관리 조치:
  • 다른 시장 조건에 대한 동적 매개 변수 조정
  • 변동성 필터 추가
  • 엄격한 금전 관리 규칙의 시행
  • 정기적인 백테스팅 및 매개 변수 최적화

최적화 방향

  1. 적응 매개 변수를 입력합니다:
  • 시장의 변동성에 기초한 구역 범위를 동적으로 조정합니다.
  • 적응 기간 이동 평균을 구현
  1. 증강된 신호 필터링:
  • 볼륨 확인 메커니즘 추가
  • 동력 지표를 포함
  1. 리스크 관리 개선
  • 동적 스톱 로스 메커니즘을 구현
  • 위치 사이즈 알고리즘을 최적화
  1. 실행 효율을 높여:
  • 자원 소비를 줄이기 위해 계산 논리를 최적화
  • 더 빠른 응답을 위해 신호 생성 메커니즘을 개선

요약

이 전략은 지능적인 구역 분할 및 여러 신호 확인 메커니즘을 통해 강력한 추세 시스템을 구축합니다. 그것의 핵심 강점은 명확한 시장 구조 분석과 포괄적 인 위험 관리에 있습니다. 지속적인 최적화 및 개선을 통해 전략은 다양한 시장 조건에서 안정적인 성능을 약속합니다. 트레이더는 특정 시장 특성에 따라 매개 변수를 조정하고 실시간 거래에서 전략을 구현 할 때 엄격한 위험 통제를 유지하는 것이 좋습니다.


/*backtest
start: 2024-11-21 00:00:00
end: 2024-11-28 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@version=5
strategy("SMC Strategy with Premium, Equilibrium, and Discount Zones", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Instellingen voor Swing High en Swing Low ===
swingHighLength = input.int(8, title="Swing High Length")
swingLowLength = input.int(8, title="Swing Low Length")

// Vind de recente swing highs en lows
var float swingHigh = na
var float swingLow = na

if (ta.highestbars(high, swingHighLength) == 0)
    swingHigh := high

if (ta.lowestbars(low, swingLowLength) == 0)
    swingLow := low

// Bereken Equilibrium, Premium en Discount Zones
equilibrium = (swingHigh + swingLow) / 2
premiumZone = swingHigh
discountZone = swingLow

// Plot de zones op de grafiek
plot(equilibrium, title="Equilibrium", color=color.blue, linewidth=2)
plot(premiumZone, title="Premium Zone (Resistance)", color=color.red, linewidth=1)
plot(discountZone, title="Discount Zone (Support)", color=color.green, linewidth=1)

// === Simple Moving Average om trendrichting te bepalen ===
smaLength = input.int(50, title="SMA Length")
sma = ta.sma(close, smaLength)
plot(sma, title="SMA", color=color.orange)

// === Entry- en Exitregels op basis van zones en trendrichting ===

// Koop- en verkoopsignalen
buySignal = close < equilibrium and close > discountZone and close > sma // Prijs in discount zone en boven SMA
sellSignal = close > equilibrium and close < premiumZone and close < sma // Prijs in premium zone en onder SMA

// Order Blocks (Eenvoudig: hoogste en laagste kaars binnen de laatste 20 kaarsen)
orderBlockLength = input.int(20, title="Order Block Length")
orderBlockHigh = ta.highest(high, orderBlockLength)
orderBlockLow = ta.lowest(low, orderBlockLength)

// Koop- en verkoopsignalen met order block bevestiging
buySignalOB = buySignal and close >= orderBlockLow // Koop in discount zone met ondersteuning van order block
sellSignalOB = sellSignal and close <= orderBlockHigh // Verkoop in premium zone met weerstand van order block

// === Uitvoeren van Trades ===
if (buySignalOB)
    strategy.entry("Buy", strategy.long)
    
if (sellSignalOB)
    strategy.entry("Sell", strategy.short)

// === Plots voor visuele feedback ===
plotshape(buySignalOB, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignalOB, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// === Liquiditeitsjachten aangeven ===
// Simpel: markeer recente swing highs en lows als liquiditeitszones
liquidityZoneHigh = ta.valuewhen(high == swingHigh, high, 0)
liquidityZoneLow = ta.valuewhen(low == swingLow, low, 0)

// Markeer liquiditeitszones
plot(liquidityZoneHigh, title="Liquidity Zone High", color=color.red, linewidth=1, style=plot.style_cross)
plot(liquidityZoneLow, title="Liquidity Zone Low", color=color.green, linewidth=1, style=plot.style_cross)


관련

더 많은