피보나치 수정과 피벗 포인트 거래 전략을 결합한 다중 기간 이동 평균

EMA PP FIBO SL TP
생성 날짜: 2024-12-11 15:58:20 마지막으로 수정됨: 2024-12-11 15:58:20
복사: 1 클릭수: 459
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

피보나치 수정과 피벗 포인트 거래 전략을 결합한 다중 기간 이동 평균

개요

이 전략은 여러 가지 기술적 분석 도구를 결합한 통합 거래 시스템으로, 거래 신호를 결정하기 위해 주로 쌍평평선 ((2050 주기의 EMA), 피보나치 회귀 수준 및 축점 지원 저항 지점을 사용합니다. 전략은 트렌드 추적과 가격 회귀를 결합한 방법을 사용하며, 여러 가지 확인을 통해 거래의 정확성을 향상시킵니다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.

  1. 20과 50주기 EMA의 교차를 사용하여 전체 트렌드 방향을 결정합니다.
  2. 피보나치 회귀 레벨 ((23.6%, 38.2%, 50%, 61.8%) 을 사용하여 잠재적인 지지 저항 지점을 식별하십시오.
  3. 중심점 ((PP) 과 그것의 지지 저항점 ((S1/S2, R1/R2) 을 결합하여 가격 핵심 수준을 확인
  4. 다음 진입 조건을 동시에 충족해야 합니다.
    • 단기 평균선은 장기 평균선을 상향으로 가로지르거나 아래로 가로지르거나
    • 적절한 피보네치치 수준 이상의/아래의 가격
    • 값이 축지점의 지지를 받는 저항점을 충족시킨다는 확인
  5. 고정된 스톱로스 ((30 포인트) 와 수익 목표 ((60 포인트) 를 사용하여 위험을 관리하십시오.

전략적 이점

  1. 다중 기술 지표 교차 검증, 신호 신뢰성 향상
  2. 추세와 지지 저항을 결합하여 균형 잡힌 시점에 진입합니다.
  3. 고정된 위험 관리 매개 변수, 전략적 수량화를 위한 실행
  4. 시각화 된 거래 신호 예고, 실시간 모니터링
  5. 중장기 트렌드 거래에 적합하며, 단기 변동의 영향을 줄입니다.

전략적 위험

  1. 복수의 지표로 인해 신호가 지연되어 출입 시기가 영향을 받을 수 있습니다.
  2. 고정된 스톱로스/프레즈 레벨은 모든 시장 환경에 적합하지 않을 수 있습니다.
  3. 수평 정리 시장에서 너무 많은 가짜 신호가 발생할 수 있습니다.
  4. 가격의 큰 변동이 필요한데 그 이상적인 수익을 얻으려면
  5. 시장의 급격한 변동으로 인해 손실이 발생할 수 있습니다.

전략 최적화 방향

  1. 변동률에 적응하는 손해 차단 장치를 도입
  2. 보조 확인으로 볼륨 표시기 추가
  3. 다른 시장 상태에 따라 동적으로 조정 된 평균 선 변수
  4. 거짓 신호를 줄이기 위해 추세 강도 필터 추가
  5. 보다 지능적인 부분 포지션 관리 메커니즘을 개발

요약하다

이 전략은 여러 클래식 기술 분석 도구를 통합하여 비교적 완전한 거래 시스템을 구축했다. 다소 뒤처진 부분이 있지만, 여러 확인 메커니즘을 통해 거래의 신뢰성이 향상되었다. 최적화 권고의 구현으로 전략은 실장 거래에서 더 나은 성능을 얻을 것으로 예상된다. 실장 사용 전에 충분한 피드백을 수행하고 특정 시장 특성에 따라 매개 변수를 조정하는 것이 좋습니다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Forex Strategy with EMA, Pivot, Fibonacci and Signals", overlay=true)

// Input for EMAs and Pivot Points
emaShortPeriod = input.int(20, title="Short EMA Period", minval=1)
emaLongPeriod = input.int(50, title="Long EMA Period", minval=1)
fibRetraceLevel1 = input.float(0.236, title="Fibonacci 23.6% Level")
fibRetraceLevel2 = input.float(0.382, title="Fibonacci 38.2% Level")
fibRetraceLevel3 = input.float(0.5, title="Fibonacci 50% Level")
fibRetraceLevel4 = input.float(0.618, title="Fibonacci 61.8% Level")

// Function to calculate Pivot Points and Levels
pivot(high, low, close) =>
    pp = (high + low + close) / 3
    r1 = 2 * pp - low
    s1 = 2 * pp - high
    r2 = pp + (high - low)
    s2 = pp - (high - low)
    [pp, r1, s1, r2, s2]

// Calculate Pivot Points
[pp, r1, s1, r2, s2] = pivot(high, low, close)

// Calculate 20 EMA and 50 EMA
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)

// Plot the EMAs
plot(emaShort, color=color.blue, title="20 EMA", linewidth=2)
plot(emaLong, color=color.red, title="50 EMA", linewidth=2)

// Fibonacci Levels (manually drawn between the most recent high and low)
var float fibHigh = na
var float fibLow = na

if (not na(high[1]) and high > high[1])  // Check if new high is formed
    fibHigh := high
if (not na(low[1]) and low < low[1])    // Check if new low is formed
    fibLow := low

fib23_6 = fibLow + (fibHigh - fibLow) * fibRetraceLevel1
fib38_2 = fibLow + (fibHigh - fibLow) * fibRetraceLevel2
fib50 = fibLow + (fibHigh - fibLow) * fibRetraceLevel3
fib61_8 = fibLow + (fibHigh - fibLow) * fibRetraceLevel4

plot(fib23_6, color=color.green, linewidth=1, title="Fibonacci 23.6%")
plot(fib38_2, color=color.green, linewidth=1, title="Fibonacci 38.2%")
plot(fib50, color=color.green, linewidth=1, title="Fibonacci 50%")
plot(fib61_8, color=color.green, linewidth=1, title="Fibonacci 61.8%")

// Entry conditions (Crossovers)
longCondition = ta.crossover(emaShort, emaLong) and close > fib23_6 and close > s1
shortCondition = ta.crossunder(emaShort, emaLong) and close < fib23_6 and close < r1

// Exit conditions (Stop Loss and Take Profit)
stopLossPips = 30 * syminfo.mintick  // 30 pips Stop Loss
takeProfitPips = 60 * syminfo.mintick // 60 pips Take Profit

if (longCondition)
    strategy.entry("Buy", strategy.long, stop=stopLossPips, limit=takeProfitPips)
if (shortCondition)
    strategy.entry("Sell", strategy.short, stop=stopLossPips, limit=takeProfitPips)

// Plot Pivot Points for visual reference
plot(pp, color=color.yellow, linewidth=2, title="Pivot Point")
plot(r1, color=color.purple, linewidth=1, title="Resistance 1")
plot(s1, color=color.purple, linewidth=1, title="Support 1")
plot(r2, color=color.purple, linewidth=1, title="Resistance 2")
plot(s2, color=color.purple, linewidth=1, title="Support 2")

// Adding Buy and Sell Signals
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.small)
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.small)