이 기사에서는 피워트 포인트에 기반한 역전 거래 전략을 상세히 분석합니다. 전략은 기간 동안 잠재적 인 지원 및 저항 피워트 수준을 계산하고 가격이 이러한 피워트 수준을 넘어서면 트렌드 역전을 식별하여 역전 거래를 허용합니다.
이 전략은 주로 두 가지 지표에 의존합니다. 피보트 하이 및 피보트 로우. 피보트 하이 및 로우는 기간 내에서 가장 높고 가장 낮은 가격입니다.pivothigh()
그리고pivotlow()
회전점을 계산할 때 좌측과 우측에 지점을 설정해야 합니다. 이 전략은 좌측 4개 지점과 우측 2개 지점을 사용합니다.
최근 기간의 최고가격이 이전 기간의 피보트 최고보다 낮을 때, 반전 기회가 있음을 신호합니다. 이전 포지션이 단축되어 있었다면, 이제 긴 포지션을 고려하여 반전을 활용해야 합니다. 마찬가지로, 최근 기간의 최저가격이 이전 피보트 최저보다 높을 때, 기존의 긴 포지션은 단축으로 전환하는 것을 고려해야합니다.
구체적으로, 주요 논리는 다음과 같습니다.
이 전략의 가장 큰 장점은 잠재적인 트렌드 반전 지점을 식별하는 것입니다. 이는 반전 거래자에게 매우 중요합니다. 다른 지표와 비교했을 때, 피보트 지점은 빈번한 잘못된 신호 없이 주요 지지/저항 수준을 보다 명확하게 식별할 수 있습니다.
또한 이 전략은 다양한 시장 상황을 포괄하여 긴 엔트리와 짧은 엔트리를 위한 조건을 갖추고 있으며, 기회를 놓치지 않도록 합니다. 스톱 로스 사용은 위험을 통제하고 좋은 리스크/어워드 비율을 보장합니다.
요약하자면, 이것은 매우 실용적인 역전 전략입니다.
거짓 신호를 줄이기 위한 노력에도 불구하고, 브레이크아웃 기반의 전략은 필연적으로 조기 또는 뒤떨어진 신호와 같은 문제에 직면합니다. 이것은 긴 진입을 계획하지만 시장이 이미 뒤집어졌거나 짧은 진입을 계획하지만 갑자기 황금 경기가 발발하는 결과를 초래할 수 있습니다. 역전을 완벽하게 예측할 수 없는 것은 기술적 분석의 고유 한 한계입니다.
또한, 피보트 포인트는 완벽한 지원/저항 수준을 보장할 수 없습니다. 불운은 실제 지원 수준 직전 스톱 로스를 달성하는 결과를 초래할 수 있습니다. 주요 영역에 대한 이러한 불확실성은 완전히 피할 수 없습니다.
기간 최적화. 현재 왼쪽 / 오른쪽 기간은 4 및 2로 설정됩니다. 이것들은 초기 값으로 사용될 수 있으며 각 시장에 추가로 최적화 될 수 있습니다.
다른 지표와 필터를 추가합니다. 예를 들어, 부피와 결합하여 부피가 증가하는 경우만 브레이크오프를 유효한 것으로 간주하십시오. 이것은 잘못된 브레이크오프를 피하는 데 도움이됩니다.
동적 스톱 로스. 현재 스톱은 피보트 레벨 이상/하단 최소 1 틱의 버퍼로 설정됩니다. 버퍼 영역은 시장 변동성에 따라 동적으로 조정할 수 있습니다.
트렌드 방향으로만 작동한다. 현재 긴/단순 조건은 병렬이다. 최적화는 트렌드 필터를 기반으로 상승 추세에서 길고 하락 추세에서 짧습니다.
요약하자면, 이것은 간단하면서도 실용적인 반전 전략이다. 기간에 걸쳐 피보트 포인트를 식별하고 가격 돌파구를 모니터링하는 것이 잠재적 인 트렌드 반전을 탐지하는 핵심 아이디어를 형성한다. 평행 장기/단순 조건은 기회를 극대화하고 스톱 손실은 위험을 관리한다.
전략 논리는 간단하고 구현하기 쉽습니다. 매개 변수 또한 초보자에게 직관적입니다. 추가 최적화는 채택을 위해 성능을 향상시킬 수 있습니다. 전반적으로 이것은 권장 전략입니다.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Pivot Reversal Strategy", overlay=true) leftBars = input(4) rightBars = input(2) // backtesting date range from_day = input(defval = 1, title = "From Day", minval = 1) from_month = input(defval = 3, title = "From Month", minval = 1) from_year = input(defval = 2018, title = "From Year", minval = 1970) to_day = input(defval = 1, title = "To Day", minval = 1) to_month = input(defval = 1, title = "To Month", minval = 1) to_year = input(defval = 2100, title = "To Year", minval = 1970) time_cond = (time > timestamp(from_year, from_month, from_day, 00, 00)) and (time < timestamp(to_year, to_month, to_day, 23, 59)) swh = pivothigh(leftBars, rightBars) swl = pivotlow(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 and time_cond) 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 and time_cond) strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)