ダイナミック・ダブル・エクスポネンショナル・ムービング・メアデイア・トレーディング・ストラテジー

作者: リン・ハーンチャオチャン,日付: 2024-02-06 09:38:32
タグ:

img

概要

この戦略は"ダイナミックダブル指数関数移動平均取引戦略"と呼ばれる.これは二重指数関数移動平均 (DEMA) をベースとした定量的な取引戦略である.この戦略は,株式の価格変動率を計算し,その絶対値と非絶対値の両方に二重指数関数平滑を実行し,真の強度指数 (TSI) を得ることができる.この戦略は,TSI値とその信号線の黄金/死十字に基づいて購入・販売信号を生成する.

戦略原則

この戦略の核心指標は,真の強度指数 (TSI) です.TSIの計算式は以下のとおりです.

TSI = 100 * (PC1/PC2)

PC1とPC2は,それぞれ価格変動率の二重指数移動平均値と価格変化率の絶対値である.二重指数移動平均値は,まず価格変動率に1つの長さの指数移動平均値を適用し,次に得られる移動平均値に別の短い指数移動平均値を適用することによって計算される.この二重スローティングは,価格変動率のランダム性をより良く排除し,TSI指標の安定性を向上させる.

戦略は,TSI値を計算した後,TSI値の信号線も計算する.信号線は,TSI値の指数的な移動平均値として定義される.実際の取引では,戦略はTSI値とその信号線の関係を観察することによって市場の動向を判断し,取引信号を生成する.TSI値が信号線を超えると,それは購入信号である.TSI値が信号線を下回ると,それは販売信号である.

この戦略のもう一つの特徴は,取引規模が動的に調整されていることである.戦略コードは,初期資本とリスク露出比を入力パラメータとして設定する.これらの2つのパラメータは,現在の株式価格と組み合わせ,取引された契約数またはリスク露出量を動的に計算する.これは,戦略全体の全体的なリスクをよりよく制御することができます.

利点分析

ダイナミックな二重指数移動平均取引戦略にはいくつかの利点があります.

  1. 市場騒音に敏感性が低下し,より正確な信号を生成できるため,二重指数式スローティングを適用する TSI指標を使用します.

  2. 取引シグナルを生成するために,指標とその信号線の交差という実証された原則に基づいています.これは多くの誤った信号を排除します.

  3. 戦略はリスク予算に基づいてポジションサイズを動的に調整します.これは過剰取引や感情を防ぐのに役立ちます.

  4. 日時と週間のタイムフレームで動作し,スウィング取引とポジショナル取引の両方に適しています.

  5. ロボットや他の取引システムで簡単に実装できます. シンプルなエントリー/エグジットロジックにより.

  6. 調整するパラメータはあまり多くないので システムを最適化するのが簡単です

これらの利点は,株式トレーダーにとって堅牢で多用性の高い取引戦略となっています.慎重にスムーズ化され,ポジションのサイズ化により,誤った信号と大きな損失を防ぐことができます.

リスク分析

ダイナミックな二重指数的な移動平均取引戦略には多くの利点がありますが,ほとんどの株式戦略と同様,いくつかの固有のリスクもあります.

  1. TSIと信号線は,過去の価格データに基づいているため,特に不安定な市場状況下で,常に誤った信号の危険性があります.

  2. 市場がTSI指標のゼロラインの周りに振動する場合は,ウイプソーが発生する可能性があります.これは損失につながる可能性があります.

  3. 格差が大きい場合,戦略は間に合わずに損失で終了する可能性があります.

  4. 市場が強烈な傾向を続けている場合,TSIは遅かれ早かれその傾向を逆転させ,損得を招く可能性があります.

  5. 利息効果により,リスクパラメータによって設定された限界を超える損失が可能です.

しかし,これらのリスクは,ポジションサイズ,ストップ損失,およびその他のリスク管理技術などの側面によって軽減できます.また,パラメータとフィルターは,異なる市場条件においてパフォーマンスを最大化するためにさらに最適化することができます.

オプティマイゼーションの方向性

この戦略を最適化するためのいくつかのアイデアは以下の通りです.

  1. 双面スムージングパラメータの異なる組み合わせをテストし,最も正確な取引信号を生成する組み合わせを見つけます. 長期および短期サイクルパラメータは最適化のために調整できます.

  2. 不安定性,取引量,その他の指標に基づくフィルターを追加して,不要な取引信号を減らす.これは取引頻度を減らすと同時に,各取引の収益性を高める.

  3. ストップ・ロスのロジックを組み込む.例えば,TSI値がゼロ線を越えるとストップアウトする.これは不必要な損失を減らすことができます.

  4. この戦略の下で,指数,商品など,さまざまな取引手段のパフォーマンスを評価する.最高のパフォーマンスを持つ手段に取引を集中する.

  5. 選択的に取引の手段をフィルタリングする.例えば,流動性,変動度指標を評価し,より高いパラメータを持つものを選択する.

  6. ウォーク・フォワード分析のような機械学習方法を使用して,最適なパラメータ組み合わせを選択します.これは選択における人間の偏見を軽減し,より良いパラメータを得ることができます.

  7. 異なる市場体制に基づいて複数のパラメータセットを使用し,その間を動的に切り替える.例えば,牛市場ではより積極的なパラメータ,熊市場では保守的なパラメータ.

上記の様々な側面をテストし最適化することで,この戦略の安定性と収益性をさらに向上させる可能性があります.

概要

概要すると,この戦略は,TSI指標の二重指数式平滑性特性を活用して,比較的安定した信頼性の高い株式取引戦略を設計する.ポジションサイズを動的に調整することで,全体的なリスクレベルを効果的に制御することができる.この戦略は,短期および中長期の取引に適している利点を組み合わせています.

もちろん,ほとんどの定量的な取引戦略と同様に,この戦略にもいくつかの制限があります.主に急激な市場変動の影響を受けやすいことが反映されています.さらに,パラメータ選択とフィルタリング基準は,絶えず変化する金融市場でより強い適応性と収益性を獲得するためにさらなるテストと最適化が必要です.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shankardey7310

//@version=5
strategy("TSI STOCKS", shorttitle="TSI", overlay=true)

initialCapital = input(10000, title="Initial Capital")
riskPercent = input(1, title="Risk Percentage") / 100

longLength = input(12, title="Long Length")
shortLength = input(9, title="Short Length")
signalLength = input(12, title="Signal Length")

price = close
pc = ta.change(price)

double_smooth(src, long, short) =>
    first_smooth = ta.ema(src, long)
    ta.ema(first_smooth, short)

double_smoothed_pc = double_smooth(pc, longLength, shortLength)
double_smoothed_abs_pc = double_smooth(math.abs(pc), longLength, shortLength)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi_signal = ta.ema(tsi_value, signalLength)

riskAmount = (initialCapital * riskPercent) / close

if (tsi_value > tsi_signal and tsi_value[1] <= tsi_signal[1])
    strategy.entry("Long", strategy.long)

if (tsi_value < tsi_signal and tsi_value[1] >= tsi_signal[1])
    strategy.close("Long")

plot(tsi_value, title="True Strength Index", color=#2962FF)
plot(tsi_signal, title="Signal", color=#E91E63)
hline(0, title="Zero", color=#787B86)

もっと