اعلی درستگی والے ATR ٹریلنگ اسٹاپ نقصان کی پیش رفت کی حکمت عملی اور ADX سمت فلٹرنگ سسٹم

ATR ADX RMA 突破交易 趋势跟踪 动态止损 回撤止盈 方向过滤 自适应风险管理
تخلیق کی تاریخ: 2025-07-08 13:53:49 آخر میں ترمیم کریں: 2025-07-08 13:53:49
کاپی: 1 کلکس کی تعداد: 284
2
پر توجہ دیں
319
پیروکار

اعلی درستگی والے ATR ٹریلنگ اسٹاپ نقصان کی پیش رفت کی حکمت عملی اور ADX سمت فلٹرنگ سسٹم اعلی درستگی والے ATR ٹریلنگ اسٹاپ نقصان کی پیش رفت کی حکمت عملی اور ADX سمت فلٹرنگ سسٹم

جائزہ

یہ حکمت عملی ایک اچھی طرح سے ڈیزائن کیا گیا بریک ٹریڈنگ سسٹم ہے جس میں اے ٹی آر (اوسط حقیقی طول و عرض) کے مطابق ڈھالنے والے اسٹاپ نقصان کے انتظام اور اے ڈی ایکس (اوسط سمت اشاریہ) کی سمت فلٹرنگ کی خصوصیات شامل ہیں۔ حکمت عملی N سائیکل کے اونچائی / کم کی تصدیق کے بعد تجارت میں داخل ہوتی ہے ، جبکہ طویل مدتی آر ایم اے (رولنگ حرکت پذیر اوسط) کے رجحان فلٹر کا حوالہ دیتے ہوئے اس بات کو یقینی بناتا ہے کہ یہ مرکزی رجحان سے مطابقت رکھتا ہے۔ یہ نظام دو مرحلے میں اسٹاپ نقصان کی منطق کا استعمال کرتا ہے: ابتدائی فکسڈ اے ٹی آر اسٹاپ نقصان اور منافع کی حد تک پہنچنے کے بعد متحرک طور پر اسٹاپ نقصان کا سراغ لگانا ، اور واپسی اسٹاپ میکانیزم کے ذریعہ زیادہ اتار چڑھاؤ کے اوقات میں منافع کو مقفل کرنا۔

حکمت عملی کا اصول

اس حکمت عملی کا بنیادی اصول ایک جامع فیصلے کے نظام پر مبنی ہے جس میں رجحان کی تصدیق اور سمت کی طاقت کو فلٹر کرنے کے ساتھ ساتھ تاریخی حمایت کی مزاحمت کی سطح کو توڑنے کی قیمت ہے:

  1. بریک سگنل کی پیداوارN سائیکل ((پہلے سے طے شدہ 96) اونچائی / نچلی سطح کو توڑنے کے حوالہ کے طور پر استعمال کرتے ہوئے ، ایک کثیر سر سگنل کو متحرک کریں جب قیمت بند ہونے سے پہلے کی اونچائی کو توڑ دے اور اوپر کی طرف رجحان میں ہو۔ جب قیمت بند ہونے سے پہلے کی نچلی سطح کو توڑ دے اور نیچے کی طرف رجحان میں ہو۔

  2. رجحانات کا فلٹر: طویل دورانیے ((ڈیفالٹ 960) کی آر ایم اے اوسط لائن کو رجحانات کی بنیاد کے طور پر استعمال کیا جاتا ہے ، قیمت کو آر ایم اے کے اوپر بڑھتی ہوئی رجحان کے طور پر سمجھا جاتا ہے ، اور قیمت کو آر ایم اے کے نیچے گرتی ہوئی رجحان کے طور پر سمجھا جاتا ہے ، اس بات کو یقینی بنانا کہ تجارت کی سمت مرکزی رجحان کے مطابق ہو۔

  3. ADX سمت طاقت فلٹر: موجودہ مارکیٹ کی دشاتمک طاقت کا حساب لگانے کے ذریعے ((ADX اشارے) ، اور ADX کو طے شدہ حد سے زیادہ (ڈیفالٹ 12) کی ضرورت ہوتی ہے اور عروج کے مرحلے میں ، غیر واضح سمت والے بازار کے ماحول کو فلٹر کریں۔

  4. دو مرحلے کا نقصان روکنے کا طریقہ کار

    • پہلا مرحلہ: داخلے کے بعد اے ٹی آر ضرب ((ڈیفالٹ 1.0) کا استعمال کرتے ہوئے ابتدائی اسٹاپ نقصان کی پوزیشن مرتب کریں
    • دوسرا مرحلہ: جب منافع ATR کے ضرب ((ڈیفالٹ 3.0)) تک پہنچ جاتا ہے تو ، ٹریکنگ اسٹاپ کو چالو کریں ، اور زیادہ سے زیادہ ATR کے ضرب ((ڈیفالٹ 9.0) کا استعمال کرتے ہوئے متحرک اسٹاپ پوزیشن مرتب کریں
  5. روک تھام کا نظام واپس لینا: ٹریکنگ اسٹاپ نقصان کی چالو کرنے کے بعد ، کثیر سر اعلی ترین قیمت / خالی سر کم ترین قیمت کو ریکارڈ کریں ، جب قیمت انتہائی حد سے پیچھے ہٹ کر مقررہ اے ٹی آر ضرب سے تجاوز کر جائے ((کثیر سر ڈیفالٹ 13 گنا ، خالی سر ڈیفالٹ 4 گنا) ، تو اس کی جگہ کو روکنے کے لئے ٹرگر کریں۔

اسٹریٹجک فوائد

  1. خطرے کے انتظام کے لئے خود کو اپنانا: اے ٹی آر اشارے کے ذریعہ اسٹاپ نقصان کی پوزیشن کو متحرک طور پر ایڈجسٹ کریں ، تاکہ حکمت عملی مختلف اتار چڑھاؤ کے ماحول میں خطرے کو مؤثر طریقے سے کنٹرول کرسکے۔ اے ٹی آر ، اتار چڑھاؤ کے اشارے کے طور پر ، مارکیٹ کے اصل اتار چڑھاؤ کے مطابق اسٹاپ نقصان کی فاصلے کو خود بخود ایڈجسٹ کرنے کے قابل ہے ، جس سے مختلف مارکیٹ کے حالات میں فکسڈ پوائنٹ اسٹاپ کی حد سے زیادہ وسیع یا بہت تنگ ہونے کا مسئلہ دور ہوجاتا ہے۔

  2. ملٹی لیول رسک کنٹرولاس حکمت عملی میں ابتدائی اسٹاپ اور ٹریکنگ اسٹاپ کے ساتھ مل کر ایک ڈبل اسٹاپ منطق کا استعمال کیا گیا ہے ، جس سے ابتدائی خطرے کو قابو میں رکھنے کی ضمانت دی جاسکتی ہے ، لیکن منافع میں توسیع کے بعد منافع کو لاک کرنے اور رجحان کو پوری طرح سے ترقی دینے کی اجازت دی جاسکتی ہے۔ یہ اسٹاپ ڈھانچہ خاص طور پر بڑے رجحانات کی صورتحال کو پکڑنے کے لئے موزوں ہے۔

  3. سمت کی تصدیق فلٹر: ADX اشارے کے ذریعے فلٹرنگ ، مارکیٹ کو کافی سمت کی ضرورت ہے اور سمت میں اضافہ ہورہا ہے ((ADX> کمی اور ADX> ADX[1]) ، مؤثر طریقے سے غیر واضح رجحان کے ساتھ تعیناتی کے بازاروں میں بار بار تجارت سے بچنے کے لئے ، جعلی توڑ سے ہونے والے نقصانات کو کم کریں۔

  4. رجحان کی مستقل مزاجی کی ضمانت: رجحان فلٹر کے طور پر طویل مدتی آر ایم اے اوسط کا استعمال ، اس بات کو یقینی بناتا ہے کہ صرف مرکزی رجحان کی سمت میں تجارت کی جائے ، اور اس کے برعکس آپریشن سے گریز کیا جائے ، جس سے تجارت کی کامیابی اور فنڈ کی کارکردگی میں اضافہ ہوتا ہے۔

  5. ذہین روکنے کا طریقہ کارقیمتوں میں بڑے پیمانے پر اتار چڑھاو کے بعد واپسی کی صورت میں منافع کو روکنے کے لئے ، منافع کو زیادہ سے زیادہ واپسی سے بچنے کے لئے ، خاص طور پر اتار چڑھاو کی شرح میں اچانک توسیع کی صورت حال کو پکڑنے کے لئے مناسب ہے۔

  6. بصری نگرانی: حکمت عملی چارٹ پر واضح طور پر داخلہ کی قیمت، مختلف رکاوٹ لائنوں، توڑنے کی سطح اور رجحان پس منظر کے رنگ کی نشاندہی کرتی ہے، جس سے تاجر کو حکمت عملی کے عمل کی حالت اور اہم قیمتوں کی نگرانی کرنے میں مدد ملتی ہے.

اسٹریٹجک رسک

  1. جعلی دراندازی کا خطرہ: ADX فلٹرنگ اور ٹرینڈ کی تصدیق کے استعمال کے باوجود ، مارکیٹ میں جھوٹے بریک ہوسکتے ہیں ، خاص طور پر جب اہم نیوز ریلیز یا لیکویڈیٹی میں اچانک تبدیلی ہو۔ اس کا حل ADX کی حد کو مناسب طریقے سے بڑھانا یا بریک کی تصدیق کی ضروریات میں اضافہ کرنا ہے ، جیسے کہ بریک کے بعد متعدد K لائنوں کو برقرار رکھنا۔

  2. پیرامیٹر کی حساسیت: حکمت عملی کی کارکردگی پیرامیٹرز کی ترتیب کے لئے زیادہ حساس ہے ، خاص طور پر اے ٹی آر سائیکل ، ضرب اور بریک سائیکل کا انتخاب۔ مختلف مارکیٹ کے ماحول میں زیادہ سے زیادہ پیرامیٹرز میں بہت زیادہ فرق ہوسکتا ہے۔ مختلف مارکیٹ کے ماحول میں تاریخی پس منظر کے ذریعے پیرامیٹرز کی استحکام کی توثیق کرنے کی سفارش کی جاتی ہے ، اور موافقت پذیر پیرامیٹر ایڈجسٹمنٹ میکانیزم پر عمل درآمد پر غور کریں۔

  3. اسٹاپ نقصان کی کمی کا سراغ لگانا: شدید قیمتوں میں ردوبدل کے دوران ، ٹریکنگ اسٹاپ نقصانات قیمتوں میں تبدیلیوں کو بروقت طور پر برقرار رکھنے میں ناکام ہوسکتے ہیں ، جس کی وجہ سے حاصل کردہ منافع کا کچھ حصہ واپس آ جاتا ہے۔ اعلی اتار چڑھاؤ والے ماحول میں اے ٹی آر ضرب کو متحرک طور پر ایڈجسٹ کرنے یا مختصر مدت کی متحرک اشارے کے ساتھ مل کر ممکنہ رجحان کی الٹ کو ایڈجسٹ کرنے پر غور کیا جاسکتا ہے۔

  4. طویل مدتی رجحان فلٹرنگ کے پیچھے: طویل مدتی آر ایم اے اوسط لائن کو رجحان فلٹر کے طور پر استعمال کرنے سے رجحان کے موڑ کے قریب کھوئے ہوئے سگنل یا غلط سگنل پیدا ہوسکتے ہیں۔ اس کا حل یہ ہے کہ ایک سے زیادہ مدت کے رجحان کی تصدیق کی جائے یا اس کے ساتھ مل کر زیادہ حساس درمیانی اور قلیل مدتی رجحان اشارے بطور معاون فیصلہ۔

  5. ہٹائیں، ہٹائیں، ہٹائیں۔: ایک مضبوط رجحان میں ، واپسی کی روک تھام کے طریقہ کار سے قبل از وقت باہر نکلنے کا سبب بن سکتا ہے۔ ایک رجحان جو اب بھی جاری رہے گا۔ رجحان کی طاقت کے مطابق متحرک طور پر واپسی کی روک تھام کی قدر کو ایڈجسٹ کرنے پر غور کیا جاسکتا ہے ، یا اتار چڑھاؤ کی شرح میں تبدیلی کے ساتھ مل کر واپسی کے ضرب کو ایڈجسٹ کرنے پر غور کیا جاسکتا ہے۔

اصلاح کی سمت

  1. موافقت پذیر پیرامیٹر سسٹم: مارکیٹ میں اتار چڑھاؤ کی شرح اور رجحان کی طاقت پر مبنی موافقت پذیر پیرامیٹرز کو ایڈجسٹ کرنے کا ایک طریقہ کار تشکیل دیں ، تاکہ اے ٹی آر کی ضرب ، اے ڈی ایکس کی کمی اور واپسی کی ضرب کو موجودہ مارکیٹ کے ماحول کے مطابق خود بخود بہتر بنایا جاسکے۔ مثال کے طور پر ، کم اتار چڑھاؤ والے ماحول میں اے ٹی آر کی ضرب کو کم کریں ، اعلی اتار چڑھاؤ والے ماحول میں اے ٹی آر کی ضرب میں اضافہ کریں۔ مضبوط رجحانات میں واپسی کی ضرب میں اضافہ کریں ، کمزور رجحانات میں واپسی کی ضرب کو کم کریں۔

  2. ملٹی ٹائم فریم تصدیق: ایک سے زیادہ ٹائم فریم تجزیہ متعارف کروانا ، اعلی ٹائم فریموں کی رجحان کی سمت کو تجارت کی سمت کے مطابق بنانا ، اور اعلی ٹائم فریموں کی حمایت کی مزاحمت کی سطح کو فیصلہ سازی کے حوالہ میں شامل کرنا ، جس سے بریک سگنل کی وشوسنییتا میں اضافہ ہوتا ہے۔

  3. سمارٹ داخلے کی اصلاح: سیٹڈ انٹری میکانزم کو لاگو کریں ، ابتدائی توڑ سگنل کے بعد جزوی طور پر داخل ہوں ، توڑ کی مزید تصدیق کے بعد پوزیشن میں اضافہ کریں ، جعلی توڑ کے خطرات کو کم کریں اور اس بات کو یقینی بنائیں کہ حقیقی توڑ کی صورتحال کو نہ چھوڑیں۔

  4. اتار چڑھاؤ کی شرح کا احساس روک: اتار چڑھاؤ کی شرح میں تبدیلی پر مبنی ذہین اسٹاپ سسٹم تیار کریں ، اتار چڑھاؤ کی شرح میں اچانک توسیع کے بعد اسٹاپ کو واپس لینے کے لئے سخت شرائط طے کریں ، اتار چڑھاؤ کی شرح مستحکم ہونے پر قیمتوں میں زیادہ سے زیادہ ریگولیشن کی گنجائش دیں ، تاکہ اسٹاپ کے فیصلے مارکیٹ کی اصل حالت کے مطابق ہوں۔

  5. مشین سیکھنے میں اضافہ: مشین لرننگ الگورتھم متعارف کرانے کے لئے تاریخی بریک پیٹرن کا تجزیہ کرنے کے لئے، اعلی کامیابی کی شرح کے ساتھ بریک کی خصوصیات کے مجموعے کی شناخت، اور اس کے مطابق حکمت عملی پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں یا ایک بریک معیار کی درجہ بندی کے نظام کو ترتیب دیں، اعلی معیار کے بریک سگنل ٹریڈنگ کو ترجیح دیں.

  6. ٹرانزیکشن لاگت کی اصلاح: مختلف قسم کے لین دین کی لیکویڈیٹی کی خصوصیات اور لین دین کی لاگت کے ڈھانچے کے ل entry ، داخلے کے اوقات اور آرڈر کی اقسام کو بہتر بنائیں ، جیسے کم لیکویڈیٹی والے ماحول میں مارکیٹ کی قیمت کے بجائے محدود قیمت کا آرڈر ، یا اعلی اتار چڑھاؤ والے ماحول میں ٹریلنگ لمیٹ آرڈر کے ذریعہ داخلے۔

  7. جذباتی انڈیکس انضمام: مارکیٹ کے جذبات کے اشارے (جیسے اتار چڑھاؤ کی شرح انڈیکس ، مارکیٹ کی وسعت کے اشارے وغیرہ) کے ساتھ مل کر معاون فیصلہ سازی کے حوالہ کے طور پر ، انتہائی جذباتی ماحول میں حکمت عملی کے پیرامیٹرز کو ایڈجسٹ کریں یا غیر منطقی مارکیٹ کے ماحول میں غیر ضروری نقصان سے بچنے کے لئے تجارت کو روک دیں۔

خلاصہ کریں۔

اعلی صحت سے متعلق اے ٹی آر ٹریکنگ اسٹاپ بریک حکمت عملی اور اے ڈی ایکس سمت فلٹرنگ سسٹم ایک جامع تجارتی نظام ہے جو تکنیکی تجزیہ کے متعدد بنیادی نظریات کو جوڑتا ہے۔ یہ رجحان کے نقطہ آغاز کو توڑنے والے تجارت کے ذریعے پکڑتا ہے ، رجحان کے فلٹرنگ اور سمت کی طاقت کی تصدیق کے ذریعہ سگنل کے معیار کو بہتر بناتا ہے ، اور خود بخود رسک مینجمنٹ اور کثیر سطحی اسٹاپ بریک میکانزم کے ذریعہ مکمل فنڈ مینجمنٹ کو حاصل کرتا ہے۔

اس حکمت عملی کا سب سے بڑا فائدہ مختلف مارکیٹ کے حالات کے مطابق اس کی موافقت اور اس کے بہترین خطرے کے انتظام کے فریم ورک میں ہے۔ اے ٹی آر اشارے کے ذریعہ حاصل کردہ متحرک خطرے کی ایڈجسٹمنٹ حکمت عملی کو مختلف اتار چڑھاؤ کے ماحول میں خطرے کی نمائش کی نسبتا consistent سطح کو برقرار رکھنے کے قابل بناتی ہے ، جبکہ دو مرحلے میں نقصانات کو روکنے اور روکنے کے طریقہ کار کو روکنے کے لئے ایک متوازن حل فراہم کرتا ہے۔

اگرچہ اسٹریٹجی میں پیرامیٹرز کی حساسیت اور اسٹاپ نقصانات جیسے کچھ خطرات موجود ہیں ، لیکن ان خطرات کو موثر انداز میں قابو میں رکھا جاسکتا ہے ، خاص طور پر تجویز کردہ اصلاح کی سمت ، خاص طور پر موافقت پذیر پیرامیٹر سسٹم اور ملٹی ٹائم فریم کی تصدیق۔ مزید مشین لرننگ اور جذباتی اشارے کے تجزیے کو متعارف کرانے سے اسٹریٹجی کی استحکام اور طویل مدتی منافع کی صلاحیت میں نمایاں اضافہ ہونے کی امید ہے۔

یہ حکمت عملی ایک ٹھوس فریم ورک فراہم کرتی ہے جس میں انفرادی خطرے کی ترجیحات اور مارکیٹ کے نقطہ نظر کے مطابق لچکدار ایڈجسٹمنٹ اور توسیع کی جاسکتی ہے۔ یہ ایک تجارتی نظام ہے جس میں نظریاتی گہرائی اور عملی قدر دونوں ہیں۔

حکمت عملی کا ماخذ کوڈ
/*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)