골든 비율 백테스트 롱 포지션 전략


생성 날짜: 2023-11-28 13:40:35 마지막으로 수정됨: 2023-11-28 13:40:35
복사: 1 클릭수: 678
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

골든 비율 백테스트 롱 포지션 전략

개요

금분할 리테스트 긴 포지션 전략은 스윙 거래 전략이다. 그것은 지난 21 일 동안의 최고 가격과 최저 가격의 금분할 포인트를 기반으로 신호를 생성하고, 리테스트 메커니즘을 가지고, 다수만 하고, 긴 줄 포지션을 갖는 특징이 있다.

전략 원칙

이 전략은 먼저 지난 21일간의 최고 가격 (high21) 과 최저 가격 (low21) 을 계산한 다음 이 둘의 차이점을 계산한다. 거래 신호는: 현재 최저 가격이 low21 + diff * 0.382보다 높고, 전 K 라인 종료 가격이 전 K 라인 개시 가격보다 높을 때, 더 많이 한다.

여기서 금분리선이 중요한 기술적 지표로 사용된 이유는 금분리선이 시장의 일반적인 지지점이나 저항점과 대응하기 때문이다. 0.382와 0.236은 회전점 또는 반발점으로 자주 감시되며, 자연계에서 가장 신기한 숫자 중 하나라고 할 수 있다.

우위 분석

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

  1. 금분리 이론을 사용하여 거래를 안내하는 것은 비교적 성숙한 기술적 분석 방법이다.

  2. 하지만, 이 모든 것은 시스템에서 위험을 줄일 수 있습니다.

  3. 트렌드 추적 메커니즘을 사용하여 상향 탄력으로 입학을 결정합니다.

  4. 위험도 조절할 수 있는 명확한 스톱 라인이 있습니다.

  5. 회귀 매개 변수는 조정할 수 있으며, 다양한 시장 환경에서의 효과를 테스트할 수 있다.

위험 분석

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

  1. 역사적인 데이터에 의존하여 시장 구조의 변화에 민감하지 않을 수 있습니다.

  2. 그러나, 이 경우에도, 이 차이는 하룻밤 동안의 GAP에 의해 흔들릴 수 있습니다.

  3. 만약 상황이 급격하게 변동한다면, 잘못된 회수주기는 잘못된 신호로 이어질 수 있다.

  4. 수량 거래 자체의 미끄러지 비용도 수익에 영향을 미칠 수 있습니다.

이러한 위험은 재측정주기 파라미터를 조정하고, 스톱로스 위치를 최적화하고, 슬라이드 포인트 비용을 고려하는 등의 방법으로 감소시킬 수 있다.

최적화 방향

이러한 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 기계 학습 알고리즘을 기반으로 자동으로 최적화 변수를 사용하여 재측정 주기의 변수를 현재의 시장 환경에 더 적합하게 만듭니다.

  2. 주식 지수 선물과 같은 금융 파생상품과 결합하여, 레버리지를 사용하여 대폭 조작한다.

  3. 모델에 추가된 급격한 사건의 처리에 대한 인식 메커니즘, 예를 들어 점프 틈에 대한 인식 메커니즘

  4. 시장의 변동성에 따라 동적 슬라이드 스톱을 설정하여 손실을 중지하는 전략을 최적화하십시오.

요약하다

전체적으로 볼 때, 이것은 금분리선 원리를 이용한 명확한 진입 메커니즘과 상쇄 사고를 가진 긴 줄 다목적 전략이다. 파라미터 조정, 모델 최적화, 조합 응용 등의 방법을 통해 신뢰할 수 있는 양적 거래 전략으로 최적화 할 수 있다.

전략 소스 코드
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omkarkondhekar

//@version=4
strategy("GRBLong", overlay=true)

highInput = input(title = "High Days", type = input.integer, defval = 21, minval = 11)
lowInput = input(title = "Low Days", type = input.integer, defval = 21, minval = 5)

// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2019, minval=1800, maxval=2100)

// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

high21 = highest(high, highInput)
low21 = lowest(low, lowInput)

diff = high21 - low21

longEntrySignal = low > low21 + (diff * 0.382) and close[1] > open[1] 

strategy.entry("Long", strategy.long, limit = low, when = longEntrySignal and afterStartDate)
strategy.exit("Long Exit", "Long", stop = low21 + (diff * 0.236))

plot(low21 + (diff * 0.382), color= color.green)
plot(low21 + (diff * 0.236), color = color.red)