フィッシャー変換に基づくエーラーズ取引戦略


作成日: 2024-01-08 16:51:10 最終変更日: 2024-01-08 16:51:10
コピー: 0 クリック数: 1009
1
フォロー
1630
フォロワー

フィッシャー変換に基づくエーラーズ取引戦略

概要

この戦略は,技術分析の巨匠であるジョン・エラーズが設計したフィッシャー変換指標に基づいて,価格のトレンドの逆転点を自動的に認識し,長短ポジションの自動取引を行う.その最大の優点は,価格の逆転を認識する正確さと時効性にある.

戦略原則

この策略は,フィシェル変換公式を使用して価格を標準化し,近似高士分布の価格配列を生成する.フィシェル変換公式は:y = 0.5 * ln (((1+x) / (((1-x)) である.この変換によって,価格の極値を比較的まれなイベントに変換することができる.最新のフィシェル変換値は,前の期に比べて高いか低いかである場合,価格逆転が起こる可能性があることを示す.この策略は,この指標の転換点に基づいて取引信号を発信する.

具体的には,戦略のステップは以下の通りです.

  1. HL2の平均値を計算する.
  2. 長さの周期内の最大値xMaxHと最小値xMinLを計算する.
  3. 標準価格nValue1=(xHL2 - xMinL) / (xMaxH - xMinL) - 0.5を計算する.
  4. nValue1をスムーズに処理し,nValue2が得られ,極限値を取ることを防ぐ.
  5. nValue2に対するフィッシェ変換公式を適用し,nFishのフィッシェ変換指標を得ます.
  6. nFishを前期値と比較し,転向が起きたかどうかを判断し,取引方向posを設定します.
  7. ポジションの空き位置の方向に照らして取引シグナルを発信する.

優位分析

この戦略の最大の利点は,その取引信号の正確さと時性にある.フィッシャー変換によって生成される価格配列が,高氏分布にほぼ適合しているため,価格が逆転したときに,フィッシャー変換指数は迅速に認識し,それに応じて反応することができる.これは,逆転の機会を間に合うように把握することを保証する.さらに,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")