フィッシャー変換動的閾値トレンド追跡戦略


作成日: 2024-06-17 15:01:19 最終変更日: 2024-06-17 15:01:19
コピー: 0 クリック数: 590
1
フォロー
1617
フォロワー

フィッシャー変換動的閾値トレンド追跡戦略

概要

フィッシャー変形動的値トレンド追跡策は,フィッシャー変形指標に基づいて価格トレンドの変化を識別する.この策は,フィッシャー変形を使用して,潜在的トレンド逆転点をより簡単に検出するために価格を標準的な尺度に統合する.値を動的に調整することにより,この策は,異なる市場条件に適応し,トレンド識別の正確性を向上させる.フィッシャー変形値は,正負の値を超えると,この策は,市場トレンドを追跡するために買い売りシグナルを生成する.

戦略原則

  1. フィッシャー変換値を計算する.現在の価格を過去最高値と最低値に基づいて統合処理し,−0.999から0.999の間のフィッシャー変換値を得ます.
  2. 動的値:フィッシャー変数値の歴史的変動に応じて,異なる市場状況に対応するために,買い売りシグナルの値を動的に調整する.
  3. トレンド判断:現在のフィッシャー変換値と前2周期の値を比較して価格トレンドの変化を判断する.
  4. 買入シグナル:フィッシャー変換が負の値を上から下へと渡るときに買入シグナルを生成し,フィッシャー変換が正の値を上から下へと渡るときに売りシグナルを生成する.

優位分析

  1. 動的値調整:市場の変動に応じて買い物値の調整を自律的に行い,トレンド判断の正確性を向上させる.
  2. トレンド追跡:フィッシャー変換指数のトレンド判断により,市場トレンドをよりよく捉え,トレンド追跡取引を実現できます.
  3. 価格ノイズを減らす:フィッシャー変換は価格を単一化して処理し,トレンド判断に対する価格ノイズの影響を減らすのに役立ちます.
  4. 直観的なグラフ表示: 戦略は,フィッシャー変換曲線と値線をグラフに描画し,トレーダーが市場動向と買入シグナルを直観的に観察できるようにする.

リスク分析

  1. パラメータ最適化リスク: 戦略のパフォーマンスは,フィッシャー変換周期,動的値計算方法などのパラメータの選択に依存し,異なるパラメータは,異なる取引結果につながる可能性があります.
  2. トレンド認識の遅れ:フィッシャー変換指標の価格トレンドの判断に一定の遅れがあるため,部分的なトレンドの状況を逃す可能性があります.
  3. 振動市場での不良表现: 振動市場環境では,頻繁にトレンドが変化するので,この戦略が偽信号を多く生み出し,取引は不良表现する可能性があります.
  4. 極端な状況のリスク: 極端な状況で (例えば,急激に大きく変化する) フィッシャー変換指数は失効し,戦略が誤った取引決定を下す可能性があります.

最適化の方向

  1. パラメータ最適化:フィッシャー変数周期,動的値計算方法などの重要なパラメータを最適化して,異なる市場状況下での戦略の適応性を向上させる.
  2. シグナルフィルタリング:トレンド認識に基づいて,他の技術指標または市場情緒指標を導入し,取引信号を二次確認し,信号の信頼性を向上させる.
  3. ストップ・ストップ:合理的なストップ・ストップルルールを設定し,単一取引のリスクを制御し,戦略のリスク/利益比率を向上させる.
  4. ポジション管理:市場トレンドの強さ,価格の変動率などの要因に応じて,ポジションのサイズを動的に調整し,ポジションのリスクを低減する.

要約する

フィッシャー変形動的値トレンド追跡戦略は,フィッシャー変形指標と動的値,価格トレンドの変化を認識し,異なる市場状態に自律的に適応する.この戦略は,市場トレンドをよりよく捉え,トレンド追跡取引を実現することができる.この戦略の優点は,動的値調整,価格ノイズ干渉の軽減,直観的なグラフの表示にある.しかし,同時に,パラメータ最適化リスク,トレンドの識別,後退,震動市場の不良パフォーマンス,極端な状況のリスクなどの問題もあります.パラメータ最適化,シグナル過,ストップストップ,ポジション管理などの措置によって,この戦略の安定性と収益性をさらに向上させることができます.

ストラテジーソースコード
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Qiuboneminer -  Fisher Transform", overlay=true)

// Parámetros
Len = input.int(10, minval=1)
mult1 = input.int(1, minval=1)
threshold = 2.6

// Función Fisher Transform
fish(Length, timeMultiplier) =>
    var float nValue1 = na
    var float nFish = na
    xHL2 = hl2
    xMaxH = ta.highest(xHL2, Length * timeMultiplier)
    xMinL = ta.lowest(xHL2, Length * timeMultiplier)
    nValue1 := 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
    nValue2 = if nValue1 > 0.99
        0.999
    else if nValue1 < -0.99
        -0.999
    else
        nValue1
    nFish := 0.5 * math.log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
    nFish

// Cálculo del Fisher Transform para mult1
Fisher1 = fish(Len, mult1)

// Condiciones de entrada y salida
longCondition = Fisher1 > nz(Fisher1[1]) and nz(Fisher1[1]) <= nz(Fisher1[2]) and Fisher1 < -threshold
shortCondition = Fisher1 < nz(Fisher1[1]) and nz(Fisher1[1]) >= nz(Fisher1[2]) and Fisher1 > threshold

// Estrategia de entrada
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Ploteo del Fisher Transform
plot(Fisher1, color=(Fisher1 > nz(Fisher1[1]) ? color.rgb(34, 255, 0) : color.rgb(255, 0, 212)), title="Fisher TF:1")

// Ploteo de líneas de umbral
hline(threshold, "Umbral Superior", color=color.rgb(255, 0, 0), linestyle=hline.style_dotted)
hline(-threshold, "Umbral Inferior", color=#008704, linestyle=hline.style_dotted)