बहु-समय फ्रेम अनुकूली बाजार तंत्र मात्रात्मक व्यापार रणनीति

ATR EMA RSI MACD ADX 布林带 蜡烛图形态 多时间框架分析 自适应算法 市场机制检测
निर्माण तिथि: 2025-04-21 16:20:34 अंत में संशोधित करें: 2025-04-21 16:20:34
कॉपी: 0 क्लिक्स: 522
2
ध्यान केंद्रित करना
319
समर्थक

बहु-समय फ्रेम अनुकूली बाजार तंत्र मात्रात्मक व्यापार रणनीति बहु-समय फ्रेम अनुकूली बाजार तंत्र मात्रात्मक व्यापार रणनीति

अवलोकन

मल्टीटाइम फ्रेम स्व-अनुकूलित बाजार तंत्र की मात्रा ट्रेडिंग रणनीति एक उन्नत क्वांटिटेटिव ट्रेडिंग सिस्टम है जो बहु-सूचक समग्र विश्लेषण पर आधारित है, जो विभिन्न बाजार स्थितियों के अनुसार स्वचालित रूप से अपनी ट्रेडिंग रणनीति को समायोजित कर सकता है। यह रणनीति चार प्रकार के बाजार तंत्रों की पहचान करने के लिए एआई का उपयोग करती है (प्रवृत्ति, अंतराल, उतार-चढ़ाव और स्थिर) और वर्तमान बाजार की स्थिति के आधार पर व्यापार पैरामीटर को गतिशील रूप से समायोजित करती है। कोर तकनीकों में मल्टीटाइम फ्रेम विश्लेषण, आरेखण, गतिशील जोखिम की पहचान और स्व-अनुकूलन एल्गोरिदम शामिल हैं, जो व्यापारियों को एक व्यापक और लचीला व्यापार उपकरण प्रदान करते हैं।

रणनीति सिद्धांत

इस रणनीति के केंद्र में इसकी बहुस्तरीय बाजार विश्लेषण ढांचा है, जो कई तकनीकी संकेतकों के एकीकरण के माध्यम से सटीक बाजार स्थिति का पता लगाने और संकेत उत्पन्न करने में सक्षम हैः

  1. चलती औसत प्रणाली: तेजी से ((9 चक्र) और धीमी गति ((34 चक्र) सूचकांक चलती औसत ((EMA) का उपयोग करके प्रवृत्ति की दिशा निर्धारित की जाती है, जो एटीआर थ्रेशोल्ड के साथ मिलकर निर्णय की सटीकता को बढ़ाता है।

  2. मल्टीटाइम फ़्रेम पुष्टि तंत्र: उच्च समय अवधि के आरएसआई और एमएसीडी संकेतकों के माध्यम से अधिक व्यापक बाजार परिप्रेक्ष्य प्रदान करना, कम समय अवधि के शोर संकेतों को फ़िल्टर करना। रणनीति उच्च समय अवधि के प्रवृत्ति की पुष्टि पर विशेष ध्यान देती है, एचटीएफ_आरएसआई और एचटीएफ_एमएसीडी के क्रॉसिंग बिंदुओं का उपयोग करती है।

  3. बाजार तंत्र पहचान एल्गोरिदम

    • ट्रेंडिंग बाजारः ADX > 20 और एमए अंतर एटीआर से 0.3 गुना अधिक है और उच्च समय सीमा की प्रवृत्ति द्वारा पुष्टि की गई है
    • बाइनरी बाजारः ADX < 25 और मूल्य सीमा अनुपात 0.03 से कम, उच्च समय सीमा तटस्थ
    • अस्थिर बाजारः ब्रिन बैंडविड्थ औसत बैंडविड्थ से 1.5 गुना अधिक और एटीआर औसत एटीआर से 1.2 गुना अधिक
    • शांत प्रकार का बाजारः ब्लीन बैंडविड्थ औसत बैंडविड्थ से 0.8 गुना कम और एटीआर औसत एटीआर से 0.9 गुना कम
  4. आकृतियों की पहचान और मात्रा की पुष्टिरणनीतिः कई उच्च-संभाव्यता वाले फ़्रेम आकृतियों का पता लगाने के लिए, जिसमें पूर्णांक-शोषण, कण रेखा, सुबह के तारे की रेखा, छिद्रण रेखा, दोहरे तल, और उनके पूर्णांक-उपसंद आकृतियाँ शामिल हैं। प्रत्येक आकृतियों को लेनदेन की मात्रा को बढ़ाने की आवश्यकता होती है ताकि संकेत की विश्वसनीयता बढ़ सके।

  5. मल्टी फैक्टर स्कोरिंग सिस्टम: तकनीकी संकेतकों, आकृति पहचान और लेनदेन की मात्रा का समग्र मूल्यांकन, एक समग्र स्कोर उत्पन्न करना। खरीद संकेतों के लिए बुल मार्केट स्कोर ≥1.0 की आवश्यकता होती है, और बेचने के संकेतों के लिए बियर मार्केट स्कोर ≥1.0 की आवश्यकता होती है।

  6. गतिशील स्टॉप और ट्रैक स्टॉप: एटीआर का उपयोग गतिशील स्टॉप-लॉस स्तर की गणना करने के लिए किया जाता है, जिससे यह सुनिश्चित होता है कि जोखिम प्रबंधन बाजार की अस्थिरता के लिए अनुकूल है। स्टॉप-लॉस दूरी एटीआर मूल्य के अनुसार स्वचालित रूप से समायोजित होती है, जो अस्थिरता बढ़ने पर विस्तारित होती है और अस्थिरता कम होने पर सिकुड़ जाती है।

  7. स्वतः अनुकूलित प्रदर्शन ट्रैकिंग: सिस्टम विभिन्न बाजार तंत्रों के तहत लेनदेन के प्रदर्शन को रिकॉर्ड करता है, जिसका उपयोग ट्रेडिंग मापदंडों और रेटिंग अवमूल्यन को समायोजित करने के लिए किया जाता है, जिससे रणनीति के अनुकूल अनुकूलन को प्राप्त किया जा सकता है।

रणनीतिक लाभ

  1. बाजार के अनुकूलनइस रणनीति का सबसे महत्वपूर्ण लाभ यह है कि यह चार अलग-अलग बाजार स्थितियों को स्वचालित रूप से पहचानने और अनुकूलित करने में सक्षम है, जिससे बदलते बाजार वातावरण में एक एकल रणनीति की सीमाओं से बचा जाता है। चाहे बाजार मजबूत प्रवृत्ति, क्षैतिज संरेखण, उच्च अस्थिरता या कम अस्थिरता की स्थिति में हो, सिस्टम पैरामीटर और सिग्नल थ्रेशोल्ड को तदनुसार समायोजित कर सकता है।

  2. बहु-समय फ़्रेम पुष्टिइस “शीर्ष-से-नीचे” विश्लेषण विधि ने कम गुणवत्ता वाले संकेतों को प्रभावी ढंग से फ़िल्टर किया, जिससे झूठे ब्रेकडाउन और शोर लेनदेन को कम किया गया।

  3. उच्च-स्तरीय आकृति पहचान: संश्लेषित यातायात पुष्टि के साथ मिलान आकृतियों की पहचान एक उच्च संभावना प्रवेश संकेत प्रदान करती है। ये विशेष रूप से प्रभावी हैं जब वे समर्थन और प्रतिरोध बिंदुओं के पास होते हैं और यातायात में वृद्धि के साथ होते हैं।

  4. गतिशील जोखिम प्रबंधनएटीआर-आधारित स्टॉप और ट्रैक स्टॉप तंत्र यह सुनिश्चित करता है कि जोखिम प्रबंधन बाजार में उतार-चढ़ाव के साथ स्वचालित रूप से समायोजित हो। यह विधि पूंजी की रक्षा करते हुए, लाभदायक पदों को जारी रखने की अनुमति देती है, जोखिम-प्रतिफल अनुपात का अनुकूलन करती है।

  5. स्व-अनुकूलन तंत्ररणनीतियां विभिन्न बाजार तंत्रों के तहत प्रदर्शन को रिकॉर्ड करने में सक्षम हैं, भविष्य के लेनदेन के लिए प्रतिक्रिया और समायोजन के लिए आधार प्रदान करते हैं, और निरंतर आत्म-सुधार को प्राप्त करते हैं।

  6. दृश्य निगरानी: रंग-कोडेड पृष्ठभूमि और प्रदर्शन टैबलेट के माध्यम से, व्यापारियों को वर्तमान बाजार की स्थिति, रणनीति प्रदर्शन और प्रमुख संकेतकों के बारे में सहज ज्ञान प्राप्त होता है, जिससे संचालन की पारदर्शिता बढ़ जाती है।

रणनीतिक जोखिम

  1. पैरामीटर संवेदनशीलता: यह रणनीति कई मापदंडों और थ्रेशोल्ड का उपयोग करती है जो बाजार तंत्र की पहचान और सिग्नल उत्पन्न करती है। इन मापदंडों की सेटिंग को सावधानीपूर्वक समायोजित करने की आवश्यकता होती है, अन्यथा यह बाजार की स्थिति को गलत तरीके से समझने या गलत सिग्नल उत्पन्न करने का कारण बन सकता है। विशेष रूप से ADX, ATR अनुपात और ब्रीलिंग बैंडविड्थ जैसे महत्वपूर्ण थ्रेशोल्ड को विभिन्न व्यापारिक किस्मों की विशेषताओं के अनुसार अनुकूलित करने की आवश्यकता होती है।

  2. कम्प्यूटेशनल जटिलताबहुस्तरीय सूचक गणना और तार्किक निर्णय रणनीतियों की जटिलता को बढ़ाते हैं, जिससे प्रतिक्रिया और वास्तविक समय निष्पादन की गति धीमी हो सकती है, खासकर कम समय चक्र या उच्च आवृत्ति वाले व्यापारिक वातावरण में।

  3. बाजार परिवर्तन में देरीहालांकि रणनीति को विभिन्न बाजार स्थितियों की पहचान करने के लिए डिज़ाइन किया गया है, बाजार परिवर्तन की प्रक्रिया क्षणिक नहीं हो सकती है, बल्कि धीरे-धीरे होती है। परिवर्तन के दौरान, रणनीति को गलतफहमी और गलत संकेतों का खतरा हो सकता है।

  4. तकनीकी संकेतकों पर अत्यधिक निर्भरता: रणनीति मुख्य रूप से तकनीकी संकेतकों और मूल्य पैटर्न पर आधारित है, बुनियादी कारकों और बाजार की भावनाओं को ध्यान में रखे बिना। जब कोई बड़ी खबर या ब्लैक स्वान घटना होती है, तो शुद्ध तकनीकी विश्लेषण बेकार हो सकता है।

  5. विकृति का पता लगाना: रणनीतियों की जटिलता और अनुकूलनशीलता के कारण, ऐतिहासिक आंकड़ों के साथ अति-अनुरूपता का जोखिम है, वास्तविक प्रदर्शन संभवतः कम हो सकता है।

  6. पूंजी की आवश्यकतागतिशील जोखिम प्रबंधन तंत्र को कुछ बाजार स्थितियों में एक बड़े स्टॉप लॉस की आवश्यकता हो सकती है, जिसके लिए उचित जोखिम अनुपात बनाए रखने के लिए पर्याप्त ट्रेडिंग पूंजी की आवश्यकता होती है।

अनुकूलन दिशा

  1. मशीन लर्निंग: बाजार तंत्र की पहचान और पैरामीटर समायोजन को अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम को पेश करना। वर्गीकरण सटीकता में सुधार के लिए विभिन्न बाजार स्थितियों के संभावित पैटर्न की पहचान करने के लिए ऐतिहासिक डेटा प्रशिक्षण मॉडल का उपयोग किया जा सकता है। कार्यान्वयन में यादृच्छिक जंगलों का उपयोग करना या बाजार की स्थिति को वर्गीकृत करने के लिए वेक्टर मशीनों का समर्थन करना शामिल हो सकता है।

  2. भावनात्मक संकेतक एकीकरण: बाजार की भावना के संकेतकों (जैसे कि VIX, मूल्यह्रास / मूल्यह्रास विकल्प अनुपात, सामाजिक मीडिया भावना विश्लेषण, आदि) को अतिरिक्त पुष्टि के रूप में पेश किया गया। बाजार की भावना के आंकड़े अग्रणी संकेतकों के रूप में काम कर सकते हैं, जो बाजार के टर्नओवर की भविष्यवाणी करने में मदद करते हैं।

  3. मूलभूत डेटा एकीकरण: आर्थिक कैलेंडर की घटनाओं, आय रिपोर्ट या प्रमुख समाचार रिलीज जैसे महत्वपूर्ण बुनियादी आंकड़ों को एकीकृत करने के लिए एक ढांचा विकसित करना। इससे महत्वपूर्ण घोषणाओं से पहले जोखिम को समायोजित करने में मदद मिलती है और अप्रत्याशित उतार-चढ़ाव से होने वाले नुकसान से बचा जाता है।

  4. समय फ़िल्टरट्रेडिंग समय फ़िल्टर को लागू करें, कम तरलता या अस्थिरता के असामान्य समय से बचें। यह विशेष रूप से क्रॉस-मार्केट ट्रेडिंग के लिए महत्वपूर्ण है, जो एशियाई, यूरोपीय और अमेरिकी बाजारों में ट्रेडिंग के दौरान असामान्य समय से बचता है।

  5. प्रासंगिकता विश्लेषण मॉड्यूल: क्रॉस-एसेट प्रासंगिकता विश्लेषण जोड़ें, मल्टी-मार्केट पैटर्न और प्रसारण संकेतों की पहचान करें। उदाहरण के लिए, मुद्रा जोड़े के बीच प्रासंगिकता, स्टॉक इंडेक्स और VIX के बीच संबंध, अतिरिक्त व्यापार की पुष्टि प्रदान कर सकते हैं।

  6. गतिशील होल्डिंग स्केल अनुकूलन: वर्तमान बाजार तंत्र और ऐतिहासिक प्रदर्शन के आधार पर स्थिति आकार को स्वचालित रूप से समायोजित करना। अच्छी तरह से प्रदर्शन करने वाले बाजार तंत्र के तहत जोखिम के द्वार को बढ़ाया जा सकता है और अनिश्चितता या खराब प्रदर्शन के ऐतिहासिक वातावरण में जोखिम को कम किया जा सकता है।

  7. हार्डवेयर अनुकूलन: कोड दक्षता में सुधार, विशेष रूप से वास्तविक समय लेनदेन वातावरण में गणना की जटिलता को कम करना। कुछ तर्क को फिर से लिखने पर विचार किया जा सकता है, अधिक कुशल एल्गोरिदम और डेटा संरचनाओं का उपयोग करना।

संक्षेप

बहु-समय फ्रेम स्व-अनुकूली बाजार तंत्र के लिए क्वांटिफाइड ट्रेडिंग रणनीति एक महत्वपूर्ण नवाचार का प्रतिनिधित्व करती है, जो बाजार तंत्र की पहचान, बहु-समय फ्रेम विश्लेषण, पैटर्न पहचान और गतिशील जोखिम प्रबंधन को एकीकृत करती है। इसकी आत्म-अनुकूली क्षमता और व्यापक तकनीकी संकेतक एकीकरण इसे विभिन्न बाजार स्थितियों में प्रतिस्पर्धी बनाए रखने में सक्षम बनाता है, न कि केवल एक ही बाजार की स्थिति तक सीमित है।

इस रणनीति का वास्तविक मूल्य इसके समग्र ढांचे में है न कि इसके अलग-अलग घटकों में। बाजार तंत्र की पहचान, बहु-समय फ्रेम की पुष्टि, पैटर्न की पहचान और गतिशील जोखिम प्रबंधन के सहकार्य के माध्यम से, रणनीति उच्च गुणवत्ता वाले संकेत उत्पन्न करने और जोखिम को प्रभावी ढंग से प्रबंधित करने में सक्षम है। इस बहु-स्तरीय दृष्टिकोण ने गलत संकेतों को कम किया और समग्र स्थिरता में सुधार किया।

हालांकि, इस रणनीति को पैरामीटर संवेदनशीलता, गणना की जटिलता और संभावित अति-समायोजन जैसी चुनौतियों का भी सामना करना पड़ता है। व्यापारियों को इस रणनीति को लागू करते समय इन जोखिमों के बारे में पता होना चाहिए और पर्याप्त पैरामीटर अनुकूलन और आगे के परीक्षण करना चाहिए।

भविष्य के अनुकूलन में मशीन सीखने को बढ़ाने, भावनात्मक संकेतक को एकीकृत करने और गतिशील स्थिति आकार को समायोजित करना शामिल है। इन सुधारों से रणनीति की अनुकूलनशीलता और स्थिरता में और वृद्धि होगी, जिससे यह एक अधिक व्यापक व्यापार प्रणाली बन जाएगी। कुल मिलाकर, रणनीति एक मजबूत ढांचा प्रदान करती है जिसे व्यापारियों की जोखिम वरीयताओं और बाजार के दृष्टिकोण के अनुसार अनुकूलित और विस्तारित किया जा सकता है।

रणनीति स्रोत कोड
/*backtest
start: 2025-04-13 00:00:00
end: 2025-04-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USD"}]
*/

//@version=6
strategy("Dskyz (DAFE) AI Adaptive Regime - Pro", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, calc_on_order_fills=true, calc_on_every_tick=true)

// This script uses higher timeframe values for RSI/MACD, integrated into regime detection and scoring.
// Logic uses closed HTF bars to avoid repainting.

// D=====================================================Z
// 1. ATR SETTINGS==Z
// D=====================================================Z
group_atr = "⚡ ATR Settings"
atr_period     = input.int(14, "ATR Period", minval=1, group=group_atr)
atr_multiplier = input.float(1.5, "ATR Multiplier", minval=0.1, step=0.1, group=group_atr)
atr_val        = ta.atr(atr_period)
atr_avg        = ta.sma(atr_val, 50)

// D=====================================================Z
// 2. MOVING AVERAGE (MA) SETTINGS==Z
// D=====================================================Z
group_ma = "📊 Moving Averages"
fast_ma_length        = input.int(9, "Fast MA Length", minval=1, group=group_ma)
slow_ma_length        = input.int(34, "Slow MA Length", minval=1, group=group_ma)
ma_fast               = ta.ema(close, fast_ma_length)
ma_slow               = ta.ema(close, slow_ma_length)
ma_strength_threshold = input.float(0.5, "MA Strength Threshold", minval=0.0, step=0.1, group=group_ma)
trend_dir = ma_fast > ma_slow + (atr_val * ma_strength_threshold) ? 1 : ma_fast < ma_slow - (atr_val * ma_strength_threshold) ? -1 : 0

// D=====================================================Z
// 3. MULTI-TIMEFRAME (HTF) SETTINGS==Z
// D=====================================================Z
group_MTA = "⏱️ Multi-Timeframe Inputs"
htf = input.timeframe("D", "HTF for RSI & MACD", group=group_MTA)
htf_rsi_raw = request.security(syminfo.tickerid, htf, ta.rsi(close, 14))
htf_rsi = htf_rsi_raw[1]
[htf_macd_line_raw, htf_macd_signal_raw, htf_macd_hist_raw] = request.security(syminfo.tickerid, htf, ta.macd(close, 12, 26, 9))
htf_macd_line = htf_macd_line_raw[1]
htf_macd_signal = htf_macd_signal_raw[1]
htf_macd_hist = htf_macd_hist_raw[1]
// new: HTF trend direction for regime detection
htf_trend_bull = htf_macd_line > htf_macd_signal and htf_rsi > 50
htf_trend_bear = htf_macd_line < htf_macd_signal and htf_rsi < 50

// D=====================================================Z
// 4. TRADE SETTINGS==Z
// D=====================================================Z
group_trade = "⚙️ Trade Settings"
risk_per_trade      = input.int(500, "Risk per Trade ($)", minval=50, group=group_trade)
max_contracts       = input.int(5, "Max Contracts", minval=1, group=group_trade)
max_daily_drawdown  = input.float(0.05, "Max Daily Drawdown (%)", minval=0.01, group=group_trade)
tick_value          = input.float(12.5, "Tick Value ($)", minval=0.01, group=group_trade)
ticks_per_point     = input.int(4, "Ticks per Point", minval=1, group=group_trade)
default_stop_points = input.float(8.0, "Default Stop (Points)", minval=0.25, group=group_trade)

// D=====================================================Z
// 5. ADVANCED INDICATOR CALCULATIONS==Z
// D=====================================================Z

// --- ADX Calculation ---Z
adx_len   = 14
up        = ta.change(high)
down      = -ta.change(low)
plus_dm   = na(up) ? na : (up > down and up > 0 ? up : 0)
minus_dm  = na(down) ? na : (down > up and down > 0 ? down : 0)
trur      = ta.rma(ta.tr, adx_len)
plus_di   = 100 * ta.rma(plus_dm, adx_len) / trur
minus_di  = 100 * ta.rma(minus_dm, adx_len) / trur
adx_val   = 100 * ta.rma(math.abs(plus_di - minus_di) / (plus_di + minus_di), adx_len)

// --- Bollinger Bands Calculation ---Z
bb_basis     = ta.sma(close, 20)
bb_dev       = 2 * ta.stdev(close, 20)
bb_upper     = bb_basis + bb_dev
bb_lower     = bb_basis - bb_dev
bb_width     = (bb_upper - bb_lower) / bb_basis
bb_width_avg = ta.sma(bb_width, 50)

// --- Price Action Range ---Z
price_range = ta.highest(high, 20) - ta.lowest(low, 20)
range_ratio = price_range / close

// D=====================================================Z
// 6. REGIME ASSIGNMENT & PATTERN RECOGNITION==Z
// D=====================================================Z

// Regime assignment with HTF influence and looser thresholds
is_trending = adx_val > 20 and math.abs(ma_fast - ma_slow) > atr_val * 0.3 and htf_trend_bull or htf_trend_bear // loosened ADX and MA thresholds, added HTF
is_range    = adx_val < 25 and range_ratio < 0.03 and not htf_trend_bull and not htf_trend_bear // loosened ADX and range, HTF neutral
is_volatile = bb_width > bb_width_avg * 1.5 and atr_val > atr_avg * 1.2 and (htf_rsi > 70 or htf_rsi < 30) // loosened BB/ATR, added HTF overbought/oversold
is_quiet    = bb_width < bb_width_avg * 0.8 and atr_val < atr_avg * 0.9 // loosened BB/ATR
regime      = is_trending ? 1 : is_range ? 2 : is_volatile ? 3 : is_quiet ? 4 : 5
regime_name = regime == 1 ? "Trending" : regime == 2 ? "Range" : regime == 3 ? "Volatile" : regime == 4 ? "Quiet" : "Other"

// Pattern Recognition & Volume Confirmation-Z
vol_avg       = ta.sma(volume, 20)
vol_spike     = volume > vol_avg * 1.5
recent_low    = ta.lowest(low, 20)
recent_high   = ta.highest(high, 20)
is_near_support    = low <= recent_low * 1.01
is_near_resistance = high >= recent_high * 0.99

bullish_engulfing = close[1] < open[1] and close > open and close > open[1] and open < close[1] and is_near_support and vol_spike
hammer            = high - low > 3 * math.abs(open - close) and (close - low) / (0.001 + high - low) > 0.6 and is_near_support and vol_spike
morning_star      = close[2] < open[2] and math.abs(close[1] - open[1]) < 0.2 * (high[1] - low[1]) and close > open and close > (open[2] + close[2]) / 2 and is_near_support and vol_spike
piercing          = close[1] < open[1] and close > open and close > (open[1] + close[1]) / 2 and open < close[1] and is_near_support and vol_spike
double_bottom     = low < low[1] and low[1] > low[2] and low[2] < low[3] and close > open and is_near_support and vol_spike

bearish_engulfing = close[1] > open[1] and close < open and close < open[1] and open > close[1] and is_near_resistance and vol_spike
shooting_star     = high - low > 3 * math.abs(open - close) and (high - close) / (0.001 + high - low) > 0.6 and is_near_resistance and vol_spike
evening_star      = close[2] > open[2] and math.abs(close[1] - open[1]) < 0.2 * (high[1] - low[1]) and close < open and close < (open[2] + close[2]) / 2 and is_near_resistance and vol_spike
dark_cloud        = close[1] > open[1] and close < open and close < (open[1] + close[1]) / 2 and open > close[1] and is_near_resistance and vol_spike
double_top        = high > high[1] and high[1] < high[2] and high[2] > high[3] and close < open and is_near_resistance and vol_spike

bull_signal = (bullish_engulfing ? 0.5 : 0.0) +
              (hammer ? (regime == 2 ? 0.4 : 0.2) : 0.0) +
              (morning_star ? 0.2 : 0.0) +
              (piercing ? 0.2 : 0.0) +
              (double_bottom ? (regime == 3 ? 0.3 : 0.15) : 0.0)

bear_signal = (bearish_engulfing ? 0.5 : 0.0) +
              (shooting_star ? (regime == 2 ? 0.4 : 0.2) : 0.0) +
              (evening_star ? 0.2 : 0.0) +
              (dark_cloud ? 0.2 : 0.0) +
              (double_top ? (regime == 3 ? 0.3 : 0.15) : 0.0)

// Multi-Factor Confirmation with HTF-Z
rsi_val   = ta.rsi(close, 14)
[macd_line, macd_signal, macd_hist] = ta.macd(close, 12, 26, 9)
trend_bull = ma_fast > ma_slow
trend_bear = ma_fast < ma_slow
rsi_bull   = rsi_val < 30
rsi_bear   = rsi_val > 70
macd_bull  = macd_line > macd_signal
macd_bear  = macd_line < macd_signal
vol_expansion = atr_val > atr_avg * 1.2
// new: HTF confirmation for scoring
htf_bull_confirm = htf_trend_bull and htf_rsi < 70
htf_bear_confirm = htf_trend_bear and htf_rsi > 30

bull_score = bull_signal + (trend_bull ? 0.2 : 0) + (rsi_bull ? 0.15 : 0) + (macd_bull ? 0.15 : 0) + (vol_expansion ? 0.1 : 0) + (htf_bull_confirm ? 0.2 : 0)
bear_score = bear_signal + (trend_bear ? 0.2 : 0) + (rsi_bear ? 0.15 : 0) + (macd_bear ? 0.15 : 0) + (vol_expansion ? 0.1 : 0) + (htf_bear_confirm ? 0.2 : 0)

// D=====================================================Z
// 7. PERFORMANCE TRACKING & ADAPTIVE THRESHOLDS==Z
// D=====================================================Z
var float[] regime_pnl_long  = array.new_float(5, 0)
var float[] regime_pnl_short = array.new_float(5, 0)
var int[] regime_win_long    = array.new_int(5, 0)
var int[] regime_loss_long   = array.new_int(5, 0)
var int[] regime_win_short   = array.new_int(5, 0)
var int[] regime_loss_short  = array.new_int(5, 0)
var int entry_regime = na

if barstate.isconfirmed and strategy.closedtrades > 0 and not na(entry_regime)
    last_trade_profit = strategy.closedtrades.profit(strategy.closedtrades - 1)
    last_trade_entry_id = strategy.closedtrades.entry_id(strategy.closedtrades - 1)
    idx = entry_regime - 1
    if last_trade_entry_id == "Long"
        array.set(regime_pnl_long, idx, array.get(regime_pnl_long, idx) + last_trade_profit)
        if last_trade_profit > 0
            array.set(regime_win_long, idx, array.get(regime_win_long, idx) + 1)
        else
            array.set(regime_loss_long, idx, array.get(regime_loss_long, idx) + 1)
    else if last_trade_entry_id == "Short"
        array.set(regime_pnl_short, idx, array.get(regime_pnl_short, idx) + last_trade_profit)
        if last_trade_profit > 0
            array.set(regime_win_short, idx, array.get(regime_win_short, idx) + 1)
        else
            array.set(regime_loss_short, idx, array.get(regime_loss_short, idx) + 1)
    entry_regime := na

// D=====================================================Z
// 8. DRAWDOWN & CIRCUIT BREAKER==Z
// D=====================================================Z
var float max_equity = strategy.equity
if strategy.equity > max_equity
    max_equity := strategy.equity
daily_drawdown = (max_equity - strategy.equity) / max_equity
pause_trading  = daily_drawdown > max_daily_drawdown

// D=====================================================Z
// 9. ENTRY & EXIT LOGIC WITH DYNAMIC STOPS & TRAILING STOPS=Z
// D=====================================================Z
swing_low  = ta.lowest(low, 5)
swing_high = ta.highest(high, 5)
long_condition  = bull_score >= 1.0 and not pause_trading
short_condition = bear_score >= 1.0 and not pause_trading

var float trail_stop_long  = na
var float trail_stop_short = na
var float long_stop_price  = na
var float long_limit_price = na
var float short_stop_price = na
var float short_limit_price = na

if long_condition and strategy.position_size <= 0
    intended_stop = swing_low - atr_multiplier * atr_val
    stop_distance_points = close - intended_stop
    risk_per_contract = stop_distance_points * syminfo.pointvalue
    contracts = math.floor(risk_per_trade / risk_per_contract)
    contracts := contracts > 0 ? contracts : 1
    contracts := math.min(contracts, max_contracts)
    long_limit = close + stop_distance_points * 2
    strategy.entry("Long", strategy.long, qty = contracts)
    strategy.exit("Exit", from_entry = "Long", stop = intended_stop, limit = long_limit)
    long_stop_price  := intended_stop
    long_limit_price := long_limit
    trail_stop_long  := intended_stop
    entry_regime     := regime

if short_condition and strategy.position_size >= 0
    intended_stop = swing_high + atr_multiplier * atr_val
    stop_distance_points = intended_stop - close
    risk_per_contract = stop_distance_points * syminfo.pointvalue
    contracts = math.floor(risk_per_trade / risk_per_contract)
    contracts := contracts > 0 ? contracts : 1
    contracts := math.min(contracts, max_contracts)
    short_limit = close - stop_distance_points * 2
    strategy.entry("Short", strategy.short, qty = contracts)
    strategy.exit("Exit", from_entry = "Short", stop = intended_stop, limit = short_limit)
    short_stop_price  := intended_stop
    short_limit_price := short_limit
    trail_stop_short  := intended_stop
    entry_regime      := regime

if strategy.position_size > 0
    if close > long_limit_price * 0.5
        trail_stop_long := math.max(trail_stop_long, close - atr_val * atr_multiplier)
    strategy.exit("Long Trailing Stop", from_entry = "Long", stop = trail_stop_long)

if strategy.position_size < 0
    if close < short_limit_price * 0.5
        trail_stop_short := math.min(trail_stop_short, close + atr_val * atr_multiplier)
    strategy.exit("Short Trailing Stop", from_entry = "Short", stop = trail_stop_short)

if strategy.position_size == 0
    long_stop_price  := na
    long_limit_price := na
    short_stop_price := na
    short_limit_price := na

// D=====================================================Z
// 10. VISUALIZATION==Z
// D=====================================================Z
bgcolor(regime == 1 ? color.new(color.green, 85) : 
       regime == 2 ? color.new(color.orange, 85) : 
       regime == 3 ? color.new(color.red, 85) : 
       regime == 4 ? color.new(color.gray, 85) : 
       color.new(color.navy, 85))

plotshape(long_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Short Signal")
plot(ma_fast, "Fast MA", color=color.new(color.blue, 0), linewidth=2)
plot(ma_slow, "Slow MA", color=color.new(color.red, 0), linewidth=2)
plot(strategy.position_size > 0 ? long_stop_price  : na, "Long Stop", color=color.new(color.red, 0), style=plot.style_linebr)
plot(strategy.position_size > 0 ? long_limit_price : na, "Long Target", color=color.new(color.green, 0), style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_stop_price  : na, "Short Stop", color=color.new(color.red, 0), style=plot.style_linebr)
plot(strategy.position_size < 0 ? short_limit_price : na, "Short Target", color=color.new(color.green, 0), style=plot.style_linebr)

// D=====================================================Z
// 11. DASHBOARD: METRICS TABLE (Bottom-Left)=Z
// D=====================================================Z
var table dashboard = table.new(position.bottom_left, 2, 13, bgcolor=color.new(#000000, 29), border_color=color.rgb(80,80,80), border_width=1)
if barstate.islast
    table.cell(dashboard, 0, 0, "⚡(DAFE) AI Adaptive Regime™", text_color=color.rgb(96,8,118), text_size=size.small)
    modeStr = pause_trading ? "Paused" : "Active"
    table.cell(dashboard, 0, 1, "Mode:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 1, modeStr, text_color=color.white, text_size=size.small)
    trendText = trend_dir == 1 ? "Bullish" : trend_dir == -1 ? "Bearish" : "Neutral"
    table.cell(dashboard, 0, 2, "Trend:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 2, trendText, text_color=trend_dir == 1 ? color.green : trend_dir == -1 ? color.red : color.gray, text_size=size.small)
    table.cell(dashboard, 0, 3, "ATR:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 3, str.tostring(atr_val, "#.##"), text_color=color.white, text_size=size.small)
    table.cell(dashboard, 0, 4, "ATR Avg:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 4, str.tostring(atr_avg, "#.##"), text_color=color.white, text_size=size.small)
    table.cell(dashboard, 0, 5, "Volume Spike:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 5, vol_spike ? "YES" : "NO", text_color=vol_spike ? color.green : color.red, text_size=size.small)
    table.cell(dashboard, 0, 6, "RSI:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 6, str.tostring(rsi_val, "#.##"), text_color=color.white, text_size=size.small)
    rsiCondText = rsi_val < 30 ? "Oversold" : rsi_val > 70 ? "Overbought" : "Neutral"
    table.cell(dashboard, 0, 7, "RSI Cond:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 7, rsiCondText, text_color=color.white, text_size=size.small)
    table.cell(dashboard, 0, 8, "HTF RSI:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 8, str.tostring(htf_rsi, "#.##"), text_color=color.white, text_size=size.small)
    htfTrendText = htf_trend_bull ? "Bullish" : htf_trend_bear ? "Bearish" : "Neutral"
    table.cell(dashboard, 0, 9, "HTF Trend:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 9, htfTrendText, text_color=htf_trend_bull ? color.green : htf_trend_bear ? color.red : color.gray, text_size=size.small)
    lastSignal = long_condition ? "Buy" : short_condition ? "Sell" : "None"
    table.cell(dashboard, 0, 10, "Last Signal:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 10, lastSignal, text_color=long_condition ? color.green : short_condition ? color.red : color.white, text_size=size.small)
    table.cell(dashboard, 0, 11, "Regime:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 11, regime_name, text_color=color.white, text_size=size.small)
    table.cell(dashboard, 0, 12, "Bull Score:", text_color=color.white, text_size=size.small)
    table.cell(dashboard, 1, 12, str.tostring(bull_score, "#.##"), text_color=color.white, text_size=size.small)

// D=====================================================Z
// REGIME CONDITIONS
// D=====================================================Z
var table debug_table = table.new(position.top_right, 2, 5, bgcolor=color.new(#000000, 50), border_color=color.rgb(80,80,80), border_width=1)
if barstate.islast
    table.cell(debug_table, 0, 0, "Regime Conditions", text_color=color.rgb(96,8,118), text_size=size.small)
    table.cell(debug_table, 0, 1, "ADX:", text_color=color.white, text_size=size.small)
    table.cell(debug_table, 1, 1, str.tostring(adx_val, "#.##"), text_color=color.white, text_size=size.small)
    table.cell(debug_table, 0, 2, "BB Width Ratio:", text_color=color.white, text_size=size.small)
    table.cell(debug_table, 1, 2, str.tostring(bb_width / bb_width_avg, "#.##"), text_color=color.white, text_size=size.small)
    table.cell(debug_table, 0, 3, "ATR Ratio:", text_color=color.white, text_size=size.small)
    table.cell(debug_table, 1, 3, str.tostring(atr_val / atr_avg, "#.##"), text_color=color.white, text_size=size.small)
    table.cell(debug_table, 0, 4, "Range Ratio:", text_color=color.white, text_size=size.small)
    table.cell(debug_table, 1, 4, str.tostring(range_ratio, "#.##"), text_color=color.white, text_size=size.small)

// --- Bollinger Bands Visuals ---Z
p_bb_basis = plot(bb_basis, title="BB Basis", color=color.new(#ffffff, 50), linewidth=1)
p_bb_upper = plot(bb_upper, title="BB Upper", color=color.new(#4caf4f, 45), linewidth=2)
p_bb_lower = plot(bb_lower, title="BB Lower", color=color.new(#ff5252, 45), linewidth=2)
fill(p_bb_upper, p_bb_lower, color=color.new(#423645, 65))

//D=================================================================Z
// DASHBOARD: WATERMARK LOGO (Bottom-Right)
//D=================================================================Z
var table watermarkTable = table.new(position.bottom_right, 1, 1, bgcolor=color.rgb(0,0,0,80), border_color=color.rgb(0,50,137), border_width=1)
if barstate.islast
    table.cell(watermarkTable, 0, 0, "⚡ Dskyz (DAFE) AI Adaptive Regime - Pro", text_color=color.rgb(96,8,118), text_size=size.normal)

// --- ALERTS ---Z
alertcondition(long_condition, title="Long Signal Alert", message="Enhanced Strategy Long Signal")
alertcondition(short_condition, title="Short Signal Alert", message="Enhanced Strategy Short Signal")