피셔 변환 역 테스트 전략

저자:차오장, 날짜: 2023-12-04 13:43:05
태그:

img

전반적인 설명

피셔 변환 백테스트 전략은 가격 반전 지점을 식별하고 그에 따라 거래 신호를 생성하기 위해 가격의 피셔 변환을 계산합니다. 전략은 피셔 변환 공식을 사용하여 가격 분포의 가우스 비 특징을 제거하여 대략적인 가우스 분포를 가진 표준화된 지표를 생성합니다. 전략은 피셔 변환 곡선의 굴곡 지점에 따라 가격 반전을 결정하고 긴 및 짧은 신호를 생성합니다.

전략 원칙

이 전략의 핵심은 자연 가격 분포의 가우스 비 특징을 제거하기 위해 피셔 변환 공식을 사용하여 가격을 처리하는 것입니다. 피셔 변환 공식은:

y=0.5 * ln (((1+x) /(1-x))

여기서 x는 처리된 가격으로, 가장 최근의 길이 기간 동안 가장 높고 가장 낮은 가격을 먼저 찾고 가장 높고 가장 낮은 함수를 사용하여 다음과 같이 정상화하여 얻습니다.

x = (가격 - 최소) / (최대 - 최소) - 0.5

이렇게 처리된 가격은 가우스 분포에 근접합니다. x는 피셔 변환 곡선을 얻기 위해 피셔 변환 공식에 대체됩니다. 피셔 변환 곡선의 굴곡점은 가격 신호 반전입니다.

피셔 변환 곡선이 양에서 음으로 변하면 판매 신호가 생성됩니다. 음에서 양으로 변하면 구매 신호가 생성됩니다.

이점 분석

  1. 피셔 변환은 가격에서 가우스 비 특징을 제거하여 더 잘 행동하고 표준화 된 가격과 더 적은 잘못된 신호를 초래합니다.

  2. 가격 전환점을 파악하고, 상위와 하위까지 추격하는 것을 피합니다

  3. 조정 역감각을 위한 유연한 매개 변수 조정

  4. 사용자 정의 가능한 방향성, 다양한 시장 환경에 적응

  5. 간단한 논리, 이해하기 쉽고 실행하기 쉽습니다.

위험 분석

  1. 부적절한 매개 변수 설정은 회전을 놓칠 수도 있고 잘못된 신호를 생성할 수도 있습니다.

  2. 라이브 거래에서 미끄러지는 것은 완벽한 신호 실행을 막을 수 있습니다.

  3. 가격 변동이 있을 때 변동을 식별하기 어렵다

  4. 리브 트레이딩에서 실행하기 어렵고 반전을 확인해야 합니다.

해결책:

  1. 길이를 조정하여 매개 변수를 최적화

  2. 채우기 위해 적당하게 입력 기준을 완화

  3. 다른 지표를 결합한 잘못된 신호를 필터링합니다.

  4. 규칙을 엄격히 준수하고 위험을 관리하십시오.

최적화 방향

  1. 가장 좋은 조합을 찾기 위해 길이 매개 변수를 최적화

  2. 잘못된 신호를 피하기 위해 필터를 추가합니다. 예를 들어 이동 평균, 변동 지표 등.

  3. 매 거래에 대한 스톱 손실을 제어 손실에 포함합니다

  4. 계속되는 경향을 추적하기 위한 재입구 메커니즘을 추가합니다.

결론

피셔 변환 백테스트 전략은 가우시안이 아닌 가격 특징을 제거하여 가격 반전 지점을 식별합니다. 그것은 쉽게 구현 가능한 평균 반전 전략입니다. 이 전략의 장점은 회전을 잡는 유연한 매개 변수에 있으며 주요 약점은 엄격한 출입 규칙의 필요와 함께 라이브 구현의 어려움입니다. 실용적 적용을 위해이 전략을 최적화하기 위해 다양한 방법을 사용할 수 있습니다.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
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(0, color=blue)
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")

더 많은