
یہ حکمت عملی ایک جامع تکنیکی تجزیہ ٹریڈنگ سسٹم ہے جس میں متعدد اشارے کو مربوط کرکے اعلی امکانات والے بینڈ ٹریڈنگ مواقع کی نشاندہی کی جاتی ہے۔ یہ نظام بنیادی طور پر رجحان کی طاقت کی تصدیق کے لئے رجحان کی سمت کے فلٹر کے طور پر سپر ٹرینڈ اشارے پر مبنی ہے ، ADX ((اوسط سمت اشارے) کے ساتھ مل کر ، اور لیکویڈیٹی ڈیلٹا ((Liquidity Delta)) تجزیہ خرید و فروخت کے دباؤ کے عدم توازن کا استعمال کرتا ہے ، تاکہ مارکیٹ کے متعدد ماحول میں داخلہ اور باہر نکلنے کے سگنل کو درست طریقے سے پیدا کیا جاسکے۔ یہ حکمت عملی ایک قدامت پسند خطرے کے انتظام کے طریقہ کار کو اپناتی ہے ، جس میں ایک مقررہ تناسب کا تعین کیا گیا ہے۔
اس حکمت عملی میں ٹریڈنگ سگنل کو چار بنیادی اشارے کے ساتھ مل کر کام کیا جاتا ہے۔
سپر ٹرینڈ اشارے: اہم رجحان کی سمت فلٹر کے طور پر ، ردعمل اور وشوسنییتا کو متوازن کرنے کے لئے آپٹمائزڈ سیٹنگ ((فیکٹر: 3.0 ، اے ٹی آر سائیکل: 10) کا استعمال کیا گیا ہے۔ جب قیمت سپر ٹرینڈ لائن کے اوپر ہوتی ہے تو ، اس کی شناخت بڑھتی ہوئی رجحان کے طور پر کی جاتی ہے۔ جب قیمت سپر ٹرینڈ لائن کے نیچے ہوتی ہے تو ، اس کی نشاندہی ہوتی ہے۔
ADX اشارے: موجودہ رجحان کی طاقت کی تصدیق کرنے کے لئے استعمال کیا جاتا ہے ، کراس ڈسک یا افراتفری والے بازار کے ماحول کو فلٹر کریں۔ حکمت عملی اپنی مرضی کے مطابق نفاذ کا استعمال کرتی ہے ، حقیقی طول موج ، مثبت اور منفی سمت میں منتقل ہونے کا حساب لگاتی ہے ، اور آخر میں ADX کی قیمت تیار کرتی ہے۔ جب ADX کی قیمت مقررہ حد سے زیادہ ہوتی ہے (ڈیفالٹ 25) ، جس سے یہ ظاہر ہوتا ہے کہ ایک مضبوط رجحان موجود ہے ، تو نظام سگنل ٹریڈنگ پیدا کرنے کے لئے زیادہ مائل ہوتا ہے۔
لیکویڈیٹی ڈیلٹا انڈیکس: حجم خرید و فروخت کے دباؤ کے عدم توازن کا تجزیہ کریں ، حجم خرید و فروخت کے حجم کا حساب لگائیں ، اور معیاری اور ہموار عمل کی ایک سیریز کے ذریعے حتمی ڈیلٹا کی قیمت حاصل کریں۔ جب ڈیلٹا کی قیمت مثبت حد سے زیادہ ہو تو ایک سے زیادہ سگنل پیدا ہوتا ہے ، اور منفی حد سے کم ہونے پر ایک سے کم سگنل پیدا ہوتا ہے ، تاکہ رجحان کی سمت اور ممکنہ الٹ کو درست کیا جاسکے۔
پی ایس اے آر اشارے(اختیاری): رجحان میں تبدیلی کی اضافی تصدیق کے طور پر ، سگنل فلٹرنگ کو کم کرنے کے لئے پہلے سے طے شدہ طور پر بند کریں۔ جب قیمت پی ایس اے آر پوائنٹ سے اوپر ہو تو ، اسے اوپر کی طرف رجحان سمجھا جاتا ہے۔ جب قیمت پی ایس اے آر پوائنٹ سے نیچے ہو تو ، اسے نیچے کی طرف رجحان سمجھا جاتا ہے۔
ٹریڈنگ لاجسٹک تمام متحرک اشارے کے مجموعے کے ذریعہ مجموعی سگنل تیار کرتا ہے۔ جب تمام اشارے ایک ہی سمت کی طرف اشارہ کرتے ہیں تو ہی حتمی خرید یا فروخت سگنل تیار کیا جاتا ہے۔ مثال کے طور پر ، سسٹم صرف اس وقت خرید سگنل تیار کرتا ہے جب پی ایس اے آر کی شرائط ، سپر ٹرینڈ کی شرائط ، اے ڈی ایکس کی شرائط اور لیکویڈیٹی ڈیلٹا کی شرائط پوری ہوجائیں۔ اس کے علاوہ ، حکمت عملی صارف کو تجارت کی سمت کا انتخاب کرنے کی اجازت دیتی ہے (صرف زیادہ ، صرف صفر یا دو طرفہ تجارت) ، مختلف مارکیٹ کے ماحول یا اکاؤنٹ کی پابندیوں کے مطابق۔
اس حکمت عملی کے کچھ نمایاں فوائد ہیں:
کثیر جہتی تصدیق کا نظام: مختلف قسم کے تکنیکی اشارے کو مربوط کرکے ، رجحانات ، طاقت اور حجم سے لے کر متعدد جہتوں میں تجارت کی تصدیق ، جعلی سگنل کے خطرے کو نمایاں طور پر کم کیا گیا ہے ، اور تجارت کی درستگی میں اضافہ ہوا ہے۔
انتہائی موافقت پذیر: حکمت عملی صارف کو ٹریڈنگ کی سمت کا انتخاب کرنے اور مخصوص اشارے کو فعال / غیر فعال کرنے کی اجازت دیتی ہے ، جس سے نظام کو مختلف مارکیٹ کے حالات اور مختلف قسم کے تجارت کے مطابق ڈھال لیا جاسکتا ہے۔
سخت خطرے کا کنٹرول: بلٹ ان فکسڈ تناسب اسٹاپ اور اسٹاپ میکانیزم ، اس بات کو یقینی بناتا ہے کہ ہر تجارت میں پہلے سے طے شدہ خطرے کی حد اور منافع کا ہدف ہوتا ہے ، جو فنڈز کی حفاظت کو مؤثر طریقے سے محفوظ کرتا ہے۔
حقیقی ٹرانزیکشن لاگت پر غور کریںاسٹریٹجک ماڈل میں کمیشن ((0.035%) اور سلائڈ پوائنٹ ((2 پوائنٹس) کا حساب شامل ہے ، جس سے ریٹرننگ کے نتائج کو حقیقی تجارتی ماحول سے زیادہ مطابقت ملتی ہے۔
بصری ٹریڈنگ سگنل: ایک واضح خرید / فروخت سگنل تیر فراہم کرتا ہے ، جس میں اپنی مرضی کے مطابق سائز ہے ، جس کی چارٹ پر فوری شناخت آسان ہے۔
انفارمیشن پینل: متحرک طور پر موجودہ فعال اشارے اور خطرے کی ترتیبات کو ظاہر کرتا ہے ، حکمت عملی کی چلانے کی حیثیت کے بارے میں فوری آراء فراہم کرتا ہے۔
محافظ پوزیشن مینجمنٹڈیفالٹ: ہر تجارت کے لئے پوزیشن سائز کے طور پر 5٪ کا استحقاق استعمال کریں ، تاکہ زیادہ تجارت سے ہونے والے مالی نقصانات سے بچا جاسکے۔
اس جامع حکمت عملی کے باوجود ، مندرجہ ذیل ممکنہ خطرات موجود ہیں:
پیرامیٹر کی حساسیت: حکمت عملی کی کارکردگی اشارے کے پیرامیٹرز کی ترتیب پر بہت زیادہ انحصار کرتی ہے ، خاص طور پر سپر ٹرینڈ فیکٹر اور اے ڈی ایکس تھریڈ ، مختلف مارکیٹ کے حالات میں مختلف پیرامیٹرز کی اصلاح کی ضرورت ہوسکتی ہے ، ورنہ اس سے زیادہ تجارت یا اہم مواقع سے محروم ہوجانے کا خطرہ ہوتا ہے۔
تاخیر کا خطرہ: متعدد متحرک اوسط اشارے استعمال کرنے کی وجہ سے ، سگنل میں کچھ تاخیر ہوسکتی ہے ، جس کی وجہ سے تیزی سے بدلتے ہوئے بازاروں میں داخلے یا باہر نکلنے میں کافی وقت نہیں لگتا ہے۔
وابستگی کا خطرہ: متعدد تکنیکی اشارے کے مابین اندرونی وابستگی ہوسکتی ہے ، اس کا مطلب یہ ہے کہ بظاہر آزاد تصدیق شاید اسی طرح کے ریاضیاتی ماڈل پر مبنی اشارے سے ہو ، جس سے متعدد تصدیق کی اصل قدر کم ہوجائے۔
اوور اوپٹیمائزڈ خطرات: 2021-2033 کے ریٹرننگ کے دوران اچھی کارکردگی کا مطلب یہ نہیں ہے کہ یہ مستقبل کی مارکیٹوں میں بھی اتنا ہی موثر ہوگا ، خاص طور پر اگر یہ پیرامیٹرز تاریخی اعداد و شمار کے لئے زیادہ سے زیادہ اصلاحات کا نتیجہ ہیں۔
حل:
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
متحرک پیرامیٹرز ایڈجسٹمنٹ: مارکیٹ میں اتار چڑھاؤ کی بنیاد پر سپر ٹرینڈ فیکٹر اور ADX کی کمی کو خود بخود ایڈجسٹ کرنے کا طریقہ کار ، تاکہ حکمت عملی کو مختلف مارکیٹ کے حالات کے مطابق بہتر طور پر ڈھال لیا جاسکے۔ مثال کے طور پر ، کم اتار چڑھاؤ والی مارکیٹ میں چھوٹے سپر ٹرینڈ فیکٹر کا استعمال کریں اور اعلی اتار چڑھاؤ والی مارکیٹ میں بڑے فیکٹر کا استعمال کریں۔
وقت فلٹر: وقت پر مبنی فلٹرنگ کے طریقہ کار کو شامل کریں ، اور معروف کم لیکویڈیٹی یا اعلی اتار چڑھاؤ کے اوقات میں تجارت سے گریز کریں ، جیسے کہ کرپٹو مارکیٹ میں ہفتے کے آخر میں یا فاریکس مارکیٹ میں اہم معاشی اعداد و شمار کے اجراء کے وقت۔
ملٹی ٹائم فریم تجزیہ: اعلی ٹائم فریم کے رجحانات کی تصدیق ، مثال کے طور پر ، صرف اس وقت تجارت میں داخل ہوں جب یومیہ رجحانات کی سمت موجودہ ٹریڈنگ ٹائم فریم کے مطابق ہو۔ اس سے حکمت عملی کی جیت کی شرح میں نمایاں اضافہ ہوسکتا ہے۔
اسمارٹ سٹاپ نقصان کی حکمت عملی: فکسڈ تناسب اسٹاپ کو اے ٹی آر یا سپورٹ / مزاحمت کی پوزیشن پر مبنی متحرک اسٹاپ کے ساتھ تبدیل کریں ، جو مارکیٹ کی اصل اتار چڑھاو کی عکاسی کرے ، اور مارکیٹ شور سے پیدا ہونے والے اسٹاپ کو کم کرے۔
داخلہ فلٹرنگ میں اضافہ: آر ایس آئی اوور خرید اوور فروخت فیصلے یا برلن بینڈ بارڈر ٹیسٹ جیسے فلٹرنگ شرائط کو شامل کرنے پر غور کیا جاسکتا ہے ، صرف زیادہ فائدہ مند قیمت کی سطح پر داخلے میں ، داخلے کے معیار کو بہتر بنانا۔
فنڈ مینجمنٹ کی اصلاح: موجودہ حکمت عملی کی کارکردگی اور مارکیٹ کی صورتحال کی بنیاد پر متحرک پوزیشن مینجمنٹ کو لاگو کریں ، حکمت عملی کی اچھی کارکردگی کے ساتھ پوزیشنوں میں بتدریج اضافہ کریں ، اور غیر یقینی صورتحال میں اضافہ ہونے پر پوزیشنوں کو کم کریں۔
مشین سیکھنے میں اضافہ: مشین لرننگ ٹکنالوجی کا استعمال کرتے ہوئے اشارے کے وزن کو بہتر بنانا ، مارکیٹ کے مختلف حالات کے مطابق ہر اشارے کو حتمی سگنل کی تشکیل میں اہمیت کے لئے خود بخود ایڈجسٹ کرنا۔
ایک سے زیادہ تکنیکی اشارے جیسے سپر ٹرینڈ ، اے ڈی ایکس اور لیکویڈیٹی ڈیلٹا کو مربوط کرکے ، ایک جامع اور لچکدار تجارتی نظام تشکیل دیا گیا ہے ، جو مختلف مارکیٹ کے ماحول میں طول و عرض کی تجارت کے لئے موزوں ہے۔ اس حکمت عملی کا بنیادی فائدہ اس کے کثیر جہتی سگنل کی تصدیق کے طریقہ کار اور سخت خطرے کے انتظام کے فریم ورک میں ہے ، جو مارکیٹ کے شور کو مؤثر طریقے سے فلٹر کرنے اور تجارتی فنڈز کی حفاظت کرنے کے قابل ہے۔ تاہم ، صارفین کو پیرامیٹرز کی حساسیت اور اشارے کے پیچھے پڑنے جیسے ممکنہ خطرات پر توجہ دینے کی ضرورت ہے ، اور حکمت عملی کی کارکردگی کا باقاعدگی سے دوبارہ جائزہ لیا جاتا ہے۔
اس نظام میں مزید منافع بخش اور استحکام کو بہتر بنانے کی صلاحیت ہے جس میں تجویز کردہ اصلاحات کو نافذ کیا جاتا ہے ، جیسے متحرک پیرامیٹر ایڈجسٹمنٹ ، ملٹی ٹائم فریم تجزیہ اور ذہین اسٹاپ نقصان کی حکمت عملی۔ بالآخر ، یہ حکمت عملی ایک ٹھوس فریم ورک فراہم کرتی ہے جس میں مقدار کے تاجروں کو ذاتی خطرے کی ترجیحات اور مارکیٹ کے نقطہ نظر کے مطابق اپنی مرضی کے مطابق اور اس میں توسیع کی جاسکتی ہے۔
/*backtest
start: 2025-01-27 00:00:00
end: 2025-05-14 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TiamatCrypto
//@version=6
// ====================================================================================
// Multi-Indicator Swing Trading Strategy [TIAMATCRYPTO]v6
// ====================================================================================
// DESCRIPTION:
// This strategy uses a combination of technical indicators to identify swing trading
// opportunities in various markets. The default settings are optimized for daily
// timeframes on cryptocurrency and forex markets.
//
// RECOMMENDED DEFAULT SETTINGS:
// - Trading direction: Both (performs well in trending and ranging markets)
// - Position size: 5% (conservative position sizing to manage risk)
// - Stop Loss: 2% (conservative risk management for capital preservation)
// - Take Profit: 4% (realistic profit target with 1:2 risk-reward ratio)
// - Initial capital: $10,000 (realistic starting account size)
// - Timeframe: 2m (best performance on 2m charts)
// - Testing period: 2021-2033 (provides sufficient sample size of trades)
// ====================================================================================
strategy("Multi-Indicator Swing [TIAMATCRYPTO]v6", overlay=true,
default_qty_type=strategy.percent_of_equity, default_qty_value=5,
initial_capital=10000, commission_type=strategy.commission.percent,
commission_value=0.035, slippage=2)
// === BASIC SETTINGS ===
// Backtesting time period set directly in the code for realistic testing
var startDateInput = timestamp("2021-01-01T00:00:00")
var endDateInput = timestamp("2033-12-31T23:59:59")
var inDateRange = time >= startDateInput and time <= endDateInput
// Trading direction settings
tradeDirection = input.string("Both", "Trading Direction", options=["Long Only", "Short Only", "Both"], group="Basic Settings")
// === INDICATOR SWITCHES ===
// PSAR is now disabled by default
usePSAR = input.bool(false, "Use PSAR", group="Indicator Switches")
useSupertrend = input.bool(true, "Use Supertrend", group="Indicator Switches")
useADX = input.bool(true, "Use ADX", group="Indicator Switches")
useLiquidityDelta = input.bool(true, "Use Liquidity Delta", group="Indicator Switches")
// === INDICATOR SETTINGS SECTION ===
// PSAR Settings
// Default PSAR settings are conservative and work well across multiple markets
psarStart = input.float(0.02, "PSAR Initial Value", minval=0.01, maxval=0.1, step=0.01, group="PSAR Settings")
psarIncrement = input.float(0.02, "PSAR Increment", minval=0.01, maxval=0.1, step=0.01, group="PSAR Settings")
psarMaximum = input.float(0.2, "PSAR Maximum", minval=0.1, maxval=0.5, step=0.05, group="PSAR Settings")
// Supertrend Settings
// Factor 3.0 provides a good balance between sensitivity and false signals
atrPeriod = input.int(10, "SuperTrend ATR Period", minval=1, maxval=50, group="SuperTrend Settings")
factor = input.float(3.0, "SuperTrend Multiplier", minval=1, maxval=10, step=0.1, group="SuperTrend Settings")
// ADX Settings
// ADX threshold of 25 is standard for identifying strong trends
adxLength = input.int(14, "ADX Length", minval=1, maxval=50, group="ADX Settings")
adxThreshold = input.int(25, "ADX Trend Strength Threshold", minval=10, maxval=50, group="ADX Settings")
// Liquidity Delta Settings
// These settings help identify significant volume imbalances for trend confirmation
deltaLength = input.int(14, "Liquidity Delta Length", minval=1, maxval=50, group="Liquidity Delta")
deltaSmooth = input.int(3, "Delta Smoothing", minval=1, maxval=20, group="Liquidity Delta")
deltaThreshold = input.float(0.5, "Delta Signal Threshold", minval=0.1, maxval=5, step=0.1, group="Liquidity Delta")
// Risk Management Settings
// Conservative settings to ensure capital preservation
useStopLoss = input.bool(true, "Use Stop Loss", group="Risk Management")
useTakeProfit = input.bool(true, "Use Take Profit", group="Risk Management")
stopLossPercent = input.float(2.0, "Stop Loss (%)", minval=0.5, maxval=5, step=0.1, group="Risk Management")
takeProfitPercent = input.float(4.0, "Take Profit (%)", minval=1.0, maxval=10, step=0.1, group="Risk Management")
// Visualization Settings
signalSize = input.string("Normal", "Signal Size", options=["Small", "Normal", "Large"], group="Visualization")
buyColor = input.color(color.green, "Buy Signal Color", group="Visualization")
sellColor = input.color(color.red, "Sell Signal Color", group="Visualization")
// === INDICATOR CALCULATIONS ===
// All remaining indicators set to initialize as true when their respective switch is off
// PSAR Calculations
psar = ta.sar(psarStart, psarIncrement, psarMaximum)
psarCondition = not usePSAR or (close > psar)
psarSellCondition = not usePSAR or (close < psar)
// Supertrend Calculations
[supertrendValue, supertrendDirection] = ta.supertrend(factor, atrPeriod)
supertrendCondition = not useSupertrend or (supertrendDirection > 0)
supertrendSellCondition = not useSupertrend or (supertrendDirection < 0)
// ADX Calculations - custom implementation
trueRange = math.max(high - low, math.abs(high - close[1]), math.abs(low - close[1]))
smoothedTrueRange = ta.sma(trueRange, adxLength)
dmPlus = high > high[1] ? math.max(high - high[1], 0) : 0
dmMinus = low[1] > low ? math.max(low[1] - low, 0) : 0
smoothedDmPlus = ta.sma(dmPlus, adxLength)
smoothedDmMinus = ta.sma(dmMinus, adxLength)
diPlus = smoothedTrueRange > 0 ? 100 * smoothedDmPlus / smoothedTrueRange : 0
diMinus = smoothedTrueRange > 0 ? 100 * smoothedDmMinus / smoothedTrueRange : 0
dx = (diPlus + diMinus) > 0 ? math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100 : 0
adxValue = ta.sma(dx, adxLength)
adxCondition = not useADX or (adxValue > adxThreshold)
// Liquidity Delta Calculations
bidVolume = close < open ? volume : volume * (high - close) / (high - low + 0.000001)
askVolume = close > open ? volume : volume * (close - low) / (high - low + 0.000001)
deltaRaw = bidVolume - askVolume
deltaAvg = ta.sma(deltaRaw, deltaLength)
deltaNormalized = deltaAvg / ta.sma(volume, deltaLength)
deltaSmoothed = ta.ema(deltaNormalized, deltaSmooth)
// Delta Signals
bullishDelta = deltaSmoothed > deltaThreshold
bearishDelta = deltaSmoothed < -deltaThreshold
deltaCondition = not useLiquidityDelta or bullishDelta
deltaSellCondition = not useLiquidityDelta or bearishDelta
// === TRADING LOGIC ===
// Buy signal - combination of all active indicators
buySignal = psarCondition and supertrendCondition and adxCondition and deltaCondition
// Sell signal - combination of all active indicators
sellSignal = psarSellCondition and supertrendSellCondition and adxCondition and deltaSellCondition
// Apply trading direction
isLongAllowed = tradeDirection == "Long Only" or tradeDirection == "Both"
isShortAllowed = tradeDirection == "Short Only" or tradeDirection == "Both"
finalBuySignal = buySignal and isLongAllowed
finalSellSignal = sellSignal and isShortAllowed
// === POSITION ENTRY WITH RISK MANAGEMENT ===
// Conservative position management with defined risk parameters
if finalBuySignal and inDateRange
strategy.entry("Long", strategy.long)
// Conditional setting of stop-loss and take-profit
if useStopLoss or useTakeProfit
stopLevel = useStopLoss ? close * (1 - stopLossPercent / 100) : na
takeProfitLevel = useTakeProfit ? close * (1 + takeProfitPercent / 100) : na
strategy.exit("Long Exit", "Long", stop=stopLevel, limit=takeProfitLevel)
if finalSellSignal and inDateRange
strategy.entry("Short", strategy.short)
// Conditional setting of stop-loss and take-profit
if useStopLoss or useTakeProfit
stopLevel = useStopLoss ? close * (1 + stopLossPercent / 100) : na
takeProfitLevel = useTakeProfit ? close * (1 - takeProfitPercent / 100) : na
strategy.exit("Short Exit", "Short", stop=stopLevel, limit=takeProfitLevel)
// === SIGNAL VISUALIZATION ===
// Creating separate signals for different sizes
buySmallSignal = finalBuySignal and signalSize == "Small"
buyNormalSignal = finalBuySignal and signalSize == "Normal"
buyLargeSignal = finalBuySignal and signalSize == "Large"
sellSmallSignal = finalSellSignal and signalSize == "Small"
sellNormalSignal = finalSellSignal and signalSize == "Normal"
sellLargeSignal = finalSellSignal and signalSize == "Large"
// Draw signals for each size
plotshape(buySmallSignal and inDateRange, title="Buy Small", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.small)
plotshape(buyNormalSignal and inDateRange, title="Buy Normal", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.normal)
plotshape(buyLargeSignal and inDateRange, title="Buy Large", location=location.belowbar, color=buyColor, style=shape.triangleup, size=size.large)
plotshape(sellSmallSignal and inDateRange, title="Sell Small", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.small)
plotshape(sellNormalSignal and inDateRange, title="Sell Normal", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.normal)
plotshape(sellLargeSignal and inDateRange, title="Sell Large", location=location.abovebar, color=sellColor, style=shape.triangledown, size=size.large)
// === INFORMATION PANEL ===
// Building list of active indicators
indList = ""
indList := usePSAR ? indList + "PSAR, " : indList
indList := useSupertrend ? indList + "SuperT, " : indList
indList := useADX ? indList + "ADX, " : indList
indList := useLiquidityDelta ? indList + "Delta" : indList
// Remove last comma if it exists
if str.endswith(indList, ", ")
indList := str.substring(indList, 0, str.length(indList) - 2)
// Building risk management text
riskText = ""
if useStopLoss and useTakeProfit
riskText := str.tostring(stopLossPercent, "#.#") + "% SL, " + str.tostring(takeProfitPercent, "#.#") + "% TP"
else if useStopLoss
riskText := str.tostring(stopLossPercent, "#.#") + "% SL"
else if useTakeProfit
riskText := str.tostring(takeProfitPercent, "#.#") + "% TP"
else
riskText := "Disabled"
// Display strategy information
var table infoTable = table.new(position.top_right, 2, 5, border_width=1)
table.cell(infoTable, 0, 0, "Strategy:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 0, "Multi-Indicator Swing", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 1, "Period:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 1, "2021-2023", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 2, "Direction:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 2, tradeDirection, bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 3, "Indicators:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 3, indList, bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 0, 4, "Risk Management:", bgcolor=color.new(color.blue, 90), text_color=color.white)
table.cell(infoTable, 1, 4, riskText, bgcolor=color.new(color.blue, 90), text_color=color.white)