ملٹی انڈیکیٹر ٹرینڈ لائن کراس اوور ڈائنامک اسٹاپ نقصان مقداری تجارتی حکمت عملی

RSI MACD 线性回归 趋势线 支撑阻力 成交量 ATR 动态止损 市场结构
تخلیق کی تاریخ: 2025-06-23 11:25:43 آخر میں ترمیم کریں: 2025-06-23 11:25:43
کاپی: 3 کلکس کی تعداد: 239
2
پر توجہ دیں
319
پیروکار

ملٹی انڈیکیٹر ٹرینڈ لائن کراس اوور ڈائنامک اسٹاپ نقصان مقداری تجارتی حکمت عملی ملٹی انڈیکیٹر ٹرینڈ لائن کراس اوور ڈائنامک اسٹاپ نقصان مقداری تجارتی حکمت عملی

جائزہ

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

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

یہ حکمت عملی مندرجہ ذیل بنیادی اصولوں پر مبنی ہے:

  1. متحرک رجحان لائن کی شناخت: لکیری رجعت (Linear Regression) تکنیک کا استعمال کرتے ہوئے معاونت اور مزاحمت کی رجحان لائنوں کی تعمیر کریں ، قیمتوں اور رجحان لائنوں کے مابین تعلقات کا تجزیہ کرکے ممکنہ اچھال اور ردوبدل کی شناخت کریں۔

  2. کثیر اشارے کی شناخت

    • RSI (Relative Strength to Weakness Index) اوور بیو اور اوور سیل کی نشاندہی کرنے کے لئے استعمال کیا جاتا ہے
    • MACD رفتار کی سمت کا تعین کرنے کے لئے استعمال کیا جاتا ہے
    • مارکیٹ میں شرکت کی تصدیق کے لئے حجم کی توڑ
    • مجموعی رجحانات کی تصدیق کے لئے مارکیٹ کی ساخت کا تجزیہ (زیادہ اونچائی / کم اونچائی)
  3. ٹرانزیکشن نظام کو توڑناجب قیمت کے ساتھ ساتھ ٹرانزیکشن کی مقدار مزاحمت یا معاونت کو توڑ دیتی ہے تو ، ایک بریک ٹریڈنگ سگنل کو متحرک کریں۔

  4. خطرے کے انتظام کے نظام

    • اکاؤنٹس کا استعمال کرتے ہوئے خطرے کا فیصد طریقہ پوزیشن کا سائز طے کرتا ہے
    • اے ٹی آر ضارب کے ساتھ متحرک اسٹاپ نقصان کی ترتیب
    • مرحلہ وار منافع کی حکمت عملی پر عمل درآمد ، مختلف قیمتوں کے اہداف پر بیچوں میں صفائی
  5. ٹرانزیکشن پر عملدرآمد کی منطق

    • کثیر سر داخلہ: قیمتوں میں معاونت کی سطح پر واپسی + آر ایس آئی اوور سیل + ایم اے سی ڈی کالم چارٹ میں اضافہ + حجم کی خرابی + مارکیٹ کی ساخت پر نظر
    • خالی سر داخلہ: قیمتوں میں مزاحمت کی سطح سے انکار + RSI اوور بیئر + MACD کالم گراف میں کمی + حجم کی خرابی + نیچے کی مارکیٹ کی ساخت
    • بریک انٹری: قیمتوں میں اہم رجحان کی لائنوں سے تجاوز + حجم کی تصدیق

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

  1. مکمل مارکیٹ تجزیہ: متعدد تکنیکی تجزیاتی طریقوں کو جوڑتا ہے ، بشمول رجحان لائن ، جھٹکا اشارے ، حرکیات اشارے اور حجم تجزیہ ، تاکہ مارکیٹ کا ایک جامع نقطہ نظر فراہم کیا جاسکے ، اور جھوٹے اشاروں کو کم کیا جاسکے۔

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

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

  4. اچھی طرح سے خطرے کا انتظام

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

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

