양적 전략에 따라 매개 변수 최적화 경향

저자:차오장, 날짜: 2024-01-02 11:01:22
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 퍼센트랭크 지표와 매개 변수 최적화를 결합하여 가격 트렌드를 판단하고 추적하는 것입니다. 이 전략은 거울 효과를 파악하고 과도한 수익을 위한 트렌드를 추적하기 위해 특정 역사적 기간 동안의 가격의 비율과 현재 가격을 비교하여 거래 신호를 생성합니다.

전략 원칙

이 전략은 가격 트렌드를 결정하기 위해 퍼센트랭크 지표를 사용합니다. 퍼센트랭크는 현재 가격의 상대적 강도를 표시합니다. 패러미터 len은 볼 수있는 역사 기간의 길이를 나타냅니다.

퍼센트랭크 값의 범위는 0에서 100입니다. 퍼센트랭크 값이 0에 가깝으면 현재 가격이 관측 기간 중 가장 낮은 가격에 가깝고 과평가된 영역에 있음을 의미합니다. 100에 가깝으면 현재 가격이 관측 기간의 가장 높은 가격에 가깝고 과평가된 영역에 있음을 의미합니다.

이 전략은 또한 0에서 100 범위에서 100+ 규모 범위로 이동하기 위해 오프셋으로 스케일 매개 변수를 도입합니다. 두 개의 신호 라인 level_1과 level_2도 설정되어 있습니다. level_1은 긴 수준을 표시하고 level_2는 짧은 수준을 나타냅니다.

가격 퍼센트랭크 지표가 level_1을 상향으로 넘으면 긴 신호가 생성됩니다. level_2을 하향으로 넘으면 짧은 신호가 생성됩니다. 출구 조건은 입력 신호와 반대입니다.

전략 의 장점

  1. 가격 트렌드의 강도를 결정하기 위해 퍼센트랭크 지표를 사용하십시오. 포획되거나 최고치를 쫓는 것을 피하십시오.
  2. 패러미터 최적화 방법을 적용하여 오프셋 스케일 및 신호 라인 임계치를 조정하여 안정성을 향상시키기 위해 다른 제품 및 사이클
  3. 트렌드를 따라와 신호선을 통과 한 후 트렌드를 적시에 추적하기 위해 트렌드 다음과 평균 반전 거래 아이디어를 결합하십시오.

위험 분석

  1. 부득이한 손실을 초래하는 추세에 대한 잘못된 판단
  2. 가격 변동성과 추세가 불분명할 때 잘못된 신호를 생성하는 경향이 있습니다.
  3. 부적절한 매개 변수 설정은 너무 빈번한 거래 또는 거래량이 충분하지 않을 수 있습니다.

위의 위험을 해결하기 위해, len, 규모, 수준과 같은 매개 변수는 최적화를 위해 조정 될 수 있습니다. 다른 지표는 또한 오류 거래를 피하기 위해 확인을 위해 통합 될 수 있습니다.

최적화 방향

전략의 더 많은 최적화를 위한 여지가 있습니다.

  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")

    

더 많은