이 전략은 이동 평균을 기반으로 피보나치 확장 채널을 계산하여 주요 지지 및 저항 영역을 식별하고 거래자가 시장의 잠재적 인 전환점을 예측하는 데 도움이됩니다.
이 전략의 핵심은 이동 평균을 기반으로 세 개의 켈트너 채널을 계산하는 것으로, 이는 피보나치 채널의 상부 및 하부 경계를 결정하는 데 도움이됩니다. 사용 된 기본 피보나치 확장 레벨은 1.618, 2.618 및 4.236입니다. 이 레벨은 거래자가 중요한 지원 및 저항 영역을 식별하는 데 참조 지점으로 사용됩니다.
가격 동작을 분석할 때, 거래자는 극단적인 피보나치 밴드, 즉 밴드의 상부 및 하부 경계에 초점을 맞출 수 있습니다. 가격이 몇 바 동안 밴드 외부에서 거래되고 다시 내부로 돌아간다면 잠재적 인 반전을 나타낼 수 있습니다. 이 패턴은 가격이 일시적으로 일반적인 범위에서 벗어났고 수정되어야 할 수 있음을 나타냅니다.
피보나치 밴드 지표의 정확성을 높이기 위해, 거래자는 종종 여러 시간 프레임을 사용합니다. 단기 신호를 더 큰 시간 프레임 시나리오와 조화시킴으로써, 거래자는 전체 시장 추세를 더 잘 이해할 수 있습니다. 일반적으로 성공 가능성을 높이기 위해 더 큰 시간 프레임 방향으로 거래하는 것이 좋습니다.
잠재적 인 반전을 식별하는 것 외에도 거래자는 피보나치 밴드 지표를 사용하여 입구 및 출구 지점을 결정할 수 있습니다. 단기 지원 및 저항 레벨은 밴드에서 도출 할 수 있으며 거래 의사 결정에 귀중한 통찰력을 제공합니다.
이 전략의 주요 장점은 다음과 같습니다.
가격 전환점을 예측하는 데 도움이 되는 주요 지지 및 저항 영역을 식별할 수 있습니다.
멀티 타임프레임 분석과 결합하면 거래 신호 정확도를 향상시킵니다.
입구와 출구를 명확하게 식별할 수 있습니다.
중간 선 기울기를 분석하여 시장 트렌드 강도와 방향을 측정 할 수 있습니다.
피보나치 이론에 기초한 자연 비율을 사용하여 주요 가격 수준을 식별합니다.
이 전략의 주요 위험은 다음과 같습니다.
모든 기술 분석 지표와 마찬가지로 전략은 가격 움직임과 반전을 100% 정확도로 예측할 수 없습니다. 지표는 잠재적 인 가격 영역을 제공하지만 보장을 제공하지 않습니다.
피보나치 확장 레벨과 켈트너 채널 매개 변수의 잘못된 또는 주관적 설정은 신호 신뢰성에 영향을 줄 수 있습니다.
가격은 피보나치 대역을 뚫고 계속 움직일 수 있고 이로 인해 손실이 발생할 수 있습니다.
여러 시간 프레임 분석은 항상 적용되지 않을 수 있습니다.
높은 변동성 또는 낮은 유동성 시장에서 신호는 덜 신뢰할 수 있습니다.
이러한 위험을 완화하기 위해 RSI와 같은 다른 지표로 신호를 검증하고, 다른 시장 조건에 맞게 매개 변수를 조정하고, 거래 당 위험을 제어하기 위해 스톱 손실을 사용합니다.
이 전략은 여러 가지 방법으로 최적화 될 수 있습니다.
이동 평균과 켈트너 채널을 최적화하기 위해 다른 유형의 매개 변수와 길이를 테스트하여 다른 시장의 통계적 특성에 더 잘 맞습니다.
다른 피보나치 키 영역을 0.5 또는 0.786과 같이 피보나치 밴드의 확장 영역으로 테스트합니다.
진입 신호를 가격 패턴, 부피 또는 다른 지표와 결합하여 확인합니다.
트렌드가 역전될 때 빨리 탈퇴하기 위해 스톱 로스 전략을 최적화하세요.
진입과 출입 규칙의 백테스트 최적화
요약하자면, 촛불 반전 거래의 주요 지원/저항 영역을 식별하기 위한 피보나치 채널 기반 전략은 거래 결정을 안내하기 위해 자연 비율 원리를 활용하는 효과적인 접근법이다. 전략은 다양한 시장 조건에서 강력한 성능을 보여주었다. 매개 변수 조정 및 위험 통제의 추가 향상으로 회복력이 향상될 수 있다. 전반적으로, 그것은 거래자에게 복잡하고 역동적인 시장에서 거래 기회를 식별하는 효율적인 도구를 제공합니다.
/*backtest start: 2023-10-21 00:00:00 end: 2023-11-20 00:00:00 period: 1h basePeriod: 15m 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/ // © blackcat1402 //@version=5 strategy('[blackcat] L2 Fibonacci Bands', overlay=true) // Define the moving average type and length maType = input.string(title='MA Type', defval='WMA', options=['SMA', 'EMA', 'WMA', 'HMA']) maLength = input.int(title='MA Length', defval=233, minval=1) src = input(title='Data Source', defval=hl2) // Define the Fibonacci expansion levels fib1 = input.float(title='Fibonacci Level 1', defval=1.618, minval=0) fib2 = input.float(title='Fibonacci Level 2', defval=2.618, minval=0) fib3 = input.float(title='Fibonacci Level 3', defval=4.236, minval=0) // Calculate the moving average ma = maType == 'SMA' ? ta.sma(src, maLength) : maType == 'EMA' ? ta.ema(src, maLength) : maType == 'WMA' ? ta.wma(src, maLength) : maType == 'HMA' ? ta.hma(src, maLength) : na // Calculate the Keltner Channels kcMultiplier = input.int(title='Keltner Channel Multiplier', defval=2, minval=0) kcLength = input.int(title='Keltner Channel Length', defval=89, minval=1) kcTrueRange = ta.tr kcAverageTrueRange = ta.sma(kcTrueRange, kcLength) kcUpper = ma + kcMultiplier * kcAverageTrueRange kcLower = ma - kcMultiplier * kcAverageTrueRange // Calculate the Fibonacci Bands fbUpper1 = ma + fib1 * (kcUpper - ma) fbUpper2 = ma + fib2 * (kcUpper - ma) fbUpper3 = ma + fib3 * (kcUpper - ma) fbLower1 = ma - fib1 * (ma - kcLower) fbLower2 = ma - fib2 * (ma - kcLower) fbLower3 = ma - fib3 * (ma - kcLower) // Plot the Fibonacci Bands plot(ma, title='Midband', color=color.new(color.blue, 0), linewidth=2) plot(fbUpper1, title='Upper Band 1', color=color.new(color.green, 0), linewidth=1) plot(fbUpper2, title='Upper Band 2', color=color.new(color.green, 0), linewidth=1) plot(fbUpper3, title='Upper Band 3', color=color.new(color.green, 0), linewidth=1) plot(fbLower1, title='Lower Band 1', color=color.new(color.red, 0), linewidth=1) plot(fbLower2, title='Lower Band 2', color=color.new(color.red, 0), linewidth=1) plot(fbLower3, title='Lower Band 3', color=color.new(color.red, 0), linewidth=1) // Define the entry and exit conditions longCondition = ta.crossover(src, fbUpper3) and ta.rsi(src, 14) > 60 shortCondition = ta.crossunder(src, fbLower3) and ta.rsi(src, 14) < 40 exitCondition = ta.crossover(src, ma) or ta.crossunder(src, ma) // Execute the trades if longCondition strategy.entry('Long', strategy.long) if shortCondition strategy.entry('Short', strategy.short) if exitCondition strategy.close_all()