매개변수 최적화를 기반으로 한 추세 추종 양적 전략


생성 날짜: 2024-01-02 11:01:22 마지막으로 수정됨: 2024-01-02 11:01:22
복사: 1 클릭수: 754
avatar of ChaoZhang ChaoZhang
1
집중하다
1664
수행원

매개변수 최적화를 기반으로 한 추세 추종 양적 전략

개요

이 전략의 주요 아이디어는 percentrank 지표와 변수 최적화를 결합하여 가격 추세를 판단하고 추적하는 것입니다. 이 전략은 현재 가격과 특정 역사적 기간의 가격 크기의 퍼센티지를 비교하여 거래 신호를 생성하여 중간 거울 효과를 캡처하고 추세를 추적하여 추가 수익을 얻습니다.

전략 원칙

이 전략은 percentrank 지표를 사용하여 가격 흐름을 판단한다. percentrank은 현재 가격의 비교 강도를 보고 있는 주기에 나타낸다. len은 보고 있는 역사 주기의 길이를 나타낸다.

percentrank의 값 영역은 0에서 100 사이이다. percentrank 값이 0에 가까울 때 현재 가격이 체크 사이클 내 최저 가격에 가까울 때 가치 저평가 영역에 속한다. 100에 가까울 때 현재 가격이 체크 사이클 내 최고 가격에 가까울 때 가치 고평가 영역에 속한다.

이 전략은 또한 scale 파라미터를 오차량으로 도입한다. 0에서 100까지의 영역이 scale에서 100+scale까지의 영역으로 이동하도록 한다. 동시에 level_1과 level_2라는 두 개의 신호선을 설정한다. level_1은 다중 레벨을 보고, level_2는 공평한 레벨을 보고 있다.

가격 percentrank 지표가 아래에서 위쪽으로 level_1을 통과할 때 더보기 신호를 생성하고, 위쪽에서 아래로 level_2을 통과할 때 더보기 신호를 생성한다. 평점 조건은 입문 신호와 반대이다.

전략적 이점

  1. %rank 지표를 사용하여 가격 트렌드의 강도를 판단하여, 교착상태와 추격을 피하십시오.
  2. 응용 파라미터 최적화 방법, 편향 스케일 및 신호 라인 값을 조정, 다른 품종 및 주기에 대한 조정을 수행, 안정성을 향상
  3. 트렌드 추적과 반전 거래의 아이디어가 결합되어 신호 라인을 뚫은 후 트렌드를 적시에 추적합니다.

위험 분석

  1. 추세를 잘못 판단하여 불필요한 손실을 초래합니다.
  2. 가격 변동 동향이 명확하지 않은 경우, 잘못된 신호가 발생하기 쉽다.
  3. 잘못된 매개 변수 설정으로 거래 빈도 또는 거래량이 부족할 수 있습니다.

위의 위험을 위해, 파라미터 len,scale,level 설정을 조정하여 최적화할 수 있습니다. 또한 다른 지표와 결합하여 확인하여 잘못된 거래를 방지할 수 있습니다.

최적화 방향

이 전략에는 더 많은 최적화 가능성이 있습니다:

  1. 단위 손실을 줄이기 위해 스톱포트를 도입할 수 있습니다.
  2. 이동 평균선과 같은 지표와 결합하여 확인하여 잘못된 신호를 필터링 할 수 있습니다.
  3. 기계 학습 방법을 결합할 수 있는 자동 최적화 매개 변수
  4. 여러 시간 주기를 동시에 실행할 수 있습니다.

요약하다

이 전략은 전체적인 아이디어가 명확하고, 변수 최적화 된 정량적 방법을 사용하여 가격 흐름을 판단하고 추적한다. 실제 가치는 있지만, 실제 위험을 줄이고 안정적인 수익성을 높이기 위해 추가 테스트 및 최적화가 필요합니다.

전략 소스 코드
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
basePeriod: 15m
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/
// © Alex_Dyuk

//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)

prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)

longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
    strategy.close("Long")
    
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
    strategy.close("Short")