피셔 변환 지표에 기초한 백테스팅 전략

저자:차오장, 날짜: 2024-01-25 14:22:36
태그:

img

전반적인 설명

이 전략은 피셔 변환 지표에 기반한 백테스팅 전략이다. 피셔 변환 공식은 가격 극단과 전환점을 식별하기 위해 가격 데이터를 정상 분포로 변환할 수 있다. 이 전략은 피셔 변환 지표를 결합하여 가격 추세를 결정하고 자동화된 거래를 달성한다.

전략 원칙

  1. 가장 최근의 길이 기간에서 HL2의 최대 xMaxH 및 최소 xMinL을 계산합니다.
  2. 피셔 변환 지표를 계산합니다.
    • nValue1는 0.33× (표준화 HL2) + 0.67×nValue1의 이전 기간
    • nValue2는 -0.99에서 0.99 사이의 nValue1을 제한합니다.
    • nFish는 nValue2의 로가리듬 변환입니다
  3. 위치 방향을 결정하기 위해 n피쉬가 긍정적이거나 음적이 있는지 결정
  4. 포지션 신호 포시그, 만약 역 거래가 설정되어 있다면, 반대 위치를 취
  5. 입구 신호: 포시그=1 긴, 포시그=-1 짧은

이점 분석

  1. 피셔 변환 지표는 가격 극단과 전환점을 식별하여 추세를 정확하게 결정할 수 있습니다.
  2. HL2 지표를 결합하여 변동을 필터링하면 승률이 증가합니다.
  3. 리버스 거래는 다른 시장 환경에 적응하도록 설정할 수 있습니다.
  4. 수동 판단 없이 자동화 된 거래는 거래 비용을 줄입니다.

위험 분석

  1. 피셔 변환 지표는 지연을 가지고 있으며 단기 가격 변화를 놓칠 수 있습니다.
  2. 변동성 트렌드에서 높은 스톱 로스 위험
  3. 부적절한 역거래 설정은 체계적인 잘못된 거래로 이어질 수 있습니다.
  4. 크로스 사이클 검증이 없다면, 어떤 잘못된 긍정적 위험도 있습니다.

위험 해결 방법:

  1. 지연을 줄이기 위해 적절한 매개 변수를 조정
  2. 단일 거래 손실을 제어하기 위해 중지 손실 범위를 증가
  3. 필터링을 위한 다른 지표와 결합한 역거래를 최적화
  4. 추세, 가격 수준, 사이클 등을 여러 가지 확인 메커니즘을 증가

전략 최적화 방향

  1. 주요 트렌드가 일관성을 보장하기 위해 트렌드 지표를 결합
  2. 가격 역전 판단 정확성을 높이기 위해 주기 지표를 증가
  3. 거짓 양성 반응을 피하기 위한 여러 시간 프레임 검증
  4. 동적으로 스톱 손실 범위를 조정합니다
  5. 승률과 수익률을 극대화하기 위해 매개 변수를 최적화

위의 최적화는 전략의 승률을 더욱 향상시키고, 이익을 잠금하고, 위험을 통제하고, 더 안정적이고 효율적인 거래 결과를 얻을 수 있습니다.

요약

피셔 변환 지표 백테스팅 전략은 피셔 변환 지표를 통합하여 가격 반전점과 트렌드 방향을 결정합니다. 이 전략은 정확한 판단과 높은 수준의 자동화를 가지고 있습니다. 매개 변수 최적화를 통해 안정적이고 효율적인 거래 결과를 얻을 수 있습니다. 그러나 지연 및 거짓 양성과 같은 특정 위험도 있습니다. 전략을 더 유연하고 견고하게 만들기 위해 여러 검증 메커니즘과 동적 조정 방법을 도입하여 추가 최적화가 필요합니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v2.0 22/12/2016
// 	Market prices do not have a Gaussian probability density function
// 	as many traders think. Their probability curve is not bell-shaped.
// 	But trader can create a nearly Gaussian PDF for prices by normalizing
// 	them or creating a normalized indicator such as the relative strength
// 	index and applying the Fisher transform. Such a transformed output 
// 	creates the peak swings as relatively rare events.
// 	Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x))
// 	The sharp turning points of these peak swings clearly and unambiguously
// 	identify price reversals in a timely manner. 
//
//  For signal used zero. 
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Fisher Transform Indicator by Ehlers Backtest", shorttitle="Fisher Transform Indicator by Ehlers")
Length = input(10, minval=1)
reverse = input(false, title="Trade reverse")
hline(1, color=white)
xHL2 = hl2
xMaxH = highest(xHL2, Length)
xMinL = lowest(xHL2,Length)
nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
nValue2 =   iff(nValue1 > .99,  .999,
	         iff(nValue1 < -.99, -.999, nValue1))
nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
pos = iff(nFish > 0, 1,
	   iff(nFish < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
// barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nFish, color=green, title="Fisher")
plot(nz(nFish[1]), color=red, title="Trigger")

더 많은