フィッシャー変換指標バックテスト戦略


作成日: 2024-01-25 14:22:36 最終変更日: 2024-01-25 14:22:36
コピー: 0 クリック数: 772
1
フォロー
1617
フォロワー

フィッシャー変換指標バックテスト戦略

概要

この戦略は,フィッシャー変換指数に基づく反測戦略である.フィッシャー変換公式は,価格データを正規分布に変換し,価格のピークポイントとターニングポイントを識別するために使用される.この戦略は,フィッシャー変換指数と組み合わせて価格の傾向を判断し,自動取引を実現する.

戦略原則

  1. HL2指標を計算する
  2. 最新のLength周期におけるHL2の最大値xMaxHと最小値xMinLを計算する
  3. ファイシャーの変換指数を計算する
    • nValue1は0.33× (HL2標準化) +0.67×nValue1の前の周期値である
    • nValue2 制限 nValue1 は -0.99 から 0.99 の間
    • nFish を nValue2 の対数関数に変換する
  4. nFishを正または負で判断し,ポジションの方向を決定します.
  5. ポジションシグナルpossig,逆取引を設定すると,ポジションが反転する
  6. “possig=1 プラス” “possig=-1 ゼロ”

戦略的優位分析

  1. フィッシャー変換指数は価格のピークとターニングポイントを識別し,トレンドを正確に判断します.
  2. HL2のフィルタリング振動と組み合わせた勝利率の向上
  3. 逆取引を設定し,異なる市場環境に対応
  4. 自動化された取引で,人為的な判断は不要になり,取引コストが低下します.

リスク分析

  1. Fisher Conversion Indicatorは遅滞しており,ショートラインの価格変化を逃している可能性があります.
  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")