중요한 피벗 포인트 반전 전략


생성 날짜: 2024-01-29 14:58:15 마지막으로 수정됨: 2024-01-29 14:58:15
복사: 1 클릭수: 682
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

중요한 피벗 포인트 반전 전략

개요

이 전략은 ATR을 계산하고 ATR 필터링 인자를 설정하여 무의미한 지점을 필터링하여 실제로 중요한 지점을 거래하는 전통적인 지점 역전 전략에 기반하여 최적화됩니다.

전략 원칙

이 전략의 핵심 논리는 중요한 고점 지지를 계산하는 것입니다. 고점 지지를 계산하는 주요 단계는 다음과 같습니다.

  1. ATR을 계산하고 ATR 필터링 인자를 설정합니다.
  2. 좌변의 K선 수를 가로질러 (leftBars에서 설정) + ATR*atr_mult, 이 지점은 유효하지 않다.
  3. 오른쪽에 있는 K 선의 일정한 수를 가로질러 ((rightBars에 의해 설정)), 높이의 지점 지점이 오른쪽에 있는 K 선의 어느 하나 이상의 높이에 있는 경우 + ATR*atr_mult, 이 지점은 유효하지 않다.
  4. 고지점 지지점이 위와 같은 검사를 거친 후에도 유효하다면, 그 고지점을 중요한 고지점 지지점으로 반환한다.

낮은 지점 지점을 계산하는 논리는 이와 비슷하다.

중요한 지지를 얻은 후, 가격이 중요한 고지지를 뚫었을 때, 하락; 가격이 중요한 낮은 지지를 뚫었을 때, 더 많이 한다.

우위 분석

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

  1. ATR와atr_mult 필터링 매개 변수를 통해 무의미한 작은 변동들을 필터링하고, 정말 중요한 지점을 거래하고, 무의미한 거래를 피한다.
  2. ATR 파라미터는 동적으로 조정할 수 있으며, 큰 변동 시장에서 거래 범위를 자동으로 조정하여 과다 거래를 방지한다.
  3. 지점 반전 전략은 그 자체로 높은 승률과 수익률을 가지고 있다.

위험 분석

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

  1. ATR 파라미터를 잘못 설정하면 너무 많은 유효 거래 기회를 필터링 할 수 있습니다. ATR이 너무 커지면 유효 지점이 필터링 될 수 있습니다.
  2. 지점 반전 전략 자체는 여전히 포로에 갇히게 될 위험이 있으며, 위험을 통제하기 위해 손실을 중지해야 합니다.
  3. 반전형 전략은 거래비용에 민감하며, 합리적인 스톱로스 및 스톱을 설정해야 한다.

위와 같은 위험을 통제하기 위해, 다음과 같은 측면에서 최적화할 수 있습니다:

  1. ATR 변수를 최적화하여 충분한 거래 기회를 보장합니다.
  2. 합리적인 Stop Loss Stop Stop 비율을 설정하십시오.
  3. 거래 비용의 영향을 줄이기 위해 포지션 개수를 적절하게 조정하십시오.

최적화 방향

이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.

  1. 다른 지표와 결합하여 시장의 트렌드 상태를 판단하여 역거래가 트렌드 상황에서 나타나지 않도록하십시오. MACD, KDJ 등의 지표를 추가하는 것을 고려할 수 있습니다.

  2. 기계 학습 알고리즘을 추가하고, 자동으로 최적화 파라미터를 . 유전 알고리즘, 랜덤 포레스트 등의 방법을 사용하여 최적의 파라미트 조합을 찾을 수 있다.

  3. 양적 데이터를 추가하여 훈련하여 최적의 ATR 범위를 찾습니다. 역사 데이터를 추가하면 파라미터 선택의 정확도가 향상됩니다.

  4. 다른 전략 조합과 함께 사용하는 것을 고려할 수 있으며, 다양한 유형의 전략과 결합하여 장점을 얻을 수 있습니다. 예를 들어, 트렌드 추적 전략 조합과 함께, 정리에서 반전, 트렌드에서 진행.

요약하다

이 중요한 지점 역전 전략은 ATR을 계산하고 필터 인자를 설정하는 방법을 통해 무의미한 작은 변동성을 필터링하여 중요한 지점에서만 역전 거래를 할 수 있으며 전략의 수익 수준을 효과적으로 향상시킬 수 있습니다. 또한 특정 파라미터 최적화 난이도를 증가시킵니다. ATR 범위, 스톱 스톱 비율 등 여러 가지 측면을 종합적으로 고려하여 최적의 파라미터를 찾는 것이 필요합니다. 파라미터가 최적화되면 이 전략은 효율적이고 안정적인 단선 거래 전략이 될 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)