이 글은 가격 회귀 비율을 기반으로 트렌드 추적을 하는 양적 거래 전략에 대해 자세히 설명할 것이다. 이 전략은 지역 고점을 식별하여 특정 회귀 비율로 입점을 한다.
1 전략
이 전략의 핵심 논리는 특정 기간 내의 최고 가격을 식별하고, 그 다음에는 일정 비율의 회수 위치에서 거래를 추적하는 것이다. 구체적인 단계는 다음과 같다:
먼저, K선에서 가장 최근 90개의 최고값을 지역 최고점으로 계산합니다.
가격이 그 고위점으로부터 일정 비율 (예: 3%) 을 되돌려 놓은 후에, 구매 추적을 한다.
스톱은 입시 가격에서 일정 비율로 상승하는 것으로 설정되어 있다 (예: 6%), 가격이 스톱에 도달했을 때 포지션을 청산한다.
“지속”을 추적하기 위해 스톱 손실을 설정하지 마십시오.
이렇게, 지역 최고점 회귀의 비율에 의해 진입 시기를 판단하여, 트렌드를 확인한 후에만 진입하는, 진입 흔들림을 효과적으로 필터링 할 수 있다. 정지 설정은 또한 각 수익에 대한 일정 기대 관리를 한다.
2 전략적 장점
이 전략의 가장 큰 장점은 회귀 비율을 사용하여 트렌드를 판단하고, 많은 잡음을 필터링하는 것이다. 직접 전환점에서 진입하는 것과 비교하여, 그것은 조준된 진입의 확률을 줄일 수 있다.
또 다른 장점으로는 스톱 로직이 설정되어 있습니다. 이것은 각 거래의 이익과 손실을 통제할 수 있도록 하며, 적극적인 자금 관리 원칙에 부합합니다.
마지막으로, 리콜 비율보다 더 큰 스톱을 추적하는 것은 전략에 약간의 리스크 보상 메커니즘을 부여합니다.
이 전략은 장점이 있지만, 실제 사용에서는 다음과 같은 위험도 주의해야 합니다.
첫째, 회귀 비율은 신중하게 설정해야 합니다. 너무 깊거나 너무 은 회귀는 수익 공간을 영향을 미칠 수 있습니다.
두 번째로, 단독으로 더 큰 위험을 감수하는 전략이 없습니다. 강한 추세 반전이 더 큰 손실을 초래할 수 있습니다.
마지막으로, 변수 최적화가 잘못되면 오버피칭 문제가 발생하여 신호 품질이 떨어진다.
네 가지 내용
이 글은 가격 회귀 비율에 기반한 트렌드 추적을 위한 양적 전략에 대해 자세히 소개한다. 이는 트렌드 방향을 효과적으로 식별하여 회귀를 이용해서 입주를 할 수 있다. 또한 정지 관리를 설정하는 것도 전략에 일정 수준의 위험 관리 장치를 갖출 수 있다.
/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 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/
// © luboremenar
//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)
// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)
// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)
if (longCondition1)
strategy.entry("Long1", strategy.long, qty = strategy.equity/close)
strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
when= crossover(strategy.position_size, 0))
// plot
plot(strategy.equity)
// for testing, debugging
//test=0.0
//if(crossover(strategy.position_size, 0))
// test := (close*1.06-close)*basis_points
//plot(test)