TURTLE - ATR 볼린저 밴드 돌파 전략

ATR
생성 날짜: 2024-06-03 10:48:09 마지막으로 수정됨: 2024-06-03 10:48:09
복사: 0 클릭수: 710
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

TURTLE - ATR 볼린저 밴드 돌파 전략

개요

이것은 해파리 거래 법칙에 기반한 트렌드 추적 전략이다. 이 전략은 ATR (평균 실제 파도) 를 사용하여 트렌드 방향과 거래 포지션 크기를 결정한다. 가격이 지난 기간의 최고 가격 또는 최저 가격을 돌파 할 때, 전략은 포지션을 열거나 닫는다. 포지션을 보유하는 것은 가격이 지난 기간의 최고 가격 또는 최저 가격을 돌파 할 때까지 계속 유지되며, 전략은 평평합니다. 이 전략의 목적은 강력한 트렌드 실태를 포착하면서 위험을 엄격하게 제어하는 것입니다.

전략 원칙

이 전략의 핵심은 ATR 지표를 사용하여 트렌드 방향과 거래 포지션 크기를 결정하는 것입니다. ATR 지표는 시장의 변동성을 측정하여 적절한 중지 및 포지션 크기를 결정하는 데 도움이됩니다. 전략의 주요 단계는 다음과 같습니다.

  1. ATR 지수값을 계산한다.
  2. 다중 헤드 및 허공의 돌파 가격 수준을 결정한다. 다중 헤드 돌파 가격은 지난 기간의 최고 가격이며, 허공 돌파 가격은 지난 기간의 최저 가격이다.
  3. 가격이 다수점 돌파가격으로 돌파하면 더 많은 포지션을 열고, 가격이 공백으로 돌파하면 공백 포지션을 열는다.
  4. ATR 지수값과 계정 잔액에 따라 거래 당 포지션 규모를 계산하십시오.
  5. 포지션을 보유, 가격이 지난 기간의 최저 가격을 돌파하기 전까지 (다중 포지션) 또는 최고 가격을 (공백 포지션) 포지션이 종료됩니다.

이런 방식으로, 이 전략은 강력한 트렌드 상황을 포착할 수 있으며, 동시에 위험을 엄격하게 통제할 수 있습니다. ATR 지표의 사용은 시장의 변동에 더 잘 적응하기 위해 포지션 규모를 동적으로 조정하는 데 도움이 될 수 있습니다.

전략적 이점

  1. 트렌드 추적: 이 전략의 목표는 강력한 트렌드 현상을 포착하여 상당한 수익을 창출하는 것입니다.
  2. 위험 제어: ATR 지표를 사용하여 포지션 규모와 스톱 포지션을 결정하여 이 전략은 위험을 효과적으로 제어할 수 있습니다.
  3. 적응력: ATR 지표는 동적으로 조정할 수 있어 전략이 다른 시장 환경에 적응할 수 있다.
  4. 간단하고 사용하기 쉬운: 이 전략의 논리는 명확하고, 이해하기 쉽고, 실행하기 쉽다.

전략적 위험

  1. 트렌드 반전: 시장 추세가 갑자기 반전되면 이 전략은 큰 손실을 입을 수 있다.
  2. 흔들리는 시장: 흔들리는 시장에서, 이 전략은 빈번하게 하위 포지션을 열 수 있으며, 높은 거래 비용을 초래할 수 있다.
  3. 매개 변수 민감성: 이 정책의 성능은 매개 변수 설정에 민감할 수 있으며, 부적절한 매개 변수가 정책의 성능을 떨어뜨릴 수 있다.

이러한 위험들을 해결하기 위해, 다음과 같은 해결책들을 고려할 수 있습니다.

  1. 트렌드 확인 메커니즘을 도입하여 트렌드 반전 시 조기에 포지션을 열지 않도록 한다.
  2. 위기 시장에서 포지션 규모를 줄이거나 거래를 중지하십시오.
  3. 매개 변수를 최적화하여 최적의 매개 변수 조합을 찾습니다.

전략 최적화 방향

  1. 더 많은 지표를 도입: ATR 지표 이외에, 이동 평균과 같은 다른 추세를 확인하는 지표를 도입하여 추세를 판단하는 정확성을 향상시킬 수 있습니다.
  2. 동적 조정 매개 변수: 시장의 변화에 따라 ATR 주기, 가격 돌파 주기 등과 같은 전략 매개 변수를 동적으로 조정합니다.
  3. 제지금 메커니즘에 가입: 특정 수익을 얻은 후, 수익을 고정하고 위험을 줄이기 위해 부분적으로 평형을 고려할 수 있습니다.
  4. 다중 공백 포지션 관리: 전략의 유연성을 높이기 위해, 다중 헤드 및 공백 포지션을 개별적으로 관리하는 것을 고려할 수 있습니다.

이러한 최적화를 통해 전략의 안정성과 수익성을 더욱 높일 수 있습니다.

요약하다

TURTLE-ATR 브린벨트 브레이크 전략은 해파리 거래 법칙에 기반한 트렌드 추적 전략이다. 이 전략은 ATR 지표를 사용하여 트렌드 방향과 거래 포지션 규모를 파악하고, 지난 한 시간 동안의 최고 또는 최저 가격을 뚫고 포지션을 열고, 트렌드가 반전될 때까지 포지션을 보유한다. 이 전략의 장점은 강력한 트렌드 행태를 포착할 수 있다는 데 있다. 그러나, 이 전략은 또한 트렌드 반전, 시장의 흔들림 및 변수 민감성 등의 위험에 직면해 있다.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © luisfeijoo22

//@version=5
strategy("Estrategia de las tortugas_ES", overlay=true, pyramiding=3)

// Parámetros 
atrLength = input.int(20, "Longitud del ATR")
atrFactor = input.float(2, "Factor del ATR")
entryBreakout = input.int(20, "Breakout de entrada")
exitBreakout = input.int(10, "Breakout de salida")
longOnly = input.bool(false, "Solo largos")
shortOnly = input.bool(false, "Solo cortos")


// Cálculo del ATR
atr = ta.atr(atrLength)

// Cálculo de los niveles de breakout
longEntry = ta.highest(high, exitBreakout)[1]
longExit = ta.lowest(low, exitBreakout)[1]
shortEntry = ta.lowest(low, exitBreakout)[1]
shortExit = ta.highest(high, exitBreakout)[1]

// Cálculo del tamaño de la posición
nContracts = math.floor((strategy.equity * 0.01) / (atrFactor * atr))

// Filtra las fechas según el rango deseado
// in_range = time >= timestamp(year(start_date), month(start_date), dayofmonth(start_date)) 

// Condiciones de entrada y salida
longCondition = not longOnly and close > longEntry and time >= timestamp("2023-03-15")
if longCondition
    strategy.entry("Long", strategy.long, qty = nContracts)

shortCondition = not shortOnly and close < shortEntry and time >=  timestamp("2023-03-15")
if shortCondition
    strategy.entry("Short", strategy.short, qty = nContracts)
    
strategy.exit("Exit Long", "Long", stop = longExit)
strategy.exit("Exit Short", "Short", stop = shortExit)

// Visualización de los niveles de breakout
plot(longEntry, "Entrada larga", color.green, style = plot.style_line)
plot(longExit, "Salida larga", color.red, style = plot.style_line)
plot(shortEntry, "Entrada corta", color.green, style = plot.style_line)
plot(shortExit, "Salida corta", color.red, style = plot.style_line)