उच्च परिशुद्धता एटीआर ट्रेलिंग स्टॉप लॉस सफलता रणनीति और एडीएक्स दिशा फ़िल्टरिंग सिस्टम

ATR ADX RMA 突破交易 趋势跟踪 动态止损 回撤止盈 方向过滤 自适应风险管理
निर्माण तिथि: 2025-07-08 13:53:49 अंत में संशोधित करें: 2025-07-08 13:53:49
कॉपी: 1 क्लिक्स: 284
2
ध्यान केंद्रित करना
319
समर्थक

उच्च परिशुद्धता एटीआर ट्रेलिंग स्टॉप लॉस सफलता रणनीति और एडीएक्स दिशा फ़िल्टरिंग सिस्टम उच्च परिशुद्धता एटीआर ट्रेलिंग स्टॉप लॉस सफलता रणनीति और एडीएक्स दिशा फ़िल्टरिंग सिस्टम

अवलोकन

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

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

इस रणनीति का मुख्य सिद्धांत एक समग्र निर्णय प्रणाली पर आधारित है जिसमें कीमतें ऐतिहासिक समर्थन प्रतिरोध को तोड़ती हैं और प्रवृत्ति की पुष्टि और दिशा की ताकत को फ़िल्टर करती हैं।

  1. ब्रेकआउट सिग्नल उत्पन्न: N चक्र ((डिफ़ॉल्ट 96) उच्च/निम्न बिंदु का उपयोग करके एक ब्रेकआउट संदर्भ बिंदु के रूप में, एक बहु-हेड सिग्नल को ट्रिगर करें जब कीमत बंद होने पर पूर्व-उच्च बिंदु को तोड़ती है और एक ऊंची प्रवृत्ति में होती है; जब कीमत बंद होने पर पूर्व-निम्न बिंदु को तोड़ती है और एक गिरावट की प्रवृत्ति में होती है, तो एक ओवरहेड सिग्नल को ट्रिगर करें।

  2. रुझान फ़िल्टर: एक लंबी अवधि के RMA औसत रेखा का उपयोग करें (डिफ़ॉल्ट 960) एक प्रवृत्ति के आधार के रूप में, RMA के ऊपर कीमत को एक ऊंची प्रवृत्ति के रूप में माना जाता है, और RMA के नीचे कीमत को एक नीचे की प्रवृत्ति के रूप में माना जाता है, यह सुनिश्चित करने के लिए कि व्यापार की दिशा मुख्य प्रवृत्ति के अनुरूप है।

  3. एडीएक्स दिशा शक्ति फ़िल्टर: वर्तमान बाजार की दिशात्मक ताकत की गणना करके ((ADX सूचकांक), और ADX को सेट थ्रेशोल्ड ((डिफ़ॉल्ट 12) से अधिक की आवश्यकता होती है और एक उछाल चरण में है, अनिश्चित दिशात्मक परिदृश्य को फ़िल्टर करें।

  4. दो-चरण रोकथाम तंत्र

    • चरण 1: प्रवेश के बाद एटीआर गुणांक (डिफ़ॉल्ट 1.0) का उपयोग करके प्रारंभिक स्टॉपलॉस सेट करें
    • चरण 2: जब लाभ एटीआर गुणांक (डिफ़ॉल्ट 3.0) से अधिक हो जाता है, तो ट्रैकिंग स्टॉप को सक्रिय करें, और अधिक एटीआर गुणांक (डिफ़ॉल्ट 9.0) का उपयोग करके गतिशील स्टॉप स्थिति सेट करें
  5. रोकथाम को वापस लेना: ट्रैक स्टॉप लॉस सक्रिय होने के बाद, मल्टीहेड उच्चतम मूल्य / शून्य न्यूनतम मूल्य रिकॉर्ड करें, और जब कीमत चरम बिंदु से वापस सेट एटीआर गुणांक से अधिक हो जाती है ((मल्टीहेड डिफ़ॉल्ट 13 गुना, शून्य डिफ़ॉल्ट 4 गुना), तो स्टॉप को ट्रिगर करें।

रणनीतिक लाभ

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

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

  3. दिशात्मक सत्यापन फ़िल्टर: ADX सूचकांक के माध्यम से फ़िल्टर करें, बाजार को पर्याप्त दिशा की आवश्यकता है और दिशा बढ़ रही है[1]), प्रभावी रूप से बिना किसी स्पष्ट प्रवृत्ति के समेकन बाजार में बार-बार व्यापार से बचने के लिए, झूठे ब्रेकआउट से होने वाले नुकसान को कम करने के लिए।

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

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

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

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

  1. फ़र्ज़ी घुसपैठ का खतरा: ADX फ़िल्टरिंग और ट्रेंड कन्फर्मेशन का उपयोग करने के बावजूद, बाजार में झूठे ब्रेकआउट हो सकते हैं, विशेष रूप से महत्वपूर्ण प्रेस विज्ञप्ति या तरलता में अचानक बदलाव के दौरान। इसका समाधान ADX थ्रेशोल्ड को उचित रूप से बढ़ाना या ब्रेकआउट कन्फर्मेशन आवश्यकताओं को बढ़ाना है, जैसे कि ब्रेकआउट के बाद निरंतर कई K लाइनों को बनाए रखना।

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

  3. स्टॉप लॉस लैगिंग का पता लगाएं: जब तेजी से बाजार में बदलाव होता है, तो स्टॉप-लॉस को ट्रैक करने से मूल्य परिवर्तनों को समय पर ट्रैक करने में असमर्थता हो सकती है, जिसके परिणामस्वरूप प्राप्त मुनाफे का कुछ हिस्सा वापस आ जाता है। उच्च अस्थिरता वाले वातावरण में एटीआर गुणांक को गतिशील रूप से समायोजित करने पर विचार किया जा सकता है या अल्पकालिक गतिशीलता के संकेतक के साथ संयोजन में पूर्व चेतावनी के साथ संभावित रुझान उलट सकता है।

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

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

अनुकूलन दिशा

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

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

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

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

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

  6. लेनदेन लागत अनुकूलन: विभिन्न प्रकार के लेनदेन के लिए तरलता विशेषताएं और लेनदेन लागत संरचना, प्रवेश के समय और आदेश प्रकार का अनुकूलन, जैसे कि कम तरलता वाले वातावरण में बाजार मूल्य सूची के बजाय सीमा सूची का उपयोग करना, या उच्च अस्थिरता वाले वातावरण में ट्रैकिंग सीमा सूची का उपयोग करना।

  7. भावनात्मक संकेतक एकीकरण: बाजार भावना सूचकांक (जैसे कि अस्थिरता सूचकांक, बाजार चौड़ाई सूचकांक, आदि) के साथ मिलकर निर्णय लेने के लिए एक सहायक संदर्भ के रूप में, अत्यधिक भावनात्मक वातावरण में रणनीति पैरामीटर को समायोजित करें या व्यापार को रोकें, ताकि तर्कहीन बाजार के वातावरण में अनावश्यक नुकसान से बचा जा सके।

संक्षेप

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

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

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

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

रणनीति स्रोत कोड
/*backtest
start: 2024-07-08 00:00:00
end: 2025-07-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy('YTPBTC1HATRSSADX', 
         overlay=true, 
         initial_capital=10000, 
         commission_value=0.1, 
         default_qty_value=100, 
         default_qty_type=strategy.percent_of_equity, 
         margin_long=10, 
         margin_short=10, 
         pyramiding=1)

// ==================== 输入参数 ====================
atr_length = input.int(48, 'ATR周期', minval=1, step=12)
atr_mult_1 = input.float(1.0, 'ATR初始止损乘数', minval=0.1, step=0.1)
atr_mult_2 = input.float(9.0, 'ATR追踪止损乘数', minval=0.1)

// 追踪激活倍数
profit_atr_mult = input.float(3.0, 'ATR追踪激活倍数', minval=0.5, step=0.5)

// 固定回撤止盈设置
long_pullback_atr = input.float(13, '多头回撤止盈倍数', minval=0, step=1)
short_pullback_atr = input.float(4, '空头回撤止盈倍数', minval=0, step=1)

breakout_period = input.int(96, title='突破周期', minval=1, step=24)
rma_length = input.int(500, 'RMA趋势过滤周期', minval=1, step=96)

// ADX设置
enable_adx_filter = input.bool(true, '启用ADX过滤')
adx_length = atr_length//input.int(48, 'ADX周期', minval=1, step=12)
adx_threshold = input.float(12, "ADX阈值", minval=1)

use_breakeven = true  // 启动追踪时是否先保本止损

// ==================== ATR计算 ====================
atr_value = ta.atr(atr_length)

// ==================== ADX指标计算 ====================
// 真实波幅计算
tr = math.max(math.max(high - low, math.abs(high - nz(close[1]))),
              math.abs(low - nz(close[1])))

// 方向性移动计算
dm_plus = high - nz(high[1]) > nz(low[1]) - low ? math.max(high - nz(high[1]), 0) : 0
dm_minus = nz(low[1]) - low > high - nz(high[1]) ? math.max(nz(low[1]) - low, 0) : 0

// ADX计算
var float sm_tr = na
var float sm_dm_plus = na
var float sm_dm_minus = na

sm_tr := nz(sm_tr[1]) - nz(sm_tr[1]) / adx_length + tr
sm_dm_plus := nz(sm_dm_plus[1]) - nz(sm_dm_plus[1]) / adx_length + dm_plus
sm_dm_minus := nz(sm_dm_minus[1]) - nz(sm_dm_minus[1]) / adx_length + dm_minus

di_plus = sm_dm_plus / sm_tr * 100
di_minus = sm_dm_minus / sm_tr * 100
dx = math.abs(di_plus - di_minus) / (di_plus + di_minus) * 100
adx = ta.sma(dx, adx_length)

// ==================== 趋势过滤 ====================
rma_trend = ta.rma(close, rma_length)
plot(rma_trend, title='RMA趋势线', color=color.black, linewidth=2)

trend_long = close > rma_trend
trend_short = close < rma_trend

// ==================== 突破信号 ====================
// 获取过去N根K线的最高高点和最低低点(避免未来数据)
highest_high = ta.highest(high, breakout_period)[1]
lowest_low = ta.lowest(low, breakout_period)[1]

// 入场条件 - 修改ADX条件,要求ADX上升
adx_condition = not enable_adx_filter or (adx >= adx_threshold and adx > adx[1])
long_condition = close > highest_high and trend_long and strategy.position_size == 0 and adx_condition
short_condition = close < lowest_low and trend_short and strategy.position_size == 0 and adx_condition

// ==================== 入场执行 ====================
if long_condition
    strategy.entry('Long', strategy.long)

if short_condition
    strategy.entry('Short', strategy.short)

// ==================== ATR止损系统 ====================
// 止损状态变量
var float long_stop_initial = na  // 第一段初始止损
var float long_stop_trail = na    // 第二段追踪止损
var bool long_trail_active = false
var float short_stop_initial = na  // 第一段初始止损
var float short_stop_trail = na    // 第二段追踪止损
var bool short_trail_active = false

// 回撤止盈变量
var float long_highest = na      // 多头最高价记录
var float short_lowest = na      // 空头最低价记录

// ==================== 多头止损计算 ====================
if strategy.position_size > 0
    // 新开多头仓位
    if strategy.position_size[1] <= 0
        long_stop_initial := strategy.position_avg_price - atr_value * atr_mult_1
        long_stop_trail := na
        long_trail_active := false
        long_highest := na  // 重置最高价记录
    else
        // 计算当前浮动盈亏
        float current_profit = close - strategy.position_avg_price
        
        // 检查是否激活追踪止损
        if not long_trail_active and current_profit >= atr_value * profit_atr_mult
            long_trail_active := true
            long_highest := high  // 开始记录最高价
            
            // 保本处理
            if use_breakeven
                long_stop_trail := strategy.position_avg_price
            else
                long_stop_trail := close - atr_value * atr_mult_2
        
        // 更新追踪止损和最高价记录
        if long_trail_active
            // 更新最高价记录
            long_highest := math.max(long_highest, high)
            
            // 传统追踪止损更新
            float new_stop = close - atr_value * atr_mult_2
            long_stop_trail := math.max(long_stop_trail, new_stop)

// ==================== 空头止损计算 ====================
if strategy.position_size < 0
    // 新开空头仓位
    if strategy.position_size[1] >= 0
        short_stop_initial := strategy.position_avg_price + atr_value * atr_mult_1
        short_stop_trail := na
        short_trail_active := false
        short_lowest := na  // 重置最低价记录
    else
        // 计算当前浮动盈亏
        float current_profit = strategy.position_avg_price - close
        
        // 检查是否激活追踪止损
        if not short_trail_active and current_profit >= atr_value * profit_atr_mult
            short_trail_active := true
            short_lowest := low  // 开始记录最低价
            
            // 保本处理
            if use_breakeven
                short_stop_trail := strategy.position_avg_price
            else
                short_stop_trail := close + atr_value * atr_mult_2
        
        // 更新追踪止损和最低价记录
        if short_trail_active
            // 更新最低价记录
            short_lowest := math.min(short_lowest, low)
            
            // 传统追踪止损更新
            float new_stop = close + atr_value * atr_mult_2
            short_stop_trail := math.min(short_stop_trail, new_stop)

// ==================== 止损执行 ====================
// 第一段止损:收盘价止损(未激活追踪时)
if strategy.position_size > 0 and not long_trail_active
    // 检查收盘价是否触及初始止损线
    if close <= long_stop_initial
        strategy.close('Long', comment='初始止损')

if strategy.position_size < 0 and not short_trail_active
    // 检查收盘价是否触及初始止损线
    if close >= short_stop_initial
        strategy.close('Short', comment='初始止损')

// 第二段止损:实时止损(激活追踪后)
if strategy.position_size > 0 and long_trail_active
    strategy.exit('Long Trail Stop', from_entry='Long', stop=long_stop_trail)

if strategy.position_size < 0 and short_trail_active  
    strategy.exit('Short Trail Stop', from_entry='Short', stop=short_stop_trail)

// 动态回撤止盈检查
if strategy.position_size > 0 and long_trail_active and not na(long_highest)
    // 计算从最高点回撤幅度
    pullback_amount = long_highest - close
    pullback_threshold = atr_value * long_pullback_atr
    if pullback_amount >= pullback_threshold
        strategy.close('Long', comment='回撤止盈')

if strategy.position_size < 0 and short_trail_active and not na(short_lowest)
    // 计算从最低点反弹幅度  
    pullback_amount = close - short_lowest
    pullback_threshold = atr_value * short_pullback_atr
    if pullback_amount >= pullback_threshold
        strategy.close('Short', comment='回撤止盈')

// ==================== 变量重置 ====================
if strategy.position_size[1] != 0 and strategy.position_size == 0
    long_stop_initial := na
    long_stop_trail := na
    long_trail_active := false
    short_stop_initial := na
    short_stop_trail := na
    short_trail_active := false
    // 重置回撤止盈变量
    long_highest := na
    short_lowest := na

// ==================== 图表绘制 ====================
plot(strategy.position_avg_price, color=color.new(color.yellow, 44), title="入场均价", linewidth=1)
plot(long_stop_initial, color=color.new(color.blue, 44), title='多头初始止损线', linewidth=1)
plot(short_stop_initial, color=color.new(color.blue, 44), title='空头初始止损线', linewidth=1)
plot(long_stop_trail, color=color.new(color.fuchsia, 44), title='多头追踪止损线', linewidth=1)
plot(short_stop_trail, color=color.new(color.fuchsia, 44), title='空头追踪止损线', linewidth=1)

// 最高/最低价记录线
plot(long_highest, color=color.new(color.green, 70), title='多头最高价', linewidth=1, style=plot.style_stepline)
plot(short_lowest, color=color.new(color.red, 70), title='空头最低价', linewidth=1, style=plot.style_stepline)

// 绘制突破线
plot(highest_high, color=color.new(color.green, 70), title='突破上线')
plot(lowest_low, color=color.new(color.red, 70), title='突破下线')

// 背景颜色显示趋势
bgcolor(trend_long ? color.new(color.green, 95) : trend_short ? color.new(color.red, 95) : na, title="趋势背景")

// ==================== 信息显示 ====================
// 在图表上显示当前策略信息
base_rows = enable_adx_filter ? 3 : 2
var table info_table = table.new(position.top_right, 2, base_rows, bgcolor=color.white, border_width=1)

var int row_index = 0
row_index := 0  // 重置行索引

table.cell(info_table, 0, row_index, "ATR周期", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, row_index, str.tostring(atr_length), text_color=color.black, text_size=size.small)
row_index := row_index + 1

// 只在启用ADX时显示
if enable_adx_filter
    table.cell(info_table, 0, row_index, "ADX", text_color=color.black, text_size=size.small)
    table.cell(info_table, 1, row_index, str.tostring(math.round(adx, 1)), text_color=color.black, text_size=size.small)
    row_index := row_index + 1

table.cell(info_table, 0, row_index, "追踪倍数", text_color=color.black, text_size=size.small)
table.cell(info_table, 1, row_index, str.tostring(profit_atr_mult), text_color=color.black, text_size=size.small)