
ADXとSupertrendをベースとする継続的入場取引戦略は,方向性指標とトレンド確認ツールを組み合わせた量化取引方法であり,平均方向性指数 (ADX),方向性移動指標 (DMI) とSupertrend指標を統合し,交差量加重の注文ブロック (Order Block) 分析に付随して,包括的な取引システムを構築する.この戦略は,継続的条件検証機構を特に強調しています.つまり,複数の技術条件が満たされた後に取引シグナルが誘発されるという仕組みです.この方法は,取引品質を効果的に向上させ,誤った信号の発生率を低下させます.
この戦略の核心的な論理は,以下のいくつかの重要な要素に基づいています.
ADXとDMIの指標分析: システムはADX指標を使用して市場トレンドの強さを測定し,+DIと-DI値を比較してトレンドの方向を決定する.ADX値が設定された値 (デフォルト25) よりも高いときは,市場が強い傾向にあることを示し;+DIは-DIよりも大きい場合は,看板傾向を示し,逆に下向き傾向を示します.
スーパートレンドの確認:スーパートレンド指数は,二重トレンド確認ツールとして,看板信号 ((トレンド == -1) を表示すると買いを支持し,看板信号 ((トレンド == 1) を表示すると売りを支持する.スーパートレンドの変化は,退出信号のトリガー条件としても使用されます.
オーダー・ブロック戦略は,取引量に基づいて動的なサポートとレジスタンス領域の識別メカニズムを導入した.取引量が平均以上の特定の倍数 (デフォルトは2倍) と価格が局所的な高点または低点に達すると,システムはこれらの領域を潜在的な注文ブロックとしてマークし,設定された期間 (デフォルトは15サイクル) 内に有効性を維持する.
継続性条件検証戦略の最も独特な部分は,その継続的条件検証メカニズムである.システムは,トレンド条件,ADX条件,DMI条件,地域条件の4つのブル標識によって取引条件を追跡する.すべての条件が満たされた場合にのみ取引シグナルが誘発される.このメカニズムは,取引が最適な市場環境で発生することを保証する.
購入条件:
販売条件:
退出論理:スーパートレンド指標がトレンド方向を変えたとき,戦略は現在のポジションを平準化する.
複数の認証メカニズム:複数の技術指標を統合することにより,戦略は偽信号を大幅に削減し,取引の正確性を向上させる.特にADXとSupertrendの組み合わせは,トレンドの強さを確保すると同時に,明確な方向を指示する.
継続性条件検証戦略の継続的検証メカニズムにより,システムは,単一の信号に基づいて取引を誘発するのではなく,すべての条件が成熟したときに再行動することを可能にします. この設計は,戦略の安定性を大幅に高め,不利な市場条件下で不必要な取引を減少させます.
動的サポートと抵抗の識別:取引量に基づく注文ブロック分析は,戦略にダイナミックなサポートとレジスタンス参照を提供し,取引決定を市場の微細構造に近似させ,重要な価格領域での逆転取引を回避します.
明確な退出メカニズム戦略: 超トレンドの反転を退出信号として使用し,客観的でタイムリーなストップ・アンド・ストップの方法を提供し,各取引のリスクを効果的に管理する.
適応性が高い: 複数の可調パラメータにより,戦略は異なる市場環境と取引品種に適応し,その実用性と柔軟性を高めます.
パラメータ感度戦略の効果は,パラメータの設定に大きく依存しています. ADX長さ,スーパートレンドの倍数,ATR周期などのパラメータの選択は,戦略のパフォーマンスに顕著な影響を及ぼしています. 不適切なパラメータの設定は,過度取引または重要な機会を逃す可能性があります. 解決策は,歴史を振り返ってパラメータを最適化し,異なる市場環境のために異なるパラメータの組み合わせを準備することです.
トレンド反転リスク: 複数の確認メカニズムを使用しているにもかかわらず,強力な市場逆転または高い変動の環境下では,戦略が滞留のリスクにさらされる可能性があります. 解決策は,変動率フィルターを導入するか,異なる市場の変動状態に対応するためにADXの値を動的に調整することを検討することです.
異常な成交量のリスク策略は取引量分析に依存しており,取引量異常 (突然の異常な大きな取引量など) の場合,誤った注文ブロック識別が起こりうる. 解決方法は,取引量平滑処理を追加するか,または追加の異常検出機構を導入することです.
リスクの過剰最適化策略には複数の調整可能なパラメータが含まれているため,過度に最適化されやすいため,戦略は歴史的なデータで良好なパフォーマンスを発揮するが,実際の取引では不適切である.解決策は,前向きなテストとサンプル外テストを採用し,戦略の安定性を確保することです.
流動性のリスク低流動性市場では,大量取引がスライドや注文実行の遅延を引き起こし,戦略の効果に影響を与える可能性があります. 解決策は,低流動性の環境で追加の流動性のフィルター条件を追加するか,ポジションサイズを調整することです.
動態参数調整: 戦略は,市場変動に応じてADXの値とスーパートレンドのパラメータを自動的に調整するためにさらに最適化することができます.例えば,高波動期にはADXの値を上げ,偽の突破信号を減らすことができます.低波動期には値を下げ,感度を増やすことができます.この自己適応機構は,戦略を異なる市場段階により良く適応させることができます.
タイムフィルター統合タイムフィルターの導入により,市場が開く,閉まる,または流動性が低い時に取引を避ける.この最適化は,特に日中の取引戦略に適用され,市場騒音による不要な取引を大幅に減らすことができます.
多時間枠分析戦略は,より高い時間枠のトレンド情報を統合することによって,取引の方向がより大きなトレンドと一致することを保証することができます.例えば,当日の日線トレンドと時間線トレンドの方向が一致するときにのみ取引を実行することで,勝利率を高め,逆転取引のリスクを減らすことができます.
リスク管理の強化:現在の戦略の退出機構は比較的単純で,移動の止損,損比フィルター,または変動率に基づく止損位計算を追加することでリスク管理を強化できます.これらの改善は,利益をより保護し,取引毎のリスクを制御することができます.
市場状況の分類: 市場状態の分類機構を導入し,戦略が整理期,トレンド期,高波動期などの異なる市場環境を認識し,それに従って取引ロジックを調整できるようにする.この最適化は,戦略に適さない市場条件下で取引を避けるため,戦略の安定性をさらに向上させる.
ADXとSupertrendをベースとする継続的入場取引戦略は,複数の技術指標とユニークな継続的条件検証メカニズムを統合することで,包括的で堅牢な取引システムを構築する.この戦略は,理想的な市場条件下で取引することを特に強調し,多くの一般的な誤信号の罠を回避する.ADX,DMIとSupertrendの組み合わせを使用して,この戦略は,強力なトレンド環境を効果的に識別し,正しい取引方向を決定することができます.
この戦略は多くの利点があるにもかかわらず,ユーザーはパラメータの感受性,トレンド逆転リスク,過度の最適化などの潜在的な問題に注意する必要があります.ダイナミックなパラメータ調整,マルチタイムフレーム分析,強化されたリスク管理機構の導入により,戦略には大きな最適化余地があります.最終的に,技術指標と市場の微細構造の分析を組み合わせたこの方法は,バランスのとれた,包括的な量化取引の考え方を示しています.
/*backtest
start: 2024-07-22 00:00:00
end: 2025-07-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algostudio
//Code Generated using PineGPT - www.marketcalls.in
//@version=6
strategy("ADX + Supertrend Persistent Entry Logic", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, process_orders_on_close=true, calc_on_every_tick=true, max_bars_back=500)
// === INPUTS === //
adxLen = input.int(7, "ADX Length")
dilen = input.int(7, "+DI/-DI Length")
adxThresh = input.float(25, "ADX Threshold")
supertrendFactor = input.float(2.0, "Supertrend Multiplier", minval=0.1)
supertrendLen = input.int(7, "Supertrend ATR Length")
volLookback = input.int(10, "Volume Zone Lookback")
volMult = input.float(2.0, "Volume Threshold Multiplier")
zoneDuration = input.int(15, "Zone Display Duration")
// === ADX AND DI CALCULATION === //
[plusDI, minusDI, adx] = ta.dmi(dilen, adxLen)
// === SUPER TREND CALCULATION === //
[supertrend, trend] = ta.supertrend(supertrendFactor, supertrendLen)
bullishSupertrendShift = trend == -1 and trend[1] == 1
bearishSupertrendShift = trend == 1 and trend[1] == -1
// === DYNAMIC ORDER BLOCK ZONES (Volume weighted) === //
volThreshold = ta.sma(volume, volLookback) * volMult
volHighs = high == ta.highest(high, 5) and volume > volThreshold
volLows = low == ta.lowest(low, 5) and volume > volThreshold
obSupportValid = ta.valuewhen(volLows, low, 0)
bbResistanceValid = ta.valuewhen(volHighs, high, 0)
obSupportStart = ta.valuewhen(volLows, bar_index, 0)
bbResistanceStart = ta.valuewhen(volHighs, bar_index, 0)
obSupportEnd = obSupportStart + zoneDuration
bbResistanceEnd = bbResistanceStart + zoneDuration
inObZone = bar_index >= obSupportStart and bar_index <= obSupportEnd
inBbZone = bar_index >= bbResistanceStart and bar_index <= bbResistanceEnd
// === PLOT ZONES === //
plot(inObZone ? obSupportValid : na, title="OB Support Line", color=color.green, linewidth=2)
plot(inBbZone ? bbResistanceValid : na, title="BB Resistance Line", color=color.red, linewidth=2)
plot(supertrend, color=trend == 1 ? color.red : color.green, title="Supertrend")
// === PERSISTENT FLAGS === //
var bool buyTrendMet = false
var bool buyAdxMet = false
var bool buyDiMet = false
var bool buyZoneClear = false
var bool sellTrendMet = false
var bool sellAdxMet = false
var bool sellDiMet = false
var bool sellZoneClear = false
// === READY FLAGS (declare early to resolve use-before-declare issues) === //
buyReady = buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady = sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// Track condition flags
buyTrendMet := trend == -1 ? true : buyTrendMet
buyAdxMet := adx > adxThresh ? true : (buyReady ? buyAdxMet : false)
buyDiMet := plusDI > minusDI ? true : buyDiMet
buyZoneClear := not inBbZone ? true : buyZoneClear
sellTrendMet := trend == 1 ? true : sellTrendMet
sellAdxMet := adx > adxThresh ? true : (sellReady ? sellAdxMet : false)
sellDiMet := minusDI > plusDI ? true : sellDiMet
sellZoneClear := not inObZone ? true : sellZoneClear
// Recalculate readiness after condition updates
buyReady := buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady := sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// === STRATEGY ENTRIES === //
if buyReady
strategy.entry("Buy", strategy.long)
buyTrendMet := false
buyAdxMet := false
buyDiMet := false
buyZoneClear := false
if sellReady
strategy.entry("Sell", strategy.short)
sellTrendMet := false
sellAdxMet := false
sellDiMet := false
sellZoneClear := false
// === STRATEGY EXITS === //
if strategy.position_size > 0 and trend == 1
strategy.close("Buy")
if strategy.position_size < 0 and trend == -1
strategy.close("Sell")
// === PLOTS === //
plotshape(buyReady, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellReady, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// For more tutorials on Tradingview Pinescript visit , visit https://www.marketcalls.in/category/tradingview