이 전략은 움직이는 평균 크로스오버와 촛불 패턴 인식 등 고전적인 기술 분석 도구를 결합한 지능형 거래 시스템이다. 이 전략은 촛불 그림자와 몸 사이의 관계를 분석함으로써 잠재적인 시장 전환점을 식별하며, 이중 이동 평균 크로스오버 신호를 통합한다. 이 시스템은 가격 추세에 초점을 맞추는 것뿐만 아니라 평균 범위를 계산하여 더 나은 적응력을 위해 거래 매개 변수를 동적으로 조정한다.
핵심 논리는 두 가지 주요 구성 요소로 구성됩니다.
촛불 패턴 인식 모듈은 그림자와 몸 사이의 비율을 계산하여 잠재적 인 반전 신호를 식별합니다. 시스템은 신호 품질을 최적화하기 위해 그림자 배수자 (wickMultiplier) 및 몸 비율 (bodyPercentage) 에 대한 조정 가능한 매개 변수를 포함합니다. 촛불이 자격을 갖춘 긴 상부 또는 하부 그림자를 표시하면 시스템이 대응하는 긴 또는 짧은 신호를 생성합니다.
이중 이동 평균 크로스오버 시스템은 트렌드 지표로 14주기 및 28주기 단순 이동 평균 (SMA) 을 사용합니다. 단기 MA가 장기 MA보다 높을 때 긴 신호가 생성되며, 단기 MA가 장기 MA보다 낮을 때 짧은 신호가 발생합니다.
이 전략은 촛불 패턴 인식과 이동 평균 크로스오버 시스템을 결합하여 비교적 완전한 거래 의사 결정 프레임워크를 구축합니다. 이 전략의 강점은 엄격한 신호 필터링 메커니즘과 유연한 매개 변수 조정 기능에 있으며 매개 변수 최적화 및 시장 환경 적응성에주의를 기울여야합니다. 지속적인 최적화 및 정교화를 통해 전략은 다양한 시장 조건에서 안정적인 성능을 유지하는 잠재력을 보여줍니다.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 indicator("Wick Reversal Setup", overlay=true) // Input parameters wickMultiplier = input.float(3.5, title="Wick Multiplier", minval=0.5, maxval=20) bodyPercentage = input.float(0.25, title="Body Percentage", minval=0.1, maxval=1.0) // Calculate the average range over 50 periods avgRange = ta.sma(high - low, 50) // Define the lengths of wicks and bodies bodyLength = math.abs(close - open) upperWickLength = high - math.max(close, open) lowerWickLength = math.min(close, open) - low totalRange = high - low // Long signal conditions longSignal = (close > open and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close < open and lowerWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close == open and close != high and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (open == high and close == high and totalRange >= avgRange) // Short signal conditions shortSignal = (close < open and (high - open) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close > open and (high - close) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close == open and close != low and lowerWickLength >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (open == low and close == low and totalRange >= avgRange) // Plot signals plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Long") plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short") // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Sahaj_Beriwal //@version=5 strategy("My strategy", overlay=true, margin_long=100, margin_short=100) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("L", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (shortCondition) strategy.entry("S", strategy.short)