자동 장기/단기 거래 전략

저자:차오장, 날짜: 2024-01-23 14:24:22
태그:

img

전반적인 설명

이 전략은 장기/단기 트렌드의 판단을 위해 일일 촛불의 최고 및 최저 가격에 기반한 두 줄을 그립니다. 가격이 가장 높은 가격 라인을 통과 할 때 길게 가고 가격이 가장 낮은 가격 라인을 통과 할 때 짧게됩니다. 자동으로 긴 위치와 짧은 위치 사이를 전환 할 수 있습니다.

전략 논리

이 전략은 주로 일일 촛불의 피보트 포인트를 활용하여 긴/단한 트렌드를 결정한다. 소위 피보트 포인트는 어제의 최고와 최저 가격을 가리킨다. 이 두 선은 거래 범위를 형성한다. 오늘의 가격이 그 중 하나를 뚫면 트렌드의 반전을 나타낸다.

구체적으로, 주요 논리는 다음과 같습니다:

  1. 가장 높은 가격선: 어제의 가장 높은 가격 수준을 표시합니다. 돌파구는 긴 추세를 나타냅니다.
  2. 최저 가격선: 어제의 최저 가격 수준을 표시합니다. 돌파구는 짧은 추세를 나타냅니다.
  3. 롱 엔트리: 닫기 가격이 가장 높은 가격 라인을 넘을 때 롱 포지션을 개척합니다.
  4. 짧은 진입: 닫기 가격이 최저 가격선을 넘을 때 짧은 입장을 개척합니다.
  5. 스톱 로스: 최저 가격 라인 근처에 있는 긴 스톱 로스, 가장 높은 가격 라인 근처에 있는 짧은 스톱 로스.

가장 높은 가격과 가장 낮은 가격의 돌파구를 통해 트렌드를 포착함으로써, 그것은 긴 가격과 짧은 가격 사이의 자동 전환을 실현합니다.

이점 분석

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

  1. 간단한 논리, 이해하기 쉽고 실행하기 쉬운
  2. 일간 바를 기준으로, 긴 사이클, 단기 소음에 덜 민감하다
  3. 장기 및 단위 사이의 자동 전환, 트렌드가 아닌 시장을 피합니다.
  4. 명확한 스톱 로스, 위험 통제에 유리하다

위험 분석

몇 가지 위험:

  1. 매일 바는 낮은 주파수를 가지고 있으며, 적시에 손실을 멈출 수 없습니다
  2. 가짜 돌파구 는 불필요한 손실 을 초래 할 수 있다
  3. 장기 보유는 손실을 증가시킬 수 있습니다.

개선 사항:

  1. 확인을 위해 다른 높은 주파수 표시기를 추가합니다.
  2. 가짜 돌파구를 필터링하기 위해 매개 변수를 최적화
  3. 신속한 스톱 로스를 위해 점진적 스톱 로스 방법을 채택

최적화 방향

몇 가지 지침:

  1. 안정성 테스트를 위해 다른 제품과 더 긴 데이터 세트를 더 많은 역 테스트
  2. 채널, 볼링거 밴드 등과 같은 다른 돌파구 지표를 탐구하십시오.
  3. 거래 부피를 포함하여 부피 없이 잘못된 브레이크를 피합니다.
  4. 잘못된 브레이크를 줄이기 위해 더 많은 필터를 추가

요약

요약하자면, 이 간단한 전략은 매일의 피보트를 기반으로 자동 장기/단순을 실현합니다. 논리는 명확하고 이해하기 쉽습니다. 추가 최적화는 안정성을 향상시킬 수 있습니다. 투자자는 개인적인 위험 선호도에 따라 라이브 거래에 적용 할 수 있습니다.


/*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)

더 많은