일일 피벗을 기반으로 한 롱 및 숏 자동 트레이딩 전략


생성 날짜: 2024-01-23 14:24:22 마지막으로 수정됨: 2024-01-23 14:24:22
복사: 3 클릭수: 709
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

일일 피벗을 기반으로 한 롱 및 숏 자동 트레이딩 전략

개요

이 전략은 일선의 최고 가격과 최저 가격을 두 줄로 그리는 것으로, 다공간 판단의 근거로 사용된다. 가격이 최고 가격선을 넘으면 더 많이 하고, 가격이 최저 가격선을 넘으면 더 많이 한다. 자동으로 다공간 전환이 가능하다.

전략 원칙

이 전략은 주로 태양선의 축점으로 공백을 판단한다. 축점이라고 불리는 것은 어제의 최고 가격과 최저 가격이다. 이 두 개의 선은 거래 영역을 구성하며, 오늘의 가격이 이 두 점 중 하나를 뚫면 트렌드 전환이 일어난다고 판단할 수 있다.

특히, 전략의 주요 논리는 다음과 같습니다.

  1. 최고 가격 라인: 어제의 최고 가격 경계를 그리며, 오늘 종식 가격이 이 선을 넘으면 다중 신호
  2. 최저 가격 라인: 어제의 최저 가격 경계를 그리며, 오늘 종결 가격이 이 선을 뚫면 공백 신호입니다.
  3. 다자 입시: 종식 가격에서 최고 가격 선을 넘으면 다자 입장을 엽니다.
  4. 공백 입시: 종결 가격 아래 최저 가격선을 통과했을 때 공백을 다.
  5. 스톱: 다중 헤드 스톱은 최저 가격 라인 근처에 있고, 빈 헤드 스톱은 최고 가격 라인 근처에 있습니다.

이런 식으로, 가장 높은 가격과 가장 낮은 가격의 돌파구를 통해 트렌드를 포착하고, 자동으로 다중 공간 전환을 가능하게 한다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 전략은 명확하고 이해하기 쉽고 실행이 가능합니다.
  2. 일일전선거래, 시간주기가 길고, 단선소음에 방해받지 않는다.
  3. 자동으로 공백을 전환하여 추세없는 시장을 최대한 피할 수 있습니다.
  4. 위험 통제에 도움이 되는 명확한 정지점

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 일선 거래 기간이 길어서 적당히 손실을 막을 수 없다.
  2. 허위 침입은 불필요한 손실을 초래할 수 있습니다.
  3. 지분 보유 기간이 길어지면 손실이 커질 수 있다.

이러한 위험들에 대해, 우리는 다음과 같은 몇 가지 측면에서 최적화할 수 있습니다:

  1. 일선 돌파와 동시에, 다른 더 높은 주파수 지표들의 확인이 추가되었습니다.
  2. 브레이크로 결정된 변수를 최적화하여 일부 가짜 브레이크를 필터링합니다.
  3. 이동 상쇄 또는 트레일러와 같은 방법으로 적시에 상쇄

최적화 방향

이 전략에는 더 많은 최적화 가능성이 있습니다:

  1. 더 많은 품종과 더 긴 데이터에서 재검토하여 전략의 안정성을 검증할 수 있습니다.
  2. 다른 획기적인 지표들, 통로들, 브린밴드들, 그리고 다른 것들을 탐구할 수 있습니다.
  3. 거래량 지표와 결합하여 수많은 돌파구를 피할 수 있습니다.
  4. 더 많은 필터링 조건을 추가하여 가짜 침투 가능성을 줄일 수 있습니다.
  5. 기계학습과 같은 방법을 사용하여 파라미터를 최적화 할 수 있습니다.

요약하다

전반적으로, 이 전략은 간단한 일선 축 아이디어에 기반하고, 다공간 자동 전환을 구현한다. 전략 논리는 명확하고 이해하기 쉽고, 최적화를 통해 안정성을 더욱 향상시킬 수 있다. 투자자는 자신의 위험 선호도에 따라 적절한 매개 변수를 선택하여 실디 거래에 적용할 수 있다.

전략 소스 코드
/*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"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's DEX Strategy", shorttitle = "DEX str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
showlines = input(true, title = "Show lines")
showbg = input(false, title = "Show background")
showday = input(false, title = "Show new day")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//New day trand
bar = close > open ? 1 : close < open ? -1 : 0
newday = request.security(syminfo.tickerid, 'D', time)

//Lines
uplevel = request.security(syminfo.tickerid, 'D', high)
dnlevel = request.security(syminfo.tickerid, 'D', low)
upcolor = uplevel == uplevel[1] and showlines ? lime : na
dncolor = dnlevel == dnlevel[1] and showlines? red : na
plot(uplevel, offset = 1, linewidth = 2, color = upcolor)
plot(dnlevel, offset = 1, linewidth = 2, color = dncolor)

//Background
size = strategy.position_size
col = time == newday + 86400000 and showday ? blue : showbg and size > 0 ? lime : showbg and size < 0 ? red : na
bgcolor(col)

//Orders
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong ? lot : 0, stop = uplevel, when = truetime)
    strategy.entry("Close", strategy.short, needshort ? lot : 0, stop = dnlevel, when = truetime)