피보나치 채널 기반 촛불 역전 거래 전략

저자:차오장, 날짜: 2023-11-21 17:24:17
태그:

img

전반적인 설명

이 전략은 이동 평균을 기반으로 피보나치 확장 채널을 계산하여 주요 지지 및 저항 영역을 식별하고 거래자가 시장의 잠재적 인 전환점을 예측하는 데 도움이됩니다.

전략 논리

이 전략의 핵심은 이동 평균을 기반으로 세 개의 켈트너 채널을 계산하는 것으로, 이는 피보나치 채널의 상부 및 하부 경계를 결정하는 데 도움이됩니다. 사용 된 기본 피보나치 확장 레벨은 1.618, 2.618 및 4.236입니다. 이 레벨은 거래자가 중요한 지원 및 저항 영역을 식별하는 데 참조 지점으로 사용됩니다.

가격 동작을 분석할 때, 거래자는 극단적인 피보나치 밴드, 즉 밴드의 상부 및 하부 경계에 초점을 맞출 수 있습니다. 가격이 몇 바 동안 밴드 외부에서 거래되고 다시 내부로 돌아간다면 잠재적 인 반전을 나타낼 수 있습니다. 이 패턴은 가격이 일시적으로 일반적인 범위에서 벗어났고 수정되어야 할 수 있음을 나타냅니다.

피보나치 밴드 지표의 정확성을 높이기 위해, 거래자는 종종 여러 시간 프레임을 사용합니다. 단기 신호를 더 큰 시간 프레임 시나리오와 조화시킴으로써, 거래자는 전체 시장 추세를 더 잘 이해할 수 있습니다. 일반적으로 성공 가능성을 높이기 위해 더 큰 시간 프레임 방향으로 거래하는 것이 좋습니다.

잠재적 인 반전을 식별하는 것 외에도 거래자는 피보나치 밴드 지표를 사용하여 입구 및 출구 지점을 결정할 수 있습니다. 단기 지원 및 저항 레벨은 밴드에서 도출 할 수 있으며 거래 의사 결정에 귀중한 통찰력을 제공합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 가격 전환점을 예측하는 데 도움이 되는 주요 지지 및 저항 영역을 식별할 수 있습니다.

  2. 멀티 타임프레임 분석과 결합하면 거래 신호 정확도를 향상시킵니다.

  3. 입구와 출구를 명확하게 식별할 수 있습니다.

  4. 중간 선 기울기를 분석하여 시장 트렌드 강도와 방향을 측정 할 수 있습니다.

  5. 피보나치 이론에 기초한 자연 비율을 사용하여 주요 가격 수준을 식별합니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 모든 기술 분석 지표와 마찬가지로 전략은 가격 움직임과 반전을 100% 정확도로 예측할 수 없습니다. 지표는 잠재적 인 가격 영역을 제공하지만 보장을 제공하지 않습니다.

  2. 피보나치 확장 레벨과 켈트너 채널 매개 변수의 잘못된 또는 주관적 설정은 신호 신뢰성에 영향을 줄 수 있습니다.

  3. 가격은 피보나치 대역을 뚫고 계속 움직일 수 있고 이로 인해 손실이 발생할 수 있습니다.

  4. 여러 시간 프레임 분석은 항상 적용되지 않을 수 있습니다.

  5. 높은 변동성 또는 낮은 유동성 시장에서 신호는 덜 신뢰할 수 있습니다.

이러한 위험을 완화하기 위해 RSI와 같은 다른 지표로 신호를 검증하고, 다른 시장 조건에 맞게 매개 변수를 조정하고, 거래 당 위험을 제어하기 위해 스톱 손실을 사용합니다.

최적화 방향

이 전략은 여러 가지 방법으로 최적화 될 수 있습니다.

  1. 이동 평균과 켈트너 채널을 최적화하기 위해 다른 유형의 매개 변수와 길이를 테스트하여 다른 시장의 통계적 특성에 더 잘 맞습니다.

  2. 다른 피보나치 키 영역을 0.5 또는 0.786과 같이 피보나치 밴드의 확장 영역으로 테스트합니다.

  3. 진입 신호를 가격 패턴, 부피 또는 다른 지표와 결합하여 확인합니다.

  4. 트렌드가 역전될 때 빨리 탈퇴하기 위해 스톱 로스 전략을 최적화하세요.

  5. 진입과 출입 규칙의 백테스트 최적화

결론

요약하자면, 촛불 반전 거래의 주요 지원/저항 영역을 식별하기 위한 피보나치 채널 기반 전략은 거래 결정을 안내하기 위해 자연 비율 원리를 활용하는 효과적인 접근법이다. 전략은 다양한 시장 조건에서 강력한 성능을 보여주었다. 매개 변수 조정 및 위험 통제의 추가 향상으로 회복력이 향상될 수 있다. 전반적으로, 그것은 거래자에게 복잡하고 역동적인 시장에서 거래 기회를 식별하는 효율적인 도구를 제공합니다.


/*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()



더 많은