Fisher Transformation을 기반으로 한 Ehlers 거래 전략


생성 날짜: 2024-01-08 16:51:10 마지막으로 수정됨: 2024-01-08 16:51:10
복사: 0 클릭수: 1009
avatar of ChaoZhang ChaoZhang
1
집중하다
1630
수행원

Fisher Transformation을 기반으로 한 Ehlers 거래 전략

개요

이 전략은 기술 분석의 대가인 존 엘러스가 설계한 피셔 전환 지표에 기반하여, 가격 트렌드 반전 지점을 자동으로 식별하여, 장단 포지션을 자동으로 거래합니다. 그것의 가장 큰 장점은 가격 반전의 정확성과 적시에 있습니다.

전략 원칙

이 전략은 피세 변환 공식을 사용하여 가격 표준화를 하고 가시 분포와 유사한 가격 순서를 생성한다. 피세 변환 공식은: y = 0.5 * ln((1+x) /(1-x)) 이다. 이 변환을 통해 가격 극한값을 상대적으로 더 드문 사건으로 변환할 수 있다. 최신 피세 변환 값이 이전 기간보다 높거나 낮을 때 가격 역전이 발생할 수 있음을 나타낸다. 이 전략은 지표의 전환점에 따라 거래 신호를 발산한다.

특히, 전략적 단계는 다음과 같습니다.

  1. HL2의 평균값을 계산해보세요.
  2. 스 (Length) 주기의 최고값 xMaxH와 최저값 xMinL을 계산합니다.
  3. 표준화 가격을 nValue1=(xHL2 - xMinL) / (xMaxH - xMinL) - 0.5로 계산한다.
  4. nValue1을 부드럽게 처리하여 nValue2를 얻습니다.
  5. nValue2에 피쉬 변환 공식을 적용하여 피쉬 변환 지표 nFish를 얻습니다.
  6. nFish를 이전 기간과 비교하여 전환이 발생했는지 판단하고 거래 방향pos를 설정합니다.
  7. 포스 (pos) 는 포스 (pos) 의 방향에 따라 거래 신호를 발산한다.

우위 분석

이 전략의 가장 큰 장점은 거래 신호의 정확성과 적시에 있습니다. 피셔 전환으로 생성 된 가격 순서가 가우스 분포에 거의 일치하기 때문에, 가격 반전이 발생하면 피셔 전환 지표가 빠르게 식별하고 그에 따라 반응 할 수 있습니다. 이것은 적시에 반전 기회를 잡을 수 있도록합니다. 또한, Ehlers 피셔 전환 지표 자체는 오랜 기간 동안 검증되었으며 반전 신호의 정확성은 매우 신뢰할 수 있습니다.

위험 분석

이 전략의 가장 큰 위험은 피셔 변환 후의 가격 순서가 반드시 합리론적 고스 분포와 완전히 일치하지 않는다는 것이다. 시장이 불규칙한 변동이 있을 때, 예를 들어 파열, 폭파 등이 있을 때, 피셔 변환 지표가 잘못된 신호를 발산하는 원인이 될 수 있다. 이 때 기계적으로 거래하면 더 큰 손실이 발생할 수 있다.

이 위험을 줄이기 위해, 다른 지표와 함께 거래 신호 필터를 고려하여 시장의 이상 상태에서 거래하는 것을 피할 수 있습니다. 또는 거래 주파수 및 단일 손실 규모를 줄이기 위해 매개 변수를 적절하게 조정할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. Length 파라미터를 최적화하여 다양한 시장 조건에서 최적의 파라미터 조합을 찾습니다.
  2. 단편적 손실을 제한하기 위한 손해 방지 제도를 강화하고,
  3. 거래 필터링을 강화하여 비정상적인 시장에서 잘못된 거래를 방지합니다.
  4. 다른 지표와 결합하여 조합 전략으로 신호의 정확도를 높인다.

요약하다

이 전략은 Ehlers가 설계한 피시 전환 지표에 기반하여 가격 반전 지점을 신속하게 정확하게 식별하여 거래 기회를 제때 포착할 수 있습니다. 그것의 가장 큰 장점은 거래 신호의 정확성과 시점에 있습니다. 또한 약간의 위험이 있으며, 매개 변수 및 거래 규칙을 최적화하여 위험을 줄여야합니다.

전략 소스 코드
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/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. 
//
// 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")
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 > nz(nFish[1]), 1,
	   iff(nFish < nz(nFish[1]), -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")