トリプルEMAとフィッシャートランスフォームトレンドモメンタム戦略

TEMA EMA Fisher Transform Zero Line SMA
作成日: 2025-02-20 17:41:02 最終変更日: 2025-02-20 17:41:02
コピー: 2 クリック数: 415
2
フォロー
319
フォロワー

トリプルEMAとフィッシャートランスフォームトレンドモメンタム戦略 トリプルEMAとフィッシャートランスフォームトレンドモメンタム戦略

概要

この戦略は,トリプルインデックス移動平均 ((TEMA) とフィッシャートランスフォームという2つの技術指標を組み合わせて,トレンドと動力の信号を識別して入場と出場のタイミングを決定する.TEMAは,低遅延のトレンド追跡指標として,市場のトレンドの方向を効果的に識別できるが,フィッシャートランスフォームは,価格変化を高氏正規分布に変換することによって,より明確な動力の信号を提供する.戦略は,トレンドの追跡と動力の分析の優位性を組み合わせて,取引の触発条件として交差信号を採用する.

戦略原則

戦略の核心的な論理は,以下の2つの主要な指標に基づいています.

  1. TEMA指数は,三重指数移動平均計算方法を採用し,3×EMA - 3×EMA ((EMA) + EMA ((EMA)) の公式により,従来の移動平均の遅れを軽減し,デフォルト周期は21である.
  2. フィッシャートランスフォームは,価格データを正規分布に変換し,デフォルトパラメータは10で,高低点価格を標準化処理した後に対数変換を適用し,信号をより明確にする.

取引ルールは以下の通りです。

  • 多条件:価格のTEMA線とフィッシャー変換の0軸を横切る
  • 空調条件:価格がTEMA線を下に,フィッシャートランスフォームの0軸を下に
  • 複数シングル出場:価格の下のTEMA線またはフィッシャートランスフォームの下の0軸
  • 空券出場:価格の上をTEMA線またはフィッシャートランスフォームの上を0軸

戦略的優位性

  1. 信号の信頼性:トレンドと動力の指標を組み合わせて,偽信号を効果的にフィルターします.
  2. 低遅延性:TEMAは従来の移動平均よりもより速い応答速度を持っています.
  3. 信号の明晰さ:フィッシャー変換の正規分布特性は取引信号をより明晰にする
  4. リスク管理が完ぺき: 明確なストップ・ロスの条件が設定されている
  5. パラメータの調整:異なる市場状況に応じて指標のパラメータを調整できます
  6. グラフがはっきりと表示される

戦略リスク

  1. 不安定な市場のリスク: 横ばい市場では誤ったブレイクアウト シグナルが頻繁に発生する可能性があります。
  2. 遅滞リスク:TEMAが遅滞を軽減したものの,遅滞は依然としてある程度存在します.
  3. パラメータ感度: パラメータ設定が異なると、戦略のパフォーマンスに大きな違いが生じる可能性があります。
  4. 市場環境依存: 戦略はトレンドが顕著な市場においてよりよく機能する

戦略最適化の方向性

  1. 波動率フィルタを導入:ATR指数フィルタを低波動率環境下での取引信号に追加できる
  2. オプティマイズアウトメカニズム: 移動停止または利益保護メカニズムの追加を検討する
  3. タイムフィルターを追加:異なる時間帯の市場特性に合わせて取引戦略を調整できます
  4. 交差量確認を追加:交差量指標を組み合わせて信号信頼性を高める
  5. 動的パラメータ最適化:市場の状況に応じて動的に指標パラメータを調整する

要約する

これは,トレンドと動態分析を組み合わせた完全な取引戦略であり,TEMAとFisher Transformの配合による使用により,トレンド追跡能力が保証され,明確な動態確認信号が提供されます.戦略の設計は合理的で,優れた実用性がありますが,実際のアプリケーションでは,市場環境の適応性に注意し,具体的な状況に応じてパラメータを最適化する必要があります.提案された最適化方向によって,戦略の安定性と信頼性がさらに向上することができます.

ストラテジーソースコード
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-19 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Triple EMA (TEMA) + Fisher Transform Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ==== Triple EMA (TEMA) Settings ====
temaLength = input.int(21, title="TEMA Length", minval=1)

// Implementácia Triple EMA (TEMA)
// TEMA = 3 * EMA(close, length) - 3 * EMA(EMA(close, length), length) + EMA(EMA(EMA(close, length), length), length)
ema1 = ta.ema(close, temaLength)
ema2 = ta.ema(ema1, temaLength)
ema3 = ta.ema(ema2, temaLength)
tema = 3 * ema1 - 3 * ema2 + ema3
plot(tema, color=color.blue, title="TEMA")

// ==== Fisher Transform Settings ====
fisherLength = input.int(10, title="Fisher Length", minval=1)
fisherSmooth = input.int(1, title="Fisher Smoothing", minval=1)  // Zvyčajne sa používa 1 alebo 2

// Výpočet Fisher Transform
// Krok 1: Normalizácia ceny
price = (high + low) / 2
maxPrice = ta.highest(price, fisherLength)
minPrice = ta.lowest(price, fisherLength)
value = 0.5 * (2 * ((price - minPrice) / (maxPrice - minPrice)) - 1)
value := math.min(math.max(value, -0.999), 0.999)  // Orezanie hodnoty pre stabilitu

// Krok 2: Výpočet Fisher Transform
var float fisher = na
fisher := 0.5 * math.log((1 + value) / (1 - value)) + 0.5 * nz(fisher[1])
fisher := fisherSmooth > 1 ? ta.sma(fisher, fisherSmooth) : fisher
plot(fisher, color=color.red, title="Fisher Transform", linewidth=2)

// ==== Strategie Podmienky ====
 // Long Condition: Cena prekročí TEMA smerom nahor a Fisher Transform prekročí 0 smerom nahor
longCondition = ta.crossover(close, tema) and ta.crossover(fisher, 0)
if (longCondition)
    strategy.entry("Long", strategy.long)

 // Short Condition: Cena prekročí TEMA smerom nadol a Fisher Transform prekročí 0 smerom nadol
shortCondition = ta.crossunder(close, tema) and ta.crossunder(fisher, 0)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Long Condition: Cena prekročí TEMA smerom nadol alebo Fisher Transform prekročí 0 smerom nadol
exitLong = ta.crossunder(close, tema) or ta.crossunder(fisher, 0)
if (exitLong)
    strategy.close("Long")

// Exit Short Condition: Cena prekročí TEMA smerom nahor alebo Fisher Transform prekročí 0 smerom nahor
exitShort = ta.crossover(close, tema) or ta.crossover(fisher, 0)
if (exitShort)
    strategy.close("Short")

// ==== Voliteľné: Vykreslenie Zero Line pre Fisher Transform ====
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)