이 전략은 기술 분석 마스터인 존 에일러스 (John Ehlers) 가 설계한 피셔 트랜스포름 지표에 기반하여 장기/단기 거래에서 자동으로 가격 트렌드 반전 지점을 식별합니다. 가장 큰 장점은 가격 반전을 식별하는 정확성과 신속성입니다.
이 전략은 피셔 변환 공식을 사용하여 가격을 표준화하고 가우시 분포 가격 순서를 생성합니다. 피셔 변환 공식은: y = 0.5 * ln ((((1+x) / ((1-x)).이 변환을 통해 가격 극단은 비교적 희귀한 이벤트로 변환됩니다. 최신 피셔 변환 값이 이전 기간보다 높거나 낮을 때 가능한 가격 반전을 나타냅니다. 전략은이 지표의 전환점에 따라 거래 신호를 생성합니다.
구체적으로, 전략 단계는 다음과 같습니다.
이 전략의 가장 큰 장점은 거래 신호의 정확성과 시기성입니다. 피셔 변환 가격 순서가 가우스 분포에 근접하기 때문에 피셔 지표로 가격 반전이 신속하게 식별되고 반응 할 수 있습니다. 이것은 반전 기회의 시기적 인 포획을 보장합니다. 또한 Ehlers Fisher 변환 자체도 매우 신뢰할 수있는 반전 신호에 광범위하게 검증되었습니다.
이 전략의 가장 큰 위험은 피셔 변환 가격 순서가 이론적인 가우스 분포에 완벽하게 적합하지 않을 수 있다는 것입니다. 격차와 같은 비정상적인 시장 변동으로 피셔 지표가 잘못된 신호를 생성 할 수 있습니다. 그 신호에 맹목적으로 거래하면 큰 손실이 발생할 수 있습니다.
이 위험을 줄이기 위해, 우리는 신호 필터링을 위해 다른 지표를 결합하는 것을 고려할 수 있습니다. 비정상적인 시장에서 거래를 피하고. 우리는 또한 거래 빈도와 크기를 줄이기 위해 매개 변수를 정밀 조정할 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
이 전략은 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")