간단한 피보트 역전 알고리즘 거래 전략

저자:차오장, 날짜: 2024-01-17 15:37:33
태그:

img

전반적인 설명

이 전략은 피보트 포인트 브레이크아웃을 기반으로 역전 거래를 수행합니다. 피보트 수준을 결정하기 위해 특정 기간 동안 피보트 최고와 피보트 최저를 계산합니다. 가격이 피보트 최고 이상으로 떨어지면 짧고 가격이 피보트 최저 이하로 떨어지면 길게됩니다. 이것은 전형적인 단기 평균 역전 전략입니다.

전략 논리

이 전략의 핵심 논리는 회전 고점과 하점을 계산하는 것입니다. 공식은 다음과 같습니다:

피보트 하이스 = 지난 N1 바에 대한 가장 높은 하이스의 합 / N1

피보트 로우 = 지난 N2 바 / N2의 최저 로우의 합

여기서 N1과 N2는 피브 포인트 계산에 사용되는 바의 수를 정의하는 매개 변수입니다.

피워트 높은/저한 레벨을 얻은 후, 거래 규칙은 다음과 같습니다.

  1. 가격이 피브트 최고치를 넘을 때 단축
  2. 가격이 주전 하위값 아래로 넘어갈 때 긴
  3. 입력 후 스톱 손실을 설정

그래서 회전점 파업에 기반한 단기적 역전 전략을 실현합니다.

이점 분석

이 간단한 전략의 장점은 다음과 같습니다.

  1. 간단한 논리, 이해하기 쉽고 실행하기 쉬운
  2. 고주파 단기 거래에 적합합니다.
  3. 피워트 브레이크 이후 반전을 캡처
  4. 매개 변수 조정을 통해 최적화

위험 분석

몇 가지 위험 요소가 있습니다.

  1. 피워트 브레이크 이후의 반전 위험은 실패할 수 있고 추세가 계속될 수 있습니다.
  2. 스톱 로스 위험 - 미리 설정된 스톱 로스는 큰 손실로 인해 타격 될 수 있습니다.
  3. 매개 변수 위험 - 부적절한 매개 변수가 결과에 큰 영향을 미칩니다.

이러한 위험은 매개 변수 조정, 출구 규칙 적용 등으로 관리될 수 있습니다.

최적화 방향

최적화할 수 있는 많은 공간이 있습니다.

  1. 다른 기술 지표와 결합하여 입시 시기를 개선합니다.
  2. 트레일링 스톱 손실, 수익 취득 등과 같은 출구 규칙을 추가
  3. 적응력을 향상시키기 위해 매개 변수의 동적 조정
  4. 가장 좋은 매개 변수 조합을 찾기 위해 매개 변수 최적화

요약

요약하자면, 이것은 매우 간단한 단기 피보트 반전 전략이다. 그것의 장점은 단순성과 반전을 포착하는 능력이다. 그러나 최적화를 통해 해결해야 할 몇 가지 위험이 있다. 전반적으로 이것은 초보자에게 좋은 연습 전략으로 봉사하고 고급 전략의 기초를 구축한다.


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

//@version=4
strategy("Pivot Reversal Strategy - FIGS & DATES 2.0", overlay=true, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, commission_value=0.075)

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

// backtesting date range
from_day = input(defval=1, title="From Day", minval=1, maxval=31)
from_month = input(defval=1, title="From Month", minval=1, maxval=12)
from_year = input(defval=2018, title="From Year", minval=1900)

to_day = input(defval=1, title="To Day", minval=1, maxval=31)
to_month = input(defval=1, title="To Month", minval=1, maxval=12)
to_year = input(defval=9999, title="To Year", minval=1900)

time_cond = true

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)

middle = (swh+swl)/2

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("LONG", strategy.long, comment="LONG", 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("SHORT", strategy.short, comment="SHORT", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


더 많은