この戦略は,動的移動平均値であるDEMAとTEMAを2つ計算し,黄金クロスまたは死クロスを生成するときにロングまたはショートポジションを設定することによってトレンドを追跡します.同時に,戦略は不必要なストップ損失を避けるために一定の数のホールディングバーを設定します.
この戦略の基本的な論理は,動的移動平均値DEMAとTEMAの交差点に基づいてトレンド方向を決定することです.
DEMAは,ダブル指数関数移動平均を表す.EMAの重量化平滑機能を組み合わせ,EMAの遅延問題を最適化する.その式は:
DEMA = 2*EMA(CLOSE, N) -EMA(EMA(CLOSE, N), N)
この辺の長さは
TEMAはTriple Exponential Moving Average (トリプル指数指数移動平均) を略している.移動平均の遅れを減らすためにトリプル指数指数平滑を使用する.その式は:
EMA1 = EMA ((CLOSE, Temalength) について) EMA2 = EMA ((EMA1,テンパールング) EMA3 = EMA ((EMA2, 温度長) TEMA = 3EMA1 - 3EMA2 + EMA3
TEMAがDEMAを横切ったとき,それは長い行くための黄金十字信号とみなされます. TEMAがDEMAを下回ったとき,それは短い行くための死の十字信号とみなされます.
さらに,この戦略は,信号の有効性を確保し,偽信号を回避するために,遅延バーを設定します.入力を誘発する前に,黄金/死十字が一定の期間継続することを要求します.
最後に,この戦略は二重チェックロジックを採用します.新しい取引を開く前に反対のポジションを閉鎖する必要があるかどうかを確認します.これは二重方向のポジションのリスクを回避します.
伝統的なEMAとSMAと比較して,DEMAとTEMAはより敏感なダイナミックMAであり,トレンド変化を迅速に把握し,市場トレンド判断の精度を向上させる.
delayBars パラメータは,シグナルが出た後,ポジションに入る前にしばらく待つようにする.これはいくつかの偽信号をフィルタリングし,罠にはまりないようにする.
新しい取引を開く前に反対ポジションを閉鎖する必要があるかどうかを確認することで,戦略は双方向のポジションを保持することを避け,ヘッジ取引による損失を最小限に抑える.
この戦略は,傾向とシグナルを決定するために,主に共通の技術指標であるMAsのクロスオーバーに依存しています.特定の製品に依存せず,ほとんどの傾向製品に適しています.
横向変動が大きい市場では,MAsは頻繁に交差し,損失を引き起こす偽信号を生成することがあります.この場合,遅延設定も失敗する可能性があります.
解決策は,横向的な傾向を特定する際に戦略を一時停止するか,MAパラメータと遅延期間を適切に調整することです.
この戦略は,価格動向を純粋に追跡し,重大イベントによる短期的なトラップやトレンド逆転を予測することはできません.そのような場合,大きな損失につながる可能性があります.
解決策は,リスク評価のための他の指標を組み込むか,ポジションサイズを適切に削減することです.
DEMAとTEMAを除いて SMA,EMA,その他の強化MAsの組み合わせをテストし,この市場に最も適したものを探します.
より正確な取引信号のための最適なMA長さと信号遅延期間を見つけるために最適化を実行します.
異なる製品特性を考慮して,MA長度,価格変動の遅延期間,およびトレンド性の適切な組み合わせを見つけます.
例えば,波動性と価格レベルを判断するためにボリンジャー帯を使用し,ウィップソー市場を避ける.トレンド強みを評価するためにモメントインジケーターを使用します.
DEMAとTEMAの間のダイナミックMAクロスオーバーに基づいた戦略の基本トレンドである.その利点は高い安定性,信頼性,普遍性である.しかし,いくつかの遅れと弱い逆転検出能力もある.この記事は,この戦略を使用するための貴重な参考文献として役立つ,そのメリット,メリット,最適化方向の包括的な分析を提供します.全体として,それはさらなる研究に値する定量的な取引戦略設計の典型的な例を提供しています.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © jacobdickson255 strategy("Crypto Bull Run Tracker", overlay=true, pyramiding=0) //Dema Scripting Demalength = input.int(230, minval=1) src = close e1 = ta.ema(src, Demalength) e2 = ta.ema(e1, Demalength) dema = 2 * e1 - e2 plot(dema, "DEMA", color=#43A047) //Tema Scripting Temalength = input.int(210, minval=1) ema1 = ta.ema(close, Temalength) ema2 = ta.ema(ema1, Temalength) ema3 = ta.ema(ema2, Temalength) tema = 3 * (ema1 - ema2) + ema3 plot(tema, "TEMA", color=#2962FF) delayBars = input(5, title="Bar Delay") var int lastTradeBar = na longCondition = ta.crossover(tema, dema) longExit = ta.crossunder(tema, dema) shortCondition = ta.crossunder(tema, dema) shortExit = ta.crossover(tema, dema) // Exit conditions should be checked before entry conditions // Close short position if a long condition is present if ((shortExit and strategy.position_size < 0)) // If conditions for exiting the short are met, and there is a balance in the short direction, exit the short strategy.close("Short") // Close long position if a short condition is present if ((longExit and strategy.position_size > 0)) strategy.close("Long") // Now check for entry conditions if (longCondition) strategy.entry("Long", strategy.long) lastTradeBar := bar_index if (shortCondition) strategy.entry("Short", strategy.short) lastTradeBar := bar_index