اسٹریٹجک رسک

  1. پیرامیٹر کی حساسیتحکمت عملی متعدد پیرامیٹرز کی ترتیبات پر انحصار کرتی ہے ، بشمول رجحان لائن کی لمبائی ، آر ایس آئی thresholds اور MACD پیرامیٹرز وغیرہ۔ غلط پیرامیٹرز کی ترتیبات سے زیادہ تجارت یا کھوئے ہوئے مواقع پیدا ہوسکتے ہیں۔ اس کا حل پیرامیٹرز کو بہتر بنانے کے لئے بیک اپ کرکے اور مختلف مارکیٹ کے حالات کے لئے مختلف پیرامیٹرز کی تشکیل کرنا ہے۔

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

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

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

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

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

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

  2. مارکیٹ کے ماحول کی درجہ بندی: مارکیٹ کے ماحول کی شناخت کے نظام کو نافذ کریں ، مارکیٹ کو تین رجحان ، وقفے اور تبدیلی کی حالت میں تقسیم کریں ، اور ہر حالت کے ل different مختلف تجارتی قواعد استعمال کریں۔ اس طرح غیر مناسب مارکیٹ کے ماحول میں ضرورت سے زیادہ تجارت سے بچا جاسکتا ہے۔

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

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

  5. خطرے کے انتظام میں اضافہ

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

خلاصہ کریں۔

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

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

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-06-23 00:00:00
end: 2024-09-09 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Advanced Crypto Trend Line Strategy", overlay=true, margin_long=100, margin_short=100)

// ================================
// INPUT PARAMETERS
// ================================

// Crypto Selection
crypto_type = input.string("BTC", "Cryptocurrency", options=["BTC", "SOL", "AUTO"])

// Trend Line Parameters
trendline_length = input.int(20, "Trend Line Calculation Length", minval=10, maxval=50)
min_touches = input.int(2, "Minimum Trend Line Touches", minval=2, maxval=5)
breakout_threshold = input.float(0.5, "Breakout Threshold %", minval=0.1, maxval=2.0) / 100

// Risk Management
risk_percent = input.float(2.0, "Risk Per Trade %", minval=0.5, maxval=5.0) / 100
tp1_ratio = input.float(2.0, "Take Profit 1 Ratio", minval=1.0, maxval=5.0)
tp2_ratio = input.float(3.0, "Take Profit 2 Ratio", minval=2.0, maxval=6.0)
max_leverage = crypto_type == "BTC" ? 5 : crypto_type == "SOL" ? 10 : 7

// Technical Indicators
rsi_length = input.int(14, "RSI Length", minval=5, maxval=30)
rsi_oversold = input.int(35, "RSI Oversold Level", minval=20, maxval=40)
rsi_overbought = input.int(70, "RSI Overbought Level", minval=60, maxval=80)

macd_fast = input.int(12, "MACD Fast Length", minval=5, maxval=20)
macd_slow = input.int(26, "MACD Slow Length", minval=20, maxval=40)
macd_signal = input.int(9, "MACD Signal Length", minval=5, maxval=15)

volume_multiplier = input.float(1.5, "Volume Spike Multiplier", minval=1.1, maxval=3.0)

// ATR for Dynamic Stops
atr_length = input.int(14, "ATR Length for Stops", minval=5, maxval=30)
atr_multiplier = input.float(2.0, "ATR Stop Multiplier", minval=1.0, maxval=4.0)

// ================================
// TECHNICAL INDICATORS
// ================================

// RSI
rsi = ta.rsi(close, rsi_length)

// MACD
[macd_line, signal_line, macd_histogram] = ta.macd(close, macd_fast, macd_slow, macd_signal)

// Volume
volume_avg = ta.sma(volume, 20)
volume_spike = volume > volume_avg * volume_multiplier

// ATR for dynamic stops
atr = ta.atr(atr_length)

// ================================
// TREND LINE CALCULATION
// ================================

// Function to calculate trend line slope and intercept
get_trend_line(src, len, min_touch) =>
    var float slope = na
    var float intercept = na
    var int touches = 0
    var array<float> highs = array.new<float>()
    var array<float> lows = array.new<float>()
    var array<int> high_bars = array.new<int>()
    var array<int> low_bars = array.new<int>()
    
    // Find pivots
    ph = ta.pivothigh(high, 5, 5)
    pl = ta.pivotlow(low, 5, 5)
    
    // Store pivot points
    if not na(ph)
        array.push(highs, ph)
        array.push(high_bars, bar_index - 5)
        if array.size(highs) > len
            array.shift(highs)
            array.shift(high_bars)
    
    if not na(pl)
        array.push(lows, pl)
        array.push(low_bars, bar_index - 5)
        if array.size(lows) > len
            array.shift(lows)
            array.shift(low_bars)
    
    [slope, intercept, touches]

// Calculate trend lines
[up_slope, up_intercept, up_touches] = get_trend_line(low, trendline_length, min_touches)
[down_slope, down_intercept, down_touches] = get_trend_line(high, trendline_length, min_touches)

// ================================
// TREND LINE VALUES
// ================================

// Simplified trend line calculation using linear regression
uptrend_line = ta.linreg(low, trendline_length, 0)
downtrend_line = ta.linreg(high, trendline_length, 0)

// Dynamic trend line based on recent pivots
recent_low = ta.lowest(low, 10)
recent_high = ta.highest(high, 10)

// Support and Resistance levels
support_level = uptrend_line
resistance_level = downtrend_line

// ================================
// MARKET STRUCTURE
// ================================

// Higher lows and lower highs detection
higher_low = low > ta.lowest(low[1], 5) and low[1] > ta.lowest(low[2], 5)
lower_high = high < ta.highest(high[1], 5) and high[1] < ta.highest(high[2], 5)

// Overall trend determination
uptrend = close > ta.sma(close, 50) and ta.sma(close, 20) > ta.sma(close, 50)
downtrend = close < ta.sma(close, 50) and ta.sma(close, 20) < ta.sma(close, 50)

// ================================
// ENTRY CONDITIONS
// ================================

// Long entry conditions
long_trend_bounce = close > support_level and low <= support_level * 1.01
long_rsi = rsi < rsi_oversold or (rsi > rsi_oversold and rsi[1] < rsi_oversold)
long_macd = macd_histogram > macd_histogram[1]
long_volume = volume_spike
long_structure = higher_low or uptrend

long_condition = long_trend_bounce and long_rsi and long_macd and long_volume and long_structure

// Short entry conditions
short_trend_reject = close < resistance_level and high >= resistance_level * 0.99
short_rsi = rsi > rsi_overbought or (rsi < rsi_overbought and rsi[1] > rsi_overbought)
short_macd = macd_histogram < macd_histogram[1]
short_volume = volume_spike
short_structure = lower_high or downtrend

short_condition = short_trend_reject and short_rsi and short_macd and short_volume and short_structure

// ================================
// BREAKOUT CONDITIONS
// ================================

// Uptrend breakout (bearish)
uptrend_break = close < support_level * (1 - breakout_threshold) and volume_spike
// Downtrend breakout (bullish)
downtrend_break = close > resistance_level * (1 + breakout_threshold) and volume_spike

// ================================
// POSITION SIZING
// ================================

// Calculate position size based on risk
account_size = strategy.equity
risk_amount = account_size * risk_percent

// ================================
// STRATEGY EXECUTION
// ================================

// Long entries
if long_condition and strategy.position_size == 0
    stop_loss = support_level - (atr * atr_multiplier)
    take_profit_1 = close + (close - stop_loss) * tp1_ratio
    take_profit_2 = close + (close - stop_loss) * tp2_ratio
    
    // Position sizing
    risk_per_share = close - stop_loss
    position_size = risk_amount / risk_per_share
    position_size := math.min(position_size, account_size * max_leverage / close)
    
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Long TP1", "Long", limit=take_profit_1, stop=stop_loss, qty=position_size * 0.5)
    strategy.exit("Long TP2", "Long", limit=take_profit_2, stop=stop_loss, qty=position_size * 0.5)

// Short entries
if short_condition and strategy.position_size == 0
    stop_loss = resistance_level + (atr * atr_multiplier)
    take_profit_1 = close - (stop_loss - close) * tp1_ratio
    take_profit_2 = close - (stop_loss - close) * tp2_ratio
    
    // Position sizing
    risk_per_share = stop_loss - close
    position_size = risk_amount / risk_per_share
    position_size := math.min(position_size, account_size * max_leverage / close)
    
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Short TP1", "Short", limit=take_profit_1, stop=stop_loss, qty=position_size * 0.5)
    strategy.exit("Short TP2", "Short", limit=take_profit_2, stop=stop_loss, qty=position_size * 0.5)

// Breakout entries
if downtrend_break and strategy.position_size == 0
    stop_loss = resistance_level - (atr * atr_multiplier)
    take_profit = close + (close - stop_loss) * 2.0
    
    risk_per_share = close - stop_loss
    position_size = risk_amount / risk_per_share
    position_size := math.min(position_size, account_size * max_leverage / close)
    
    strategy.entry("Breakout Long", strategy.long, qty=position_size)
    strategy.exit("Breakout Long Exit", "Breakout Long", limit=take_profit, stop=stop_loss)

if uptrend_break and strategy.position_size == 0
    stop_loss = support_level + (atr * atr_multiplier)
    take_profit = close - (stop_loss - close) * 2.0
    
    risk_per_share = stop_loss - close
    position_size = risk_amount / risk_per_share
    position_size := math.min(position_size, account_size * max_leverage / close)
    
    strategy.entry("Breakout Short", strategy.short, qty=position_size)
    strategy.exit("Breakout Short Exit", "Breakout Short", limit=take_profit, stop=stop_loss)

// ================================
// VISUALIZATION
// ================================

// Plot trend lines
plot(support_level, "Support Trend Line", color=color.green, linewidth=2)
plot(resistance_level, "Resistance Trend Line", color=color.red, linewidth=2)

// Plot entry signals
plotshape(long_condition, "Long Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(short_condition, "Short Signal", shape.triangledown, location.abovebar, color.red, size=size.small)

// Plot breakout signals
plotshape(downtrend_break, "Bullish Breakout", shape.diamond, location.belowbar, color.blue, size=size.small)
plotshape(uptrend_break, "Bearish Breakout", shape.diamond, location.abovebar, color.orange, size=size.small)

// Background color for trend
bgcolor(uptrend ? color.new(color.green, 95) : downtrend ? color.new(color.red, 95) : na)

// ================================
// ALERTS
// ================================

// Entry alerts
alertcondition(long_condition, "Long Entry", "Long entry signal detected")
alertcondition(short_condition, "Short Entry", "Short entry signal detected")
alertcondition(downtrend_break, "Bullish Breakout", "Bullish breakout detected")
alertcondition(uptrend_break, "Bearish Breakout", "Bearish breakout detected")

// ================================
// TABLE FOR INFORMATION
// ================================

// Create info table
var table info_table = table.new(position.top_right, 2, 8, bgcolor=color.white, border_width=1)

if barstate.islast
    table.cell(info_table, 0, 0, "Metric", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 1, 0, "Value", text_color=color.black, bgcolor=color.gray)
    table.cell(info_table, 0, 1, "RSI", text_color=color.black)
    table.cell(info_table, 1, 1, str.tostring(math.round(rsi, 2)), text_color=color.black)
    table.cell(info_table, 0, 2, "MACD", text_color=color.black)
    table.cell(info_table, 1, 2, str.tostring(math.round(macd_line, 4)), text_color=color.black)
    table.cell(info_table, 0, 3, "Volume Spike", text_color=color.black)
    table.cell(info_table, 1, 3, volume_spike ? "YES" : "NO", text_color=color.black)
    table.cell(info_table, 0, 4, "Trend", text_color=color.black)
    table.cell(info_table, 1, 4, uptrend ? "UP" : downtrend ? "DOWN" : "SIDEWAYS", text_color=color.black)
    table.cell(info_table, 0, 5, "Support", text_color=color.black)
    table.cell(info_table, 1, 5, str.tostring(math.round(support_level, 2)), text_color=color.black)
    table.cell(info_table, 0, 6, "Resistance", text_color=color.black)
    table.cell(info_table, 1, 6, str.tostring(math.round(resistance_level, 2)), text_color=color.black)
    table.cell(info_table, 0, 7, "ATR", text_color=color.black)
    table.cell(info_table, 1, 7, str.tostring(math.round(atr, 2)), text_color=color.black)