
کثیر ماڈیول شاک مارکیٹ ٹریڈنگ سسٹم ایک ایسی مقدار کی تجارت کی حکمت عملی ہے جو خاص طور پر زلزلے کی صورتحال کے لئے ڈیزائن کی گئی ہے ، جس میں ایک اعلی موافقت پذیر تجارتی نظام تشکیل دینے کے لئے متعدد تکنیکی اشارے جیسے بولنگر بینڈ ، نسبتا strong مضبوط اشارے ، متحرک اوسط اختتامی اور پھیلاؤ اشارے ، اور اوسط سمت اشارے شامل ہیں۔ اس حکمت عملی میں ماڈیولر ڈیزائن ڈیزائن کا نظریہ استعمال کیا گیا ہے ، جس میں دو اور ایک دوسرے سے آزاد تجارت کے منطق شامل ہیں۔ متحرک تصدیق کی اوسط واپسی ماڈیول اور بولننگ انتہائی حد تک موڑ موڑ ماڈیول ، جو شاک مارکیٹ کے ماحول میں قیمتوں کی واپسی کے مواقع کو پکڑنے کے قابل ہے ، اور اس کی حمایت کرتا ہے۔ کثیر فضائی دو طرفہ نظام کا سب سے بڑا کام اس کے ذہین ہولڈر مینجمنٹ میکانزم میں ہے ، جو ایک ہی منطق کے تحت پوزیشنوں کو بڑھانے کی اجازت دیتا ہے ، جبکہ مختلف منطقوں کے مابین پوزیشنوں کے باہمی ردعمل کو یقینی بناتا ہے ، سگنل تنازع سے بچتا ہے ، اور سرمایہ کاری کو
کوڈ تجزیہ کے نقطہ نظر سے ، اس حکمت عملی کا بنیادی اصول زلزلے کی مارکیٹ کی خصوصیات کی درست شناخت اور گرفت پر مبنی ہے۔ سب سے پہلے ، حکمت عملی کا استعمال ADX اشارے کا استعمال کرتے ہوئے کیا جاتا ہے کہ آیا مارکیٹ زلزلے کی حالت میں ہے یا نہیں ، اور صرف اس وقت تجارتی سگنل پر غور کیا جاتا ہے جب ADX کی قیمت مقررہ حد سے کم ہو ، اس ڈیزائن نے رجحان کی منڈی میں ممکنہ نقصان کے جھوٹے سگنل کو مؤثر طریقے سے فلٹر کیا ہے۔
ہلچل کی حیثیت کی تصدیق کے بعد ، حکمت عملی دو الگ الگ منطقی ماڈیولز کے ذریعہ تجارتی سگنل تیار کرتی ہے۔
متحرک تصدیق میڈین ریگریشن ماڈیول ((منطق 1): جب قیمت بلین بینڈ کے وسط سے دور ہوجاتی ہے تو ، MACD گولڈ فورک / ڈیڈ فورک اور RSI اشارے کے ساتھ مل کر متحرک توانائی کی سمت کی تصدیق کرتے ہیں ، جس سے زیادہ یا کم کا اشارہ ہوتا ہے۔ یہ ماڈیول قیمتوں میں متحرک توانائی کی تبدیلیوں پر توجہ دیتا ہے ، جب متحرک توانائی کے اشارے ظاہر ہوتے ہیں تو اس میں واپسی کا امکان ہوتا ہے۔
Brin بینڈ کی حد ریورس ماڈیول ((منطق 2): جب قیمتوں نے برین بینڈ کو نیچے کی طرف ٹریک کیا اور اس میں واپسی کی علامتیں نظر آئیں تو ، RSI اوور بیئر اوور سیل سطح کے فیصلے کے ساتھ مل کر ، ایک الٹ ٹریڈنگ سگنل تشکیل دیا گیا۔ یہ ماڈیول قیمتوں کے انتہائی علاقے میں الٹ ہونے کے مواقع پر قبضہ کرتا ہے۔
تجارت کے انتظام کے لحاظ سے ، حکمت عملی نے متحرک اے ٹی آر اسٹاپ کو خطرہ کنٹرول فراہم کرنے کے لئے اپنایا ہے۔ اس کے ساتھ ہی ، متعدد اسٹاپ میکانیزم ڈیزائن کیے گئے ہیں ، بشمول برن بینڈ میٹرو / بائری اسٹاپ اور آر ایس آئی یکساں ریورس آؤٹ۔ سب سے اہم ڈیزائن پوزیشن کی جگہ کا باہمی ردوبدل اور ایک ہی منطق کی پوزیشننگ میکانیزم ہے ، جو ہر تجارت کے ماخذ کی منطق کو درست طریقے سے ٹریک کرکے مختلف منطقوں کے مابین پوزیشن کی جگہ کا باہمی ردوبدل یقینی بناتا ہے ، جبکہ ایک ہی منطقی فریم ورک کے تحت ذہین پوزیشننگ کی اجازت دیتا ہے ، جو خطرے اور منافع کو مؤثر طریقے سے متوازن کرتا ہے۔
ماڈیولر ڈیزائن: حکمت عملی ماڈیولر ڈھانچے کو اپناتی ہے ، جس میں مختلف تجارتی منطق کو الگ کیا جاتا ہے ، جس سے نظام کو زیادہ لچکدار بنایا جاتا ہے ، جس میں مارکیٹ کی صورتحال کے مطابق مخصوص ماڈیولز کو الگ سے فعال یا غیر فعال کیا جاسکتا ہے ، حکمت عملی کی موافقت کو بڑھاوا دیا جاتا ہے۔
مارکیٹ کی درست شناخت: ADX اشارے کے ذریعہ زلزلے کی مارکیٹوں کی موثر شناخت ، رجحان کی منڈیوں میں غیر ضروری تجارت سے بچنے اور جھوٹے اشاروں کو کم کرنے کے لئے۔
ایک سے زیادہ سگنل کی تصدیق کا طریقہ کار: ہر ٹریڈنگ سگنل کو متعدد اشارے کی مشترکہ تصدیق کی ضرورت ہوتی ہے ، جیسے قیمت کی پوزیشن ، متحرک اشارے اور جھٹکے کے اشارے کا مجموعہ فیصلہ ، جس سے غلط فہمی کا امکان بہت کم ہوجاتا ہے۔
ذہین گودام کا انتظاماس حکمت عملی کا بنیادی فائدہ اس کے جدید پوزیشن مینجمنٹ سسٹم میں ہے ، جس میں ایک ہی منطق کے تحت ذہین پوزیشننگ اور مختلف منطقوں کے مابین پوزیشنوں کی باہمی ردوبدل کی اجازت دی گئی ہے ، جس سے فائدہ اٹھانا اور سگنل تنازعہ سے بچنے میں مدد ملتی ہے۔
ملٹی لیول رسک کنٹرول: متحرک اے ٹی آر اسٹاپس ، متعدد اسٹاپ اسٹریٹجیز (برن بینڈ اسٹاپس ، آر ایس آئی ریورس اسٹاپس) اور صرف منافع بخش ہونے پر آر ایس آئی ریورس آؤٹ میکانزم سمیت ، خطرے کے انتظام کا ایک تین جہتی نظام تشکیل دیا گیا ہے۔
اختتامی قیمت کی تصدیق کا طریقہ کارمنظور شدہ:barstate.isconfirmedکنٹرول ، K لائن غیر بند ہونے پر جعلی سگنل سے بچنے کے لئے ، اور تجارت کے معیار کو بہتر بنانے کے لئے
بصری حمایتاسٹریٹجی: اسٹریٹجی میں برلن بینڈ چینل ، اے ٹی آر متحرک اسٹاپ نقصان لائن اور دیگر بصری عناصر فراہم کیے گئے ہیں تاکہ تاجروں کو مارکیٹ کی حالت اور اسٹریٹجی کے کام کے بارے میں بصری طور پر سمجھنے میں مدد ملے۔
زلزلے سے متعلق غلط فہمیوں کا خطرہ: اگرچہ ADX اشارے کا استعمال زلزلے کی مارکیٹ کی شناخت کے لئے کیا جاتا ہے ، لیکن مارکیٹ کی حالت کے بارے میں فیصلہ کرنے میں غلطی ہوسکتی ہے ، خاص طور پر زلزلے کے رجحان کے منتقلی کے دوران ، جس سے غیر مناسب تجارتی سگنل پیدا ہوسکتے ہیں۔ اس کا حل ADX کی قیمتوں کو ایڈجسٹ کرنا یا رجحان کی طاقت کے اشارے جیسے رجحان کی تصدیق کے دیگر اشارے شامل کرنا ہے۔
پیرامیٹرز کو بہتر بنانے کے لئے انحصار: حکمت عملی کی کارکردگی پیرامیٹرز کی ترتیب پر بہت زیادہ انحصار کرتی ہے ، بشمول برلن بینڈ سائیکل ، RSI thresholds ، MACD پیرامیٹرز وغیرہ۔ مختلف مارکیٹ کے حالات میں مختلف پیرامیٹرز کے مجموعے کی ضرورت ہوسکتی ہے۔ یہ تجویز کی جاتی ہے کہ تاریخی اعداد و شمار کی بازیافت کے ذریعہ بہترین پیرامیٹرز کا مجموعہ تلاش کیا جائے ، اور پیرامیٹرز کی تاثیر کو باقاعدگی سے چیک کیا جائے۔
ذخیرہ اندوزی کا خطرہ: اگرچہ حکمت عملی منطق کے مطابق پوزیشنوں کو بڑھانے کی اجازت دیتی ہے ، لیکن مارکیٹ کے انتہائی حالات میں یہ پوزیشنوں کو زیادہ سے زیادہ مرکوز کرنے کا سبب بن سکتا ہے ، جس سے نقصان میں اضافہ ہوتا ہے۔ اس خطرے کو کنٹرول کرنے کے لئے زیادہ سے زیادہ پوزیشنوں کی تعداد اور ایک ہی پوزیشن پر سرمایہ کاری کے تناسب کی حد مقرر کی جاسکتی ہے۔
زلزلے کے خطرے سے نمٹنے کے لئے: جب مارکیٹ ٹرینڈ کے لئے جھٹکے سے ٹوٹ جاتا ہے تو ، حکمت عملی کو زیادہ نقصان کا سامنا کرنا پڑ سکتا ہے۔ ٹرینڈ ٹوٹنے کے فلٹر کی شرائط کو بڑھانا یا رجحان کی تصدیق کے بعد خود بخود تمام جھٹکے والی منطقی پوزیشنوں کو بند کرنا تجویز کیا گیا ہے۔
اشاریہ جات کے پیچھے پڑنے کا خطرہ: تکنیکی اشارے خود میں ایک خاص تاخیر ہے ، جس کی وجہ سے داخلے یا باہر نکلنے کا وقت مناسب نہیں ہے۔ زیادہ حساس اشارے متعارف کرانے یا موجودہ اشارے کے پیرامیٹرز کو بہتر بنانے کی کوشش کی جاسکتی ہے ، تاکہ حساسیت اور وشوسنییتا کو متوازن کیا جاسکے۔
متحرک پیرامیٹرز خود کو اپنانےموجودہ حکمت عملی میں فکسڈ پیرامیٹرز کا استعمال کیا جاتا ہے۔ اس میں اتار چڑھاؤ کی شرح کے لئے ایک موافقت کا طریقہ کار متعارف کرانے پر غور کیا جاسکتا ہے ، جو مارکیٹ میں اتار چڑھاؤ کی متحرک حالت کے مطابق بلین بینڈ اسٹینڈرڈ ڈیفینس ، اے ٹی آر ضرب اور دیگر پیرامیٹرز کو ایڈجسٹ کرتا ہے ، تاکہ حکمت عملی مختلف مارکیٹ کے حالات میں بہتر طور پر ڈھال سکے۔
مارکیٹ کے ماحول کی درجہ بندی میں اضافہ: ایک سادہ جھٹکا / رجحان ڈویژن کے علاوہ ، مارکیٹ کی حالت کو مزید تقسیم کیا جاسکتا ہے ، جیسے کہ کمزور جھٹکا ، مضبوط جھٹکا ، ابتدائی رجحان ، اور اسی طرح ، ہر مارکیٹ کی حالت کے لئے زیادہ سے زیادہ تجارتی پیرامیٹرز اور منطق کی تشکیل کریں۔
فنڈ مینجمنٹ کی اصلاح: موجودہ حکمت عملی کا استعمال کرتے ہوئے فکسڈ فی صد فنڈ مینجمنٹ ، اتار چڑھاؤ کی بنیاد پر پوزیشن سائزنگ کا طریقہ متعارف کرانے پر غور کیا جاسکتا ہے ، جس میں کم اتار چڑھاؤ والے ماحول میں پوزیشنوں میں اضافہ ہوتا ہے ، اور اعلی اتار چڑھاؤ والے ماحول میں پوزیشنوں کو کم کیا جاتا ہے ، تاکہ خطرے میں ایڈجسٹ ہونے کے بعد منافع کو بہتر بنایا جاسکے۔
سگنل معیار درجہ بندی: تجارتی سگنل کے لئے معیار کی درجہ بندی کا نظام تشکیل دیا جاسکتا ہے ، جس میں سگنل کو متعدد عوامل (جیسے اشارے کی ہم آہنگی ، قیمت کی پوزیشن وغیرہ) کی بنیاد پر درجہ دیا جاتا ہے ، صرف اعلی معیار کے سگنل ظاہر ہونے پر ہی پوزیشن میں اضافہ کیا جاتا ہے ، اور کم معیار کے سگنل میں سرمایہ کاری میں کمی آتی ہے۔
روک تھام کی حکمت عملی کو بہتر بنانااسٹیپنگ کی موجودہ حکمت عملی نسبتا simple آسان ہے۔ متحرک اسٹاپنگ کو متعارف کرانے پر غور کیا جاسکتا ہے ، جیسے اے ٹی آر پر مبنی موبائل اسٹاپنگ یا بلین بینڈوتھ کے مطابق ڈھالنے والے اسٹاپنگ اہداف ، جس سے اسٹاپنگ کو زیادہ لچکدار بنایا جاسکے۔
مشین سیکھنے میں اضافہ: مشین لرننگ الگورتھم کو متعارف کرایا جاسکتا ہے ، جیسے بے ترتیب جنگل یا سپورٹ ویکٹر مشین ، ماڈل کو تاریخی اعداد و شمار کی تربیت کے ذریعے مارکیٹ کی حالت کی شناخت اور سگنل کی پیداوار کی درستگی کو بہتر بناتا ہے۔
ٹرانزیکشن ٹائم فلٹر شامل کریں: مختلف مارکیٹوں کے متحرک اوقات کی خصوصیات کے لئے ، ٹریڈنگ ٹائم فلٹرز کو شامل کیا جاسکتا ہے ، کم لیکویڈیٹی یا زیادہ اتار چڑھاؤ کے اوقات میں تجارت سے گریز کیا جاسکتا ہے ، جس سے سلائڈ پوائنٹس اور عملدرآمد کا خطرہ کم ہوتا ہے۔
کثیر ماڈیول شاک مارکیٹ ٹریڈنگ سسٹم ایک عمدہ ڈیزائن کی گئی مقداری تجارتی حکمت عملی ہے ، جو متعدد کلاسیکی تکنیکی اشارے کو ملا کر اور ماڈیولر ڈیزائن کے خیالات کو اپنانے کے ذریعے ، شاک مارکیٹ میں تجارت کے مواقع کو مؤثر طریقے سے پکڑتی ہے۔ اس کی سب سے بڑی جدت اس میں ہے کہ ایک ہی منطق کے تحت ذہین اضافہ اور مختلف منطقوں کے مابین پوزیشنوں کی ردوبدل کا طریقہ کار ، منافع کی صلاحیت اور خطرے کے کنٹرول کو متوازن کرتا ہے۔ حکمت عملی میں بہتر پیرامیٹرز کی تخصیص کے اختیارات اور کثیر سطح کے خطرے کے انتظام کے اقدامات فراہم کیے گئے ہیں ، جو مختلف وقت کی مدت کے شاک مارکیٹ کے ماحول کے لئے موزوں ہیں۔
اگرچہ پیرامیٹر پر انحصار اور مارکیٹ کی حالت کے غلط فہمی جیسے ممکنہ خطرات موجود ہیں ، لیکن ان خطرات کو معقول پیرامیٹر آپٹیمائزیشن ، متحرک موافقت کے میکانزم اور مارکیٹ کے ماحول کی ایک بہتر درجہ بندی کے ذریعہ مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔ مستقبل میں اصلاح کی سمت بنیادی طور پر متحرک پیرامیٹر ایڈجسٹمنٹ ، بہتر فنڈ مینجمنٹ اور مشین لرننگ جیسے اعلی درجے کی ٹکنالوجی پر مرکوز ہے ، جس سے حکمت عملی کی استحکام اور موافقت کو مزید بڑھانے کی امید ہے۔
مجموعی طور پر ، یہ ایک نظریاتی طور پر کامل ، عملی طور پر مضبوط صدمے کی مارکیٹ کی حکمت عملی ہے ، جو درمیانی اور طویل مدتی مقدار میں تجارت کے نظام کے ایک حصے کے طور پر موزوں ہے ، یا صدمے کے واضح مارکیٹ مرحلے میں الگ سے استعمال کیا جاتا ہے۔
/*backtest
start: 2025-04-01 00:00:00
end: 2025-07-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
args: [["v_input_bool_1",false],["RunMode",1,358374]]
*/
strategy("Modular Oscillation Strategy", overlay=true, default_qty_value=10)
// =================================================================================
// Universal Indicator Parameters
// =================================================================================
bb_len = input.int(20, title="BB Period", group="Universal Indicators")//BB period
bb_stddev = input.float(2.0, title="BB Std Dev", group="Universal Indicators")//BB std dev multiplier
rsi_len = input.int(14, title="RSI Period", group="Universal Indicators")//RSI period
rsi_ma_len = input.int(14, title="RSI MA Period", group="Universal Indicators")//RSI MA period
macd_fast = input.int(12, title="MACD Fast", group="Universal Indicators")//MACD fast period
macd_slow = input.int(26, title="MACD Slow", group="Universal Indicators")//MACD slow period
macd_signal = input.int(9, title="MACD Signal", group="Universal Indicators")//MACD signal period
atr_len = input.int(14, title="ATR Period", group="Universal Indicators")//ATR period
adx_len = input.int(14, title="ADX Period", group="Universal Indicators")//ADX period
// =================================================================================
// Logic 1: Momentum Confirmed Mean Reversion
// =================================================================================
use_logic1 = input.bool(true, title="Enable Logic 1", group="Logic 1")//Enable Logic 1
adx_threshold_logic1 = input.float(40.0, "ADX Oscillation Threshold", group="Logic 1")//ADX threshold
atr_multiplier_logic1 = input.float(1.8, "ATR Stop Multiplier", group="Logic 1", step=0.1)//ATR stop multiplier
use_bb_exit_logic1 = input.bool(true, "BB Upper/Lower Exit", group="Logic 1")//Use BB exit
use_rsi_exit_logic1 = input.bool(true, "RSI MA Reversal Exit", group="Logic 1")//Use RSI exit
// =================================================================================
// Logic 2: Bollinger Band Extreme Reversal
// =================================================================================
use_logic2 = input.bool(true, title="Enable Logic 2", group="Logic 2")//Enable Logic 2
rsi_ob_logic2 = input.int(70, "RSI Overbought", group="Logic 2")//RSI overbought
rsi_os_logic2 = input.int(30, "RSI Oversold", group="Logic 2")//RSI oversold
adx_threshold_logic2 = input.float(30, "ADX Oscillation Threshold", group="Logic 2")//ADX threshold
atr_multiplier_logic2 = input.float(1.8, "ATR Stop Multiplier", group="Logic 2", step=0.1)//ATR stop multiplier
use_bb_exit_logic2 = input.bool(true, "BB Middle Exit", group="Logic 2")//Use BB middle exit
use_rsi_exit_logic2 = input.bool(true, "RSI MA Reversal Exit", group="Logic 2")//Use RSI exit
// =================================================================================
// Indicator Calculations
// =================================================================================
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bb_len, bb_stddev)//Calculate BB lines
rsi = ta.rsi(close, rsi_len)//Calculate RSI
rsi_ma = ta.sma(rsi, rsi_ma_len)//Calculate RSI MA
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)//Calculate MACD
atr = ta.atr(atr_len)//Calculate ATR
[_, _, adx_value] = ta.dmi(adx_len, adx_len)//Calculate ADX
// Market State Judgment
is_ranging_market_logic1 = adx_value < adx_threshold_logic1//Check L1 oscillation
is_ranging_market_logic2 = adx_value < adx_threshold_logic2//Check L2 oscillation
// Price and Indicator Events
price_below_bb_middle = close < bb_middle//Price below BB middle
price_above_bb_middle = close > bb_middle//Price above BB middle
price_crosses_back_above_lower = ta.crossover(close, bb_lower)//Price cross up BB lower
price_crosses_back_below_upper = ta.crossunder(close, bb_upper)//Price cross down BB upper
macd_golden_cross = ta.crossover(macd_line, signal_line)//MACD golden cross
macd_death_cross = ta.crossunder(macd_line, signal_line)//MACD death cross
rsi_above_ma = rsi > rsi_ma//RSI above MA
rsi_below_ma = rsi < rsi_ma//RSI below MA
// Exit Events
exit_long_bb_upper_target = ta.crossover(close, bb_upper)//Price cross up BB upper
exit_short_bb_lower_target = ta.crossunder(close, bb_lower)//Price cross down BB lower
exit_long_bb_middle_target = ta.crossover(close, bb_middle)//Price cross up BB middle
exit_short_bb_middle_target = ta.crossunder(close, bb_middle)//Price cross down BB middle
exit_long_rsi_reversal = ta.crossunder(rsi, rsi_ma)//RSI cross down MA
exit_short_rsi_reversal = ta.crossover(rsi, rsi_ma)//RSI cross up MA
// =================================================================================
// Position State Management
// =================================================================================
var bool is_logic1_active = false//Init L1 state
var bool is_logic2_active = false//Init L2 state
is_logic1_active := false//Reset L1 state
is_logic2_active := false//Reset L2 state
//Check open trades for active logic
if strategy.opentrades > 0
for i = 0 to strategy.opentrades - 1
trade_id = strategy.opentrades.entry_id(i)
if str.contains(trade_id, "Logic1")
is_logic1_active := true//Mark L1 active
if str.contains(trade_id, "Logic2")
is_logic2_active := true//Mark L2 active
// =================================================================================
// Entry Conditions
// =================================================================================
// Logic 1 Entry Conditions
logic1_long_condition = use_logic1 and not use_logic2 and is_ranging_market_logic1 and macd_golden_cross and rsi_above_ma and price_below_bb_middle
//L1 long: Enable L1, disable L2, oscillating, MACD gold cross, RSI>MA, price<BB middle
logic1_short_condition = use_logic1 and not use_logic2 and is_ranging_market_logic1 and macd_death_cross and rsi_below_ma and price_above_bb_middle
//L1 short: Enable L1, disable L2, oscillating, MACD death cross, RSI<MA, price>BB middle
// Logic 2 Entry Conditions
logic2_long_condition = use_logic2 and not use_logic1 and is_ranging_market_logic2 and price_crosses_back_above_lower and rsi <= rsi_os_logic2
//L2 long: Enable L2, disable L1, oscillating, price cross up BB lower, RSI oversold
logic2_short_condition = use_logic2 and not use_logic1 and is_ranging_market_logic2 and price_crosses_back_below_upper and rsi >= rsi_ob_logic2
//L2 short: Enable L2, disable L1, oscillating, price cross down BB upper, RSI overbought
// =================================================================================
// Strategy Execution - Long Trades
// =================================================================================
// Logic 1 Long Execution
if use_logic1
if logic1_long_condition
strategy.entry("Logic1Long", strategy.long, comment="Logic1-Long")//Enter L1 long
strategy.exit("StopLoss1Long", from_entry="Logic1Long", stop=close - atr * atr_multiplier_logic1)
//Set L1 long stop loss
// Logic 1 Long BB Profit Taking
if use_bb_exit_logic1
if exit_long_bb_upper_target
strategy.close("Logic1Long", comment="Logic1-Upper Exit")//L1 upper exit
// Logic 1 Long RSI Reversal Profit Taking
if use_rsi_exit_logic1
if strategy.position_size > 0 and exit_long_rsi_reversal and price_above_bb_middle
float total_profit_L1_long = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic1Long")
total_profit_L1_long += strategy.opentrades.profit(i)
//Calculate L1 long profit
if total_profit_L1_long > 0
strategy.close("Logic1Long", comment="Logic1-Profit&RSI Reversal")
//Close L1 long on profit & RSI reversal
// Logic 2 Long Execution
if use_logic2
if logic2_long_condition
strategy.entry("Logic2Long", strategy.long, comment="Logic2-Long")//Enter L2 long
strategy.exit("StopLoss2Long", from_entry="Logic2Long", stop=close - atr * atr_multiplier_logic2)
//Set L2 long stop loss
// Logic 2 Long BB Profit Taking
if use_bb_exit_logic2
if exit_long_bb_middle_target
strategy.close("Logic2Long", comment="Logic2-Middle Exit")//L2 middle exit
// Logic 2 Long RSI Reversal Profit Taking
if use_rsi_exit_logic2
if is_logic2_active and strategy.position_size > 0 and exit_long_rsi_reversal and price_above_bb_middle
float total_profit_L2_long = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic2Long")
total_profit_L2_long += strategy.opentrades.profit(i)
//Calculate L2 long profit
if total_profit_L2_long > 0
strategy.close("Logic2Long", comment="Logic2-Profit&RSI Reversal")
//Close L2 long on profit & RSI reversal
// =================================================================================
// Strategy Execution - Short Trades
// =================================================================================
// Logic 1 Short Execution
if use_logic1
if logic1_short_condition
strategy.entry("Logic1Short", strategy.short, comment="Logic1-Short")//Enter L1 short
strategy.exit("StopLoss1Short", from_entry="Logic1Short", stop=close + atr * atr_multiplier_logic1)
//Set L1 short stop loss
// Logic 1 Short BB Profit Taking
if use_bb_exit_logic1
if exit_short_bb_lower_target
strategy.close("Logic1Short", comment="Logic1-Lower Exit")//L1 lower exit
// Logic 1 Short RSI Reversal Profit Taking
if use_rsi_exit_logic1
if strategy.position_size < 0 and exit_short_rsi_reversal and price_below_bb_middle
float total_profit_L1_short = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic1Short")
total_profit_L1_short += strategy.opentrades.profit(i)
//Calculate L1 short profit
if total_profit_L1_short > 0
strategy.close("Logic1Short", comment="Logic1-Profit&RSI Reversal")
//Close L1 short on profit & RSI reversal
// Logic 2 Short Execution
if use_logic2
if logic2_short_condition
strategy.entry("Logic2Short", strategy.short, comment="Logic2-Short")//Enter L2 short
strategy.exit("StopLoss2Short", from_entry="Logic2Short", stop=close + atr * atr_multiplier_logic2)
//Set L2 short stop loss
// Logic 2 Short BB Profit Taking
if use_bb_exit_logic2
if exit_short_bb_middle_target
strategy.close("Logic2Short", comment="Logic2-Middle Exit")//L2 middle exit
// Logic 2 Short RSI Reversal Profit Taking
if use_rsi_exit_logic2
if is_logic2_active and strategy.position_size < 0 and exit_short_rsi_reversal and price_below_bb_middle
float total_profit_L2_short = 0.0
for i = 0 to strategy.opentrades - 1
if str.contains(strategy.opentrades.entry_id(i), "Logic2Short")
total_profit_L2_short += strategy.opentrades.profit(i)
//Calculate L2 short profit
if total_profit_L2_short > 0
strategy.close("Logic2Short", comment="Logic2-Profit&RSI Reversal")
//Close L2 short on profit & RSI reversal
// =================================================================================
// Visualization
// =================================================================================
// Plotting
plot(bb_upper, title="Upper Track", color=color.new(color.teal, 50))//Plot BB upper
plot(bb_middle, title="Middle Track", color=color.new(color.gray, 70))//Plot BB middle
plot(bb_lower, title="Lower Track", color=color.new(color.teal, 50))//Plot BB lower