피벗 포인트 반전 및 종료를 기반으로 한 거래 전략


생성 날짜: 2024-04-30 15:57:54 마지막으로 수정됨: 2024-04-30 15:57:54
복사: 0 클릭수: 331
1
집중하다
1166
수행원

피벗 포인트 반전 및 종료를 기반으로 한 거래 전략

개요

이 전략은 중심점 (Pivot Points) 을 기반으로 시장의 역전점을 식별하고, 이를 기반으로 거래한다. 시장이 좌측 4K선 안의 중심점 고점 (Pivot High) 을 나타낼 때, 전략은 더 많은 포지션을 열고, 시장이 좌측 4K선 안의 중심점 저점 (Pivot Low) 을 나타낼 때, 전략은 빈 포지션을 열는다. 전략의 정지는 포지션 가격의 상하의 최소 가격 변동 단위 (syminfo.mintick) 에 설정된다. 전략의 탈퇴 조건은 두 가지이다.

전략 원칙

  1. ta.pivothigh() 와 ta.pivotlow() 함수를 사용하여 왼쪽의 4개의 K선, 오른쪽의 2개의 K선 범위의 축점 높은 점 (swh) 과 낮은 점 (swl) 을 계산한다.
  2. 축점 고점이 존재할 때 최상위 가격을 업데이트하고, 현재 최고 가격이 이전 최고 가격보다 높을 때, 다중 진출 조건을 열고.
  3. 다중 출장 조건 ((le) 이 성립될 때, 중심축 지점 높이의 위쪽에서 최소 변동 단위 ((syminfo.mintick) 의 위치에서 포지션을 열고 더한다.
  4. 더 많은 것을 하는 것과 비슷하게, 축점 하락점이 존재할 때 최저 가격을 업데이트하며, 또한 현재의 최저 가격이 이전 최저 가격보다 낮을 때, 상장 조건을 열기 시작한다.
  5. 상장 입시 조건이 성립했을 때, 축점 하위점 아래의 최소 변동 단위 (mintick) 의 위치에서 포지션을 열고 상장한다.
  6. exitAtNextPivot () 함수에서, 다중 헤드 포지션을 보유한 경우, 다음 축점 낮은 지점 아래의 최소 변화 단위 손실이 발생한다. 빈 헤드 포지션을 보유한 경우, 다음 축점 높은 지점 위의 최소 변화 단위 손실이 발생한다.
  7. exitIfProfitLessThanThirtyPercent () 함수에서, 상위 및 빈 상위 포지션의 수익 손실 비율을 계산하고, 손실이 30% 이상인 경우 평점 포지션을 니다.

전략적 이점

  1. 중심점은 시장의 지지와 압박 위치를 더 잘 반영할 수 있으며, 시장에서 어느 정도 인정받는 일반적인 기술 분석 지표이다.
  2. 시장의 전환을 잡을 수 있는 기회를 잡을 수 있는 축점의 돌파구에 진입한다.
  3. 두 가지 탈퇴 조건이 설정되어 있는데, 하나는 다음 반대 방향의 축점에 기반한 기술적인 탈퇴이며, 다른 하나는 손실 비율에 기반한 풍력 조절적인 탈퇴로, 어느 정도 전략적 회수를 통제할 수 있다.

전략적 위험

  1. 축점 지표 자체에는 약간의 지연과 신호 빈도 문제가 있으며, 흔들리는 시장에서 좋지 않은 성능을 발휘할 수 있습니다.
  2. 고정된 4K선과 2K선 계산 파라미터는 모든 시장 상태에 적용되지 않을 수 있으며, 어느 정도의 자율성과 유연성이 부족하다.
  3. 입시 가격에 가까운 곳에 있는 스톱 로드 위치 ((최소 변동 단위)) 는 시장의 급격한 변동이 있을 때 버려질 수 있다.
  4. 30%의 손실을 막는 설정은 너무 느리고, 회수율이 너무 높을 수 있습니다.

전략 최적화 방향

  1. 다른 유형의 중심점 지표, 예를 들어 인자형 중심점, 가중심 중심점 등을 사용하여 지표의 민감성과 실시간성을 향상시킬 수 있습니다.
  2. 좌우 K 선수는 입력 파라미터로 사용할 수 있으며, 파라미터 최적화를 통해 최적의 값을 찾을 수 있다.
  3. 스톱 포지션은 ATR 또는 퍼센티지 스톱으로 최적화 될 수 있으며, 전자는 시장의 변동률 변화에 따라 적응할 수 있으며, 후자는 통제 가능한 범위 내에서 위험을 제한할 수 있습니다.
  4. 30%의 손실 평점 조건은 강화할 수 있어 전략적 회수를 줄일 수 있다. 또한, 수익 퍼센트 평점 조건을 증가시켜 부진과 부진을 동시에 관리할 수 있다.
  5. 축점 돌파를 기반으로 트렌드 필터, 변동율 필터 등과 같은 다른 필터 조건을 중첩할 수 있어 신호 품질을 향상시킨다.

요약하다

이 전략은 축점 지표를 기반으로 한 양방향 거래 시스템을 구축하여 축점 고점에서 더 많이 하고, 낮은 점에서 공백을 가하여 시장 역전 기회를 포착한다. 전략은 이론적 기초와 실용적인 가치가 있지만, 축점 지표 자체의 한계로 인해 전략은 실제 운영에서 몇 가지 위험과 도전에 직면 할 수 있다. 축점 지표 유형, 매개 변수, 필터링 조건, 스톱 손실 등을 최적화함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
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])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
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])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()