ダイナミック・トレンド・トラッキング・リバーサル・ストラテジー (Dynamic Trend Tracking Reversal Strategy) は,JDシーケンシャル指標に基づいた短期的定量的な取引戦略である.この戦略は,リアルタイムで価格の高値と低値を追跡することで,現在のトレンド方向と勢力を決定し,エントリーと出路タイミングのための市場逆転点を効率的に把握する.この戦略は,従来のJDシーケンシャル戦略と比較して,以下の改良を行っています.
この戦略は,5分と15分チャートなどの短期間の時間枠に適しており,短期間の価格変動と逆転機会を効果的に把握できます.
ダイナミック・トレンド・トラッキング・リバーサル・ストラテジーのコア・ロジックは,JD・シーケンス・インディケーターに基づいています.現在の期間の高値と低値を前2期間の値と比較することで,このインディケーターは,連続した高値と低値が発生したかどうかを決定し,1から7までのシーケンス・カウントを生成します.カウントが7に蓄積されると,取引シグナルが生成されます.
具体的には,次の変数が戦略で定義されています.
取引信号生成の論理は次のとおりです
ストップ・ロスの論理は
トレンドの方向性と強さを決定するためにリアルタイムで高値/低値を比較し,エントリーのためのカウントベースのタイミングとともに,この戦略は短期間の逆転機会を効果的に把握することができます.ストップ・ロスはリスクを制御するために設定されています.
伝統的なJDシーケンス戦略と比較して,動的トレンド追跡逆転戦略には以下の利点があります.
この戦略の主な利点は,短期的な出来事によって引き起こされる大きな変動を効果的に把握できる迅速な応答である.また,アルゴリズム信号生成とストップ損失機械化は,トレーダーの感情的干渉を軽減し,一貫性を向上させることができる.
ダイナミック・トレンド・トラッキング・リバース・戦略には,いくつかのリスクもあります.
上記のリスクを軽減するために,戦略は以下の側面で最適化できます.
ダイナミック・トレンド・トラッキング・リバーサル・戦略は,主に以下の方向でさらに最適化できる余地があります.
複数のタイムフレームの組み合わせ.それに対して取引を避けるために,より長いタイムフレームで主要なトレンド方向を決定します.
他の指標との組み合わせ. 波動度指標,ボリュームデータなどを組み込み,信号品質を向上させる.
追加検証のための機械学習. 誤った取引を減らすために,取引信号に対する補助判断としてAI/MLアルゴリズムを使用する.
パラメータ調整.カウント期間,取引セッション,ポジションサイズなど,異なる市場状況に合わせてパラメータを最適化します.
リスク管理メカニズムを拡大し,リスクをさらに制限するために,適応型ストップ,ポジションサイズなど,より洗練されたリスク管理技術を導入する.
バックテストによる戦略評価. パラメータの安定性を測定するためのバックテストのサンプルサイズとタイムフレームを拡大する.
ダイナミック・トレンド・トラッキング・リバーサル・ストラテジー (Dynamic Trend Tracking Reversal Strategy) は,トレンド・タイミングのためのJDシーケンス・インジケーター内の7カウントルールとともに,トレンド方向性と強さを決定するために,価格の高値と低値のリアルタイム比較を通じて短期間の逆転機会を把握する.この戦略は,従来のJD戦略と比較して,高値/低値の代わりに高値/低値,カウント期間を短縮し,追加のストップ・ロストメカニズムなどを使用するような強化を施し,より速い信号生成を可能にします.
この戦略の主要な強みは,短期的な逆転取引に適した迅速な対応にあります.同時に,高い取引頻度や攻撃的なストップなどのリスクは存在します.将来の最適化方向には,パラメータチューニング,リスク制御の強化,マルチタイムフレームの組み合わせなどが含まれます.継続的な最適化と繰り返しを通して,この戦略は短期的な逆転信号を効率的に捕捉するための強力なツールになる可能性があります.
/*backtest start: 2023-12-16 00:00:00 end: 2024-01-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @NeoButane 7 Dec. 2018 // JD Aggressive Sequential Setup // Not based off official Tom DeMarke documentation. As such, I have named the indicator JD instead oF TD to reflect this, and as a joke. // // Difference vs. TD Sequential: faster trade exits and a unique entry. Made for low timeframes. // - Highs or lows are compared instead of close. // - Mirrors only the Setup aspect of TD Sequential (1-9, not to 13) // - Count maxes out at 7 instead of 9. Also part of the joke if I'm going to be honest here // v1 - Release - Made as a strategy, 7 count // . S/R on 7 count // .. Entry on 7 count // ... Exit on 5 count or S/R cross //@version=3 title = "JD Aggressive Sequential Setup" vers = " 1.0 [NeoButane]" total = title + vers strategy(total, total, 1, 0) xx = input(true, "Include S/R Crosses Into Stop Loss") show_sp = input(true, "Show Count 1-4") sp_ct = 0 inc_sp(x) => nz(x) == 7 ? 1 : nz(x) + 1 sp_up = high > high[2] sp_dn = low < low[2] sp_col = sp_up ? green : red sp_comCol = sp_up ? red : green sp_ct := sp_up ? (nz(sp_up[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : sp_dn ? (nz(sp_dn[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : na sp_com = sp_ct == 7 sp_sr = valuewhen(sp_ct == 5, close, 0) sp_usr = valuewhen(sp_ct == 7 and sp_up, sma(hlc3, 2), 0) sp_usr := sp_usr <= sp_usr[1] * 1.0042 and sp_usr >= sp_usr[1] * 0.9958 ? sp_usr[1] : sp_usr sp_dsr = valuewhen(sp_ct == 7 and sp_dn, sma(hlc3, 2), 0) sp_dsr := sp_dsr <= sp_dsr[1] * 1.0042 and sp_dsr >= sp_dsr[1] * 0.9958 ? sp_dsr[1] : sp_dsr locc = location.abovebar plotchar(show_sp and sp_ct == 1, 'Setup: 1', '1', locc, sp_col, editable=false) plotchar(show_sp and sp_ct == 2, 'Setup: 2', '2', locc, sp_col, editable=false) plotchar(show_sp and sp_ct == 3, 'Setup: 3', '3', locc, sp_col, editable=false) plotchar(show_sp and sp_ct == 4, 'Setup: 4', '4', locc, sp_col, editable=false) plotshape(sp_ct == 5, 'Setup: 5', shape.xcross, locc, sp_comCol, 0, 0, '5', sp_col) plotshape(sp_ct == 6, 'Setup: 6', shape.circle, locc, sp_comCol, 0, 0, '6', sp_col) plotshape(sp_ct == 7, 'Setup: 7', shape.circle, locc, sp_comCol, 0, 0, '7', sp_col) // plot(sp_sr, "5 Count Support/Resistance", gray, 2, 6) plot(sp_usr, "7 Count Resistance", maroon, 2, 6) plot(sp_dsr, "7 Count Support", green, 2, 6) long = (sp_com and sp_dn) short = (sp_com and sp_up) sl_l = xx ? crossunder(close, sp_dsr) or (sp_ct == 5 and sp_up) or short : (sp_ct == 5 and sp_up) or short sl_s = xx ? crossover(close, sp_usr) or (sp_ct == 5 and sp_dn) or long : (sp_ct == 5 and sp_dn) or long strategy.entry('L', 1, when = long) strategy.close('L', when = sl_l) strategy.entry('S', 0, when = short) strategy.close('S', when = sl_s)