کثیر سطحی شماریاتی رجعت تجارتی حکمت عملی

趋势指标 线性回归 统计验证 集成学习 风险管理 信号置信度 权重优化 多时间框架 验证检验
تخلیق کی تاریخ: 2025-07-31 11:08:19 آخر میں ترمیم کریں: 2025-08-21 14:12:56
کاپی: 0 کلکس کی تعداد: 231
2
پر توجہ دیں
319
پیروکار

کثیر سطحی شماریاتی رجعت تجارتی حکمت عملی کثیر سطحی شماریاتی رجعت تجارتی حکمت عملی

جائزہ

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

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

اس حکمت عملی کا بنیادی اصول کثیر سطحی شماریاتی لکیری رجعت تجزیہ پر مبنی ہے ، جس میں بنیادی طور پر درج ذیل اہم اجزاء شامل ہیں:

  1. کثیر پرت رجعت انجنحکمت عملی: تین مرضی کے مطابق ٹائم فریموں ((قلیل / درمیانی / طویل) پر ایک ساتھ لکیری رجعت کا تجزیہ کریں ، 20/50/100 ادوار بطور ڈیفالٹ۔ ہر ٹائم فریم کے لئے اسکیلپنگ ، آر اسکوائر ویلیو ، اور متعلقہ فیکٹر جیسے اعدادوشمار کے اشارے کا حساب کتاب کرکے مستقبل کی قیمتوں کی پیش گوئی کریں۔ رجعت تجزیہ کے نتائج کو صرف اس صورت میں اعدادوشمار کے لحاظ سے اہم سمجھا جاتا ہے جب R اسکوائر ویلیو ، متعلقہ فیکٹر اور اسکیلپنگ کے مطلق اقدار متوقع حد سے زیادہ ہوں۔

  2. سگنل کی توثیق کا نظام: حکمت عملی نے پچھلی توثیق کا ایک طریقہ کار ڈیزائن کیا ہے جس میں تاریخی پیش گوئی کی قیمتوں کے ساتھ حقیقی قیمتوں کی نقل و حرکت کا موازنہ کرکے پیش گوئی کی درستگی کا اندازہ لگایا جاتا ہے۔ تین ٹائم فریموں کے سگنل کو مربوط کرنے کے لئے وزنی انٹیگریشن کا استعمال کرتے ہوئے ، مختصر ، درمیانے اور طویل مدتی سگنل کو مختلف وزن دیا گیا ہے۔ (ڈیفالٹ 0.4 / 0.35 / 0.25) ۔ جامع اعتماد کا اسکور شماریاتی طاقت ، پرتوں کے مابین مطابقت اور توثیق کی درستگی کو یکجا کرتا ہے۔

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

سگنل جنریٹنگ منطق کے لئے لازمی ہے کہ انٹیگریٹڈ اسکور کی مطلق قیمت 0.5 سے زیادہ ہو ، اور مجموعی اعتماد پہلے سے طے شدہ حد سے زیادہ ہو (ڈیفالٹ 0.75) ، قلیل مدتی اور درمیانی مدت میں واپسی لازمی طور پر اعدادوشمار کے لحاظ سے نمایاں ہو ، اور روزانہ نقصان کی حد کو متحرک نہیں کیا گیا ہو۔ جب اس کے برعکس اعلی اعتماد کا اشارہ ہوتا ہے یا روزانہ نقصان کی حد کو متحرک کرتا ہے تو حکمت عملی پر عمل درآمد ہوتا ہے۔

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

کوڈ کو گہرائی سے تجزیہ کرنے کے بعد ، اس حکمت عملی کے درج ذیل نمایاں فوائد ہیں:

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

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

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

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

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

  6. بصری فیصلہ سازی کی حمایتحکمت عملی: ریئل ٹائم ریگریشن لائن چارٹ ((تین مختلف رنگوں میں) ، قلیل مدتی پیش گوئی کے نشانات ، مارکیٹ میں رجحان پس منظر کے رنگ کے نشانات ، اور ایک جامع شماریاتی اعداد و شمار کا پینل ((آر اسکوائر اشارے ، توثیقی اسکور ، منافع کی صورتحال) ، جو تجارتی فیصلوں میں بصری مدد فراہم کرتا ہے۔

اسٹریٹجک رسک

اس حکمت عملی کے عمدہ ڈیزائن کے باوجود ، مندرجہ ذیل ممکنہ خطرات موجود ہیں:

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

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

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

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

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

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

کوڈ تجزیہ کی بنیاد پر ، اس حکمت عملی کو مندرجہ ذیل سمتوں میں بہتر بنایا جاسکتا ہے۔

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

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

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

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

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

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

خلاصہ کریں۔

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

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

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-07-31 00:00:00
end: 2025-07-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Multi-Layer Statistical Regression Strategy - Optimized", overlay=true)

// === MULTI-LAYER REGRESSION INPUTS ===
// Linear Regression Layers
lr_short_length = input.int(20, "Short-Term LR Length", minval=10, maxval=50, step=2)
lr_medium_length = input.int(50, "Medium-Term LR Length", minval=30, maxval=100, step=5)
lr_long_length = input.int(100, "Long-Term LR Length", minval=50, maxval=200, step=10)

// === 优化后的统计验证参数 (降低严格程度) ===
min_r_squared = input.float(0.45, "Min R-Squared Threshold", minval=0.2, maxval=0.8, step=0.05)
slope_threshold = input.float(0.00005, "Min Slope Significance", minval=0.00001, maxval=0.001, step=0.00001)
correlation_min = input.float(0.5, "Min Correlation", minval=0.3, maxval=0.8, step=0.05)

// Lookback/Look-Forward Analysis
validation_lookback = input.int(30, "Validation Lookback", minval=10, maxval=60, step=5)
prediction_horizon = input.int(10, "Prediction Horizon", minval=5, maxval=20, step=1)

// Ensemble Weights
weight_short = input.float(0.4, "Short-Term Weight", minval=0.1, maxval=0.6, step=0.1)
weight_medium = input.float(0.35, "Medium-Term Weight", minval=0.1, maxval=0.6, step=0.05)
weight_long = input.float(0.25, "Long-Term Weight", minval=0.1, maxval=0.6, step=0.05)

// === 优化后的风险管理参数 ===
position_size_pct = input.float(50.0, "Position Size %", minval=10.0, maxval=100.0, step=5.0)
max_daily_loss = input.float(12.0, "Max Daily Loss %", minval=5.0, maxval=25.0, step=2.5)
confidence_threshold = input.float(0.55, "Signal Confidence Threshold", minval=0.4, maxval=0.8, step=0.05)

// === 新增:信号强度分级 ===
use_graded_signals = input.bool(true, "Use Graded Signal Strength")
strong_signal_threshold = input.float(0.7, "Strong Signal Threshold", minval=0.6, maxval=0.9, step=0.05)

// === STATISTICAL FUNCTIONS ===
// Calculate Linear Regression with full statistics
linear_regression_stats(src, length) =>
    var float sum_x = 0
    var float sum_y = 0
    var float sum_xy = 0
    var float sum_x2 = 0
    var float sum_y2 = 0
    
    // Reset sums
    sum_x := 0
    sum_y := 0
    sum_xy := 0
    sum_x2 := 0
    sum_y2 := 0
    
    // Calculate sums for regression
    for i = 0 to length - 1
        x = i + 1
        y = src[i]
        if not na(y)
            sum_x := sum_x + x
            sum_y := sum_y + y
            sum_xy := sum_xy + x * y
            sum_x2 := sum_x2 + x * x
            sum_y2 := sum_y2 + y * y
    
    n = length
    
    // Calculate regression coefficients
    denominator = n * sum_x2 - sum_x * sum_x
    slope = denominator != 0 ? (n * sum_xy - sum_x * sum_y) / denominator : 0
    intercept = (sum_y - slope * sum_x) / n
    
    // Calculate correlation coefficient (R)
    correlation = (n * sum_xy - sum_x * sum_y) / 
                  math.sqrt((n * sum_x2 - sum_x * sum_x) * (n * sum_y2 - sum_y * sum_y))
    
    // Calculate R-squared
    r_squared = correlation * correlation
    
    // Current regression value
    current_lr = intercept + slope * n
    
    // Projected value (look-forward)
    projected_lr = intercept + slope * (n + prediction_horizon)
    
    [current_lr, slope, r_squared, correlation, projected_lr]

// === 优化后的统计显著性测试 (更灵活) ===
is_statistically_significant(r_squared, correlation, slope_abs, grade = "normal") =>
    if grade == "relaxed"
        r_squared >= (min_r_squared * 0.8) and math.abs(correlation) >= (correlation_min * 0.8) and math.abs(slope_abs) >= (slope_threshold * 0.5)
    else if grade == "strict"
        r_squared >= (min_r_squared * 1.2) and math.abs(correlation) >= (correlation_min * 1.1) and math.abs(slope_abs) >= (slope_threshold * 1.5)
    else
        r_squared >= min_r_squared and math.abs(correlation) >= correlation_min and math.abs(slope_abs) >= slope_threshold

// === MULTI-LAYER REGRESSION ANALYSIS ===
// Short-term layer
[lr_short, slope_short, r2_short, corr_short, proj_short] = linear_regression_stats(close, lr_short_length)
sig_short = is_statistically_significant(r2_short, corr_short, slope_short, "normal")
sig_short_strong = is_statistically_significant(r2_short, corr_short, slope_short, "strict")

// Medium-term layer  
[lr_medium, slope_medium, r2_medium, corr_medium, proj_medium] = linear_regression_stats(close, lr_medium_length)
sig_medium = is_statistically_significant(r2_medium, corr_medium, slope_medium, "relaxed")
sig_medium_strong = is_statistically_significant(r2_medium, corr_medium, slope_medium, "normal")

// Long-term layer
[lr_long, slope_long, r2_long, corr_long, proj_long] = linear_regression_stats(close, lr_long_length)
sig_long = is_statistically_significant(r2_long, corr_long, slope_long, "relaxed")

// === LOOKBACK VALIDATION ===
validate_prediction_accuracy() =>
    var array<float> accuracy_scores = array.new<float>()
    
    if bar_index >= validation_lookback
        historical_slope = (close - close[prediction_horizon]) / prediction_horizon
        predicted_slope = slope_short[prediction_horizon]
        
        error = math.abs(historical_slope - predicted_slope)
        accuracy = math.max(0, 1 - error * 10000)
        
        array.push(accuracy_scores, accuracy)
        if array.size(accuracy_scores) > validation_lookback
            array.shift(accuracy_scores)
    
    array.size(accuracy_scores) > 5 ? array.avg(accuracy_scores) : 0.5

validation_accuracy = validate_prediction_accuracy()

// === 优化后的集成信号生成 ===
// Individual layer signals (directional)
signal_short = sig_short ? (slope_short > 0 ? 1 : -1) : 0
signal_medium = sig_medium ? (slope_medium > 0 ? 1 : -1) : 0  
signal_long = sig_long ? (slope_long > 0 ? 1 : -1) : 0

// Weighted ensemble score
ensemble_score = (signal_short * weight_short + 
                  signal_medium * weight_medium + 
                  signal_long * weight_long)

// === 多级信号置信度计算 ===
// 基础一致性评分
agreement_score = math.abs(signal_short + signal_medium + signal_long) / 3.0

// 统计置信度 (使用加权平均)
stat_confidence = (r2_short * weight_short + 
                   r2_medium * weight_medium + 
                   r2_long * weight_long)

// 验证置信度
validation_confidence = validation_accuracy

// 整体置信度 (调整权重比例)
overall_confidence = (agreement_score * 0.3 + 
                     stat_confidence * 0.5 + 
                     validation_confidence * 0.2)

// 信号强度分级
signal_strength = math.abs(ensemble_score)
is_strong_signal = overall_confidence > strong_signal_threshold and (sig_short_strong or sig_medium_strong)

// === POSITION MANAGEMENT ===
trend_direction = ensemble_score > 0 ? 1 : ensemble_score < 0 ? -1 : 0

// 基于信号强度的仓位调整
confidence_multiplier = if use_graded_signals
    if is_strong_signal
        1.0 + (overall_confidence - strong_signal_threshold) * 0.5
    else
        0.7 + (overall_confidence / strong_signal_threshold) * 0.3
else
    overall_confidence > confidence_threshold ? 1.0 : overall_confidence / confidence_threshold

base_position_value = strategy.equity * (position_size_pct / 100)
adjusted_position_value = base_position_value * confidence_multiplier
position_units = adjusted_position_value / close

// Daily loss tracking
var float daily_start_equity = strategy.equity 
if ta.change(time("1D"))
    daily_start_equity := strategy.equity

current_daily_loss = daily_start_equity > 0 ? (daily_start_equity - strategy.equity) / daily_start_equity * 100 : 0
halt_trading = current_daily_loss > max_daily_loss

// === 优化后的入场/退出逻辑 ===
// 更灵活的入场条件
long_condition_basic = ensemble_score > 0.2 and overall_confidence > confidence_threshold and sig_short
long_condition_strong = ensemble_score > 0.4 and overall_confidence > strong_signal_threshold and sig_short and sig_medium

short_condition_basic = ensemble_score < -0.2 and overall_confidence > confidence_threshold and sig_short  
short_condition_strong = ensemble_score < -0.4 and overall_confidence > strong_signal_threshold and sig_short and sig_medium

// 入场信号生成
long_signal = use_graded_signals ? (long_condition_strong or long_condition_basic) : long_condition_strong
short_signal = use_graded_signals ? (short_condition_strong or short_condition_basic) : short_condition_strong

// 策略执行
if long_signal and not halt_trading and strategy.position_size <= 0
    signal_type = long_condition_strong ? "Strong Long" : "Basic Long"
    strategy.entry("Long", strategy.long, qty=position_units, 
                   comment=signal_type + ": " + str.tostring(overall_confidence, "#.##"))

if short_signal and not halt_trading and strategy.position_size >= 0
    signal_type = short_condition_strong ? "Strong Short" : "Basic Short"
    strategy.entry("Short", strategy.short, qty=position_units,
                   comment=signal_type + ": " + str.tostring(overall_confidence, "#.##"))

// 降低初始化门槛
if strategy.position_size == 0 and not halt_trading and barstate.isconfirmed
    if ensemble_score > 0.15 and overall_confidence > (confidence_threshold * 0.8)
        strategy.entry("InitLong", strategy.long, qty=position_units * 0.8, comment="Init Long")
    else if ensemble_score < -0.15 and overall_confidence > (confidence_threshold * 0.8)
        strategy.entry("InitShort", strategy.short, qty=position_units * 0.8, comment="Init Short")

// Emergency exit
if halt_trading and strategy.position_size != 0
    strategy.close_all(comment="Daily Loss Limit")

// === 增强的可视化 ===
// Plot regression lines with transparency based on significance
plot(lr_short, "Short-Term LR", color=sig_short_strong ? color.blue : color.new(color.blue, 50), linewidth=2)
plot(lr_medium, "Medium-Term LR", color=sig_medium_strong ? color.orange : color.new(color.orange, 50), linewidth=2)
plot(lr_long, "Long-Term LR", color=color.new(color.purple, 30), linewidth=1)

// Background with graded confidence
bg_color = if overall_confidence > strong_signal_threshold
    ensemble_score > 0 ? color.new(color.green, 85) : color.new(color.red, 85)
else if overall_confidence > confidence_threshold
    ensemble_score > 0 ? color.new(color.green, 92) : color.new(color.red, 92)
else
    color.new(color.gray, 97)

bgcolor(bg_color)

// Enhanced signal markers
plotshape(long_condition_strong, "Strong Long", shape.triangleup, location.belowbar, 
          color=color.green, size=size.large)
plotshape(long_condition_basic and not long_condition_strong, "Basic Long", shape.triangleup, location.belowbar, 
          color=color.new(color.green, 40), size=size.small)

plotshape(short_condition_strong, "Strong Short", shape.triangledown, location.abovebar, 
          color=color.red, size=size.large)
plotshape(short_condition_basic and not short_condition_strong, "Basic Short", shape.triangledown, location.abovebar, 
          color=color.new(color.red, 40), size=size.small)