브레이크아웃 기반 회귀 전략


생성 날짜: 2024-03-01 11:58:56 마지막으로 수정됨: 2024-03-01 11:58:56
복사: 2 클릭수: 651
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

브레이크아웃 기반 회귀 전략

개요

이 전략은 원유 선물 시장의 변동성을 활용하기 위한 체계화된 방법이다. 그것은 빠른 이동 평균이 느린 이동 평균보다 높으면 더 큰 것을 의미하며, 느린 이동 평균이 빠른 이동 평균보다 높으면 더 작은 것을 의미한다.

이 원칙에 따라 잠재적인 장입점과 단입점들을 식별한다. 입장은 오직 특정 수의 ?? 을 유지하며, 이 파라미터는 Exit after bars ?? 의 입력으로 제어된다.

전략 원칙

  1. 9개의 K선에서 가장 높은 폐업 가격을 계산하여, 돌파구를 판단하는 기준으로
  2. 가장 최근 50 K 라인의 최저 종식 가격을 계산하여 돌파를 판단하는 기준으로
  3. 최근 5개의 K선과 20개의 K선의 평균 파도 대칭을 계산하여 K선 형태가 점차 확대되거나 축소되는지를 판단한다.
  4. 긴 라인과 짧은 라인 브레이크 신호를 식별하십시오: 닫기 가격이 가장 높은 닫기 가격과 같고 K 라인이 점차적으로 줄어들 때 더 많이; 닫기 가격이 가장 낮은 닫기 가격과 같고 K 라인이 점차적으로 줄어들 때 빈
  5. 돌파 이후의 고정근 K선 평준화 퇴장: 조정 가능한 변수 변경 평준화 간격

우위 분석

  1. 역전 전략, 역사 최고치와 비교하여 시장 방향을 판단하는 방법
  2. 변동적 판단과 함께 가짜 돌파구를 피하십시오.
  3. 고정 루트 K 라인 출전, 특정 이윤을 잠금하고, 회수 회피

위험 분석

  1. 시장 구조의 변화에 따라 역사적인 극한이 변경되어 신호 실패가 발생할 수 있습니다.
  2. 허위 침입으로 감옥
  3. 부적절한 출전 간격 변수, 더 많은 수익을 잃거나 손실을 증가시킬 수 있습니다.

최적화 방향

  1. 극한값 변수는 실무 통계학으로 최적화할 수 있다.
  2. 진격 확률을 평가하는 변동률 지표가 포함될 수 있다
  3. 전략적 재측정 결과를 통해 오프시트 루트 수를 최적화할 수 있다.

요약하다

이 전략은 파격과 회귀를 이용한 단기 트렌드를 판단하는 변동성 전략이다. 최적화된 매개 변수 설정과 추가 변동률 지표 판단을 통해 가짜 파격 확률을 줄이고 수익 수준을 높일 수 있다. 동시에 고정 루트 K 라인의 빠른 퇴출 메커니즘은 특정 수익을 잠금하고 위험을 효과적으로 제어할 수 있다. 이 전략은 짧은 라인 운영의 보조 도구로 사용될 수 있으며, 매개 변수를 조정하여 더 긴 주기 운영 신호를 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
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/
// © Celestial_Logic

//@version=5
strategy("Crudeoil Breakout strategy", overlay = true, initial_capital = 20000, default_qty_type = strategy.fixed, default_qty_value = 1)


highestCloseLookback = input(9 , title = 'Highest Close lookback')
lowestCloseLookback  = input(50, title = 'Lowest Close lookback'  ) 

exitAfter = input(10, title = 'Exit after bars')

hc = ta.highest(close,highestCloseLookback)
lc = ta.lowest(close,lowestCloseLookback)

rangeFilter = (ta.sma( (high - low), 5 ) > ta.sma((high-low), 20) ) // Candles getting bigger.

longCondition  = (close == hc ) and not rangeFilter
shortCondition = (close == lc ) and not rangeFilter
if  longCondition
    strategy.entry(id = 'long', direction = strategy.long) 
if shortCondition
    strategy.entry(id = 'short', direction = strategy.short)



var int longsince = 0 
var int shortsince = 0 

if strategy.position_size > 0 
    longsince += 1
else
    longsince := 0

if strategy.position_size < 0 
    shortsince += 1 
else 
    shortsince := 0

if longsince >= exitAfter 
    strategy.close(id = 'long', comment = 'long close')
if shortsince >= exitAfter
    strategy.close(id = 'short', comment = 'short close')