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

간단한 복합 전략: 피보트 포인트 슈퍼 트렌드 및 DEMA

저자:차오장, 날짜: 2024-06-17 14:49:14
태그:ATRDEMAEMA

img

전반적인 설명

이 전략은 피보트 포인트 슈퍼 트렌드 지표와 이중 기하급수적 이동 평균 (DEMA) 지표를 결합하여 이 두 지표에 대한 가격 위치를 분석하여 거래 신호를 생성합니다. 가격이 피보트 포인트 슈퍼 트렌드 지표보다 높을 때, 긴 신호가 생성됩니다. 가격이 피보트 포인트 슈퍼 트렌드 지표보다 낮을 때, 짧은 신호가 생성됩니다. 이 전략은 중장기 시장 추세를 파악하면서 단기 가격 변동에도 반응 할 수 있습니다.

전략 원칙

  1. 피보트 포인트 슈퍼 트렌드 지표를 계산합니다. 중간 지점은 특정 기간 동안 가장 높고 가장 낮은 가격의 평균을 취함으로써 계산되며, 상위 및 하위 대역은 평균 진정한 범위 (ATR) 를 기반으로 계산하여 동적 지지 및 저항 수준을 형성합니다.
  2. DEMA 지표를 계산합니다. 먼저, 폐쇄 가격의 기하급수적인 이동 평균 (EMA) 을 계산하고, EMA의 EMA를 계산하고, 마지막으로 DEMA를 EMA의 두 배에서 빼서 최종 DEMA 지표를 얻습니다.
  3. 거래 신호를 생성합니다. 닫기 가격이 피보트 포인트 슈퍼 트렌드의 상단 범위를 넘어서 DEMA 지표보다 높을 때 긴 신호가 생성됩니다. 닫기 가격이 피보트 포인트 슈퍼 트렌드의 하단 범위를 넘어서 DEMA 지표보다 낮을 때 짧은 신호가 생성됩니다.
  4. 스톱 로스 및 수익을 설정: 피프 값에 기초하여 특정 스톱 로스 및 수익 가격을 계산하고, 스톱 로스 피프를 미리 설정하고, 수익 피프를 취합니다.

전략적 장점

  1. 강한 트렌드 추적 능력: 피보트 포인트 슈퍼 트렌드 지표는 시장 트렌드를 효과적으로 파악 할 수 있으며, DEMA 지표는 가격 소음을 제거하고 트렌드 판단에 더 원활한 기반을 제공 할 수 있습니다. 둘의 조합은 주요 시장 트렌드를 정확하게 파악 할 수 있습니다.
  2. 높은 적응력: 피보트 포인트 슈퍼 트렌드 지표의 상부 및 하부 대역을 동적으로 조정함으로써 전략은 다른 시장 변동성 상황에 적응하여 적응력을 향상시킬 수 있습니다.
  3. 강력한 리스크 제어 능력: 명확한 스톱 로스 및 수익 포지션을 설정함으로써 단일 거래의 리스크 노출을 효과적으로 제어 할 수 있으며 동시에 기존 수익을 제때 고정 할 수 있습니다.

전략 위험

  1. 매개 변수 설정 위험: 전략의 성능은 피보트 포인트 기간, ATR 요인, DEMA 길이 등 여러 매개 변수 설정에 달려 있습니다. 다른 매개 변수 조합은 전략 성능에 큰 차이를 초래할 수 있으며 신중한 선택과 최적화를 요구합니다.
  2. 범위 제한 시장 위험: 범위 제한 시장 환경에서 빈번한 거래 신호는 과잉 거래, 거래 비용 증가 및 미끄러짐 위험을 초래할 수 있습니다.
  3. 트렌드 역전 위험: 시장 트렌드가 역전되면 전략은 연속적인 손실을 경험할 수 있으며 다른 분석 방법과 함께 전략을 신속히 조정해야합니다.

전략 최적화 방향

  1. 매개 변수 최적화: 매개 변수 최적화 테스트를 다양한 기간과 거래 도구에서 수행하여 최적의 매개 변수 조합을 찾고 전략의 안정성과 수익성을 향상시킵니다.
  2. 신호 필터링: 거래 신호가 생성되면 다른 기술적 지표 또는 가격 행동 특성과 함께 추가로 확인하여 신호의 신뢰성을 향상시키고 잘못된 신호로 인한 손실을 줄일 수 있습니다.
  3. 포지션 관리: 전체 리스크 노출을 제어하기 위해 시장 변동성과 계정 리스크 허용에 따라 각 거래의 포지션 크기를 동적으로 조정합니다.
  4. 포트폴리오 최적화: 이 전략을 다른 전략이나 거래 시스템과 결합하여 위험을 다양화하고 안정성을 강화하여 전략의 장기 성과를 향상시킵니다.

요약

피보트 포인트 슈퍼트렌드 지표와 DEMA 지표를 결합함으로써 이 전략은 단기 변동에 대응하는 동시에 시장 추세를 효과적으로 파악할 수 있다. 이 전략은 강력한 트렌드 추적 능력, 강력한 적응력, 강력한 위험 통제 능력과 같은 장점을 가지고 있지만, 또한 매개 변수 설정, 범위 제한 시장, 트렌드 역전 등의 위험에 직면한다. 매개 변수 최적화, 신호 필터링, 위치 관리, 포트폴리오 최적화 등을 통해 전략의 안정성과 수익성을 더욱 향상시켜 다른 시장 환경에 더 잘 적응할 수 있다.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple Combined Strategy: Pivot Point SuperTrend and DEMA", overlay=true)

// Pivot Point SuperTrend settings
prd = input.int(2, title="Pivot Point Period", minval=1, maxval=50)
Factor = input.float(3.0, title="ATR Factor", minval=1, step=0.1)
Pd = input.int(10, title="ATR Period", minval=1)

// Double EMA settings
demaLength = input.int(200, title="DEMA Length", minval=1)
src = input(close, title="Source")

// Pip settings
pipValue = input.float(0.0001, title="Pip Value")
stopLossPips = input.int(15, title="Stop Loss (pips)")
takeProfitPips = input.int(35, title="Take Profit (pips)")

// Pivot Point SuperTrend Calculation
float ph = ta.pivothigh(prd, prd)
float pl = ta.pivotlow(prd, prd)
var float center = na
if not na(ph)
    center := na(center) ? ph : (center * 2 + ph) / 3
if not na(pl)
    center := na(center) ? pl : (center * 2 + pl) / 3

Up = center - (Factor * ta.atr(Pd))
Dn = center + (Factor * ta.atr(Pd))
var float TUp = na
var float TDown = na
var int Trend = na

if na(Trend)
    TUp := Up
    TDown := Dn
    Trend := close > Dn ? 1 : -1
else
    TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
    TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
    Trend := close > TDown[1] ? 1 : close < TUp[1] ? -1 : nz(Trend[1], 1)

Trailingsl = Trend == 1 ? TUp : TDown
linecolor = Trend == 1 ? color.lime : color.red
plot(Trailingsl, color=linecolor, linewidth=2, title="PP SuperTrend")

// Double EMA Calculation
e1 = ta.ema(src, demaLength)
e2 = ta.ema(e1, demaLength)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=color.new(#43A047, 0))

// Strategy Logic
longCondition = close > Trailingsl and close > dema and strategy.position_size <= 0
shortCondition = close < Trailingsl and close < dema and strategy.position_size >= 0

// Plot signals
plotshape(series=longCondition, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortCondition, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - (stopLossPips * pipValue), limit=close + (takeProfitPips * pipValue))
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + (stopLossPips * pipValue), limit=close - (takeProfitPips * pipValue))

alertcondition(longCondition, title="Long Alert", message="Long Signal")
alertcondition(shortCondition, title="Short Alert", message="Short Signal")


관련

더 많은