
یہ حکمت عملی ایک مقداری تجارتی نظام ہے جو کثیر ٹائم فریم تجزیہ پر مبنی ہے ، جس میں تجارت کو 30 منٹ اور 1 گھنٹے کے وقت کے فریموں پر میکڈ اشارے ، آر ایس آئی اشارے ، وی ڈبلیو اے پی کی اوسط اور اے ٹی آر کی اتار چڑھاؤ کی شرح فلٹر کے ساتھ مربوط سگنل کا استعمال کرتے ہوئے کیا جاتا ہے۔ اس حکمت عملی میں ایک ہی وقت میں زیادہ اور کم کی حمایت کی جاتی ہے ، جس میں مختلف ٹائم فریموں کے تکنیکی اشارے کے کراس سگنل کی تصدیق کی جاتی ہے ، اور اس میں اتار چڑھاؤ کی شرائط کو فلٹر کرنے کے ساتھ مل کر تجارت کے معیار کو بہتر بنایا جاتا ہے۔ اس حکمت عملی میں فکسڈ فیصد اسٹاپ نقصان کا طریقہ کار شامل ہے ، جبکہ تکنیکی اشارے کے الٹ ہونے پر تجارت سے باہر نکلنا بھی ہوتا ہے۔
اس حکمت عملی کا بنیادی اصول کم معیار کے سگنل کو متعدد شرائط کی تصدیق کے ذریعے فلٹر کرنا ہے ، جس میں بنیادی طور پر درج ذیل چند اہم اجزاء شامل ہیں:
ملٹی ٹائم فریم MACD کراس سگنل:
آر ایس آئی اوور خرید اوور فروخت فلٹر:
ڈبل وی ڈبلیو اے پی قیمت کی پوزیشن کی تصدیق:
اتار چڑھاؤ کی شرح فلٹر:
ملٹی لیول آؤٹ میکانزم:
اس کثیر سطح کے حالات کی فلٹرنگ اور تصدیق کے ذریعے ، حکمت عملی کا مقصد واضح سمت کے ساتھ درمیانی اور قلیل مدتی اتار چڑھاؤ کو پکڑنا ہے ، جبکہ کم معیار کے اشاروں کو فلٹر کرنا ، جیت کی شرح اور منافع کی شرح کو بہتر بنانا ہے۔
ملٹی ٹائم فریم تصدیق: 30 منٹ اور 1 گھنٹہ کے ٹائم فریم کے اشارے کو جوڑ کر ، حکمت عملی حقیقی رجحانات کو بہتر طور پر پہچان سکتی ہے اور جعلی سگنل کے اثرات کو کم کرسکتی ہے۔ خاص طور پر 1 گھنٹہ MACD رجحانات کی تصدیق کی خصوصیت ، جو رجحانات کے خلاف تجارت سے بچنے میں مدد کرتی ہے۔
اتار چڑھاؤ کی شرح کے مطابقاے ٹی آر اتار چڑھاؤ کی شرح فلٹر اس بات کو یقینی بناتا ہے کہ حکمت عملی صرف اس وقت داخل ہوتی ہے جب مارکیٹ میں کافی متحرک ہوتا ہے ، اور کم اتار چڑھاؤ والے علاقوں میں تجارت سے گریز کرتا ہے ، جس سے مردہ زون کے جھٹکے کا خطرہ کم ہوجاتا ہے۔
لچکدار انخلا کا نظاماس حکمت عملی میں نہ صرف فکسڈ اسٹاپ نقصانات شامل ہیں ، بلکہ اشارے کے الٹ جانے پر مبنی متحرک باہر نکلنے کا طریقہ بھی شامل ہے ، جس سے منافع کی حفاظت کے لئے بروقت باہر نکلنے کی اجازت ملتی ہے جب قیمت اسٹاپ تک نہیں پہنچتی ہے لیکن مارکیٹ میں الٹنا شروع ہوچکا ہے۔
ڈبل قیمت کی پوزیشن کی تصدیق: قیمتوں کو ایک ہی وقت میں دو ٹائم فریموں VWAP کے اوپر ((زیادہ) یا نیچے ((چھوٹا) ہونے کی ضرورت ہے ، جس سے قیمت کی حرکیات اور سمت کی مزید تصدیق ہوتی ہے ، اور جھوٹے ٹوٹ پھوٹ کو کم کیا جاتا ہے۔
خطرے کا انتظام بلٹ اناس حکمت عملی میں اسٹاپ نقصان اور پوزیشن مینجمنٹ (ڈیفالٹ 5٪ اکاؤنٹ کا حق ہر تجارت پر استعمال ہوتا ہے) شامل ہے ، جس سے ہر تجارت کے خطرے کے نقطہ کو کنٹرول کرنے میں مدد ملتی ہے ، اور سرمایہ کی حفاظت ہوتی ہے۔
کم جیت کا چیلنججیسا کہ کوڈ کے تبصرے میں بتایا گیا ہے ، حکمت عملی کو جیت کی کم شرح کا سامنا کرنا پڑ سکتا ہے۔ اس کی وجہ یہ ہے کہ متعدد شرائط کے فلٹرنگ نے سگنل کے معیار کو بہتر بنایا ، لیکن اس نے تجارت کی فریکوئنسی کو نمایاں طور پر کم کردیا ، جس کی وجہ سے نمونہ کی مقدار کم ہوگئی ، جس کی شماریاتی اہمیت محدود ہوگئی۔
پیرامیٹر کی حساسیت: حکمت عملی میں متعدد ایڈجسٹ پیرامیٹرز استعمال کیے جاتے ہیں ، بشمول MACD لمبائی ، RSI کی حد ، ATR فلٹر پیرامیٹرز وغیرہ۔ ان پیرامیٹرز میں معمولی تبدیلیاں حکمت عملی کی کارکردگی پر نمایاں اثر ڈال سکتی ہیں ، جس میں زیادہ اصلاح کا خطرہ ہے۔
فکسڈ فیصد سٹاپ نقصان کی حد: تمام مارکیٹ کے حالات کے لئے ایک ہی اسٹاپ ((1.5%) اور اسٹاپ ((0.5%) تناسب کا استعمال کریں ، جو مختلف اتار چڑھاؤ والے حالات کے لئے موزوں نہیں ہوسکتا ہے۔ اعلی اتار چڑھاؤ والی مارکیٹوں میں ، اسٹاپ بہت سخت ہوسکتا ہے۔ کم اتار چڑھاؤ والی مارکیٹوں میں ، اسٹاپ بہت دور ہوسکتا ہے۔
ملٹی ٹائم فریم پسماندہ: ایک طویل وقت کے فریم ((جیسے 1 گھنٹہ) کا استعمال کرتے ہوئے سگنل کو تصدیق کے طور پر تاخیر کا سبب بن سکتا ہے، جس میں داخل ہونے کا موقع یا تاخیر سے باہر نکلنے کا موقع ملتا ہے.
مارکیٹ کے ماحول میں موافقت کی کمیاس حکمت عملی میں مارکیٹ کے مختلف حالات ((رجحانات / ہلچل) کے درمیان فرق کرنے کا کوئی طریقہ کار شامل نہیں ہے ، جو کچھ مارکیٹ کے حالات میں خراب کارکردگی کا مظاہرہ کرسکتا ہے۔
حل:
متحرک سٹاپ نقصان کی اصلاح: فکسڈ فیصد اسٹاپ نقصان کو اے ٹی آر پر مبنی متحرک اقدار میں تبدیل کریں ، مثال کے طور پر 1.5x اے ٹی آر کو اسٹاپ کے طور پر استعمال کریں ، 3x اے ٹی آر کو اسٹاپ کے طور پر استعمال کریں۔ اس طرح حکمت عملی کو مختلف مارکیٹ کے اتار چڑھاؤ کے ماحول میں بہتر طور پر ڈھال لیا جاسکتا ہے ، اعلی اتار چڑھاؤ کے اوقات میں زیادہ نرمی سے روکنے کی اجازت دیتا ہے ، اور کم اتار چڑھاؤ کے اوقات میں اسٹاپ ہدف کو سخت کرتا ہے۔
مارکیٹ کے ماحول کی درجہ بندی: مارکیٹ کے ماحول کی شناخت کا ایک طریقہ کار متعارف کرایا گیا ہے ، جس میں ٹرینڈ مارکیٹ اور جھٹکے والی مارکیٹ میں فرق کیا جاسکتا ہے۔ مارکیٹ کی حالت کو شناخت کرنے کے لئے ADX ، بلین بینڈوتھ یا قیمتوں کے ساتھ طویل مدتی منتقل اوسط کے تعلقات کا استعمال کیا جاسکتا ہے ، اور اس کے مطابق حکمت عملی کے پیرامیٹرز کو ایڈجسٹ کیا جاسکتا ہے یا یہاں تک کہ تجارت کی منطق کو مکمل طور پر تبدیل کیا جاسکتا ہے۔
ٹائم لائن کو بہتر بناناموجودہ حکمت عملی: MACD کراسنگ میں ہونے والی موجودہ K لائن میں داخلہ ، ممکنہ طور پر سلائڈ پوائنٹ یا عملدرآمد میں تاخیر کا سامنا کرنا پڑتا ہے۔ کراسنگ کی تصدیق کے بعد اگلے K لائن کے کھلنے پر داخل ہونے پر غور کریں ، یا بہتر عملدرآمد کی قیمت حاصل کرنے کے لئے مخصوص قیمت کے علاقے میں داخل ہونے کی حد مقرر کریں۔
وقت فلٹر: ٹریڈنگ ٹائم فلٹرز کو شامل کریں ، خاص طور پر غیر موثر ٹریڈنگ کے اوقات سے گریز کریں۔ مثال کے طور پر ، ایشیائی ٹائم لائن کے اختتام پر یا یوروپی اور امریکی ٹرانسمیشن ٹائم کے دوران تجارت سے گریز کیا جاسکتا ہے ، جہاں لیکویڈیٹی کم یا غیر منظم ہوسکتی ہے۔
انڈیکس پیرامیٹرز خود کو اپنانے: MACD ، RSI اور ATR کے پیرامیٹرز کو خود بخود ایڈجسٹ کرنے کے لئے ڈیزائن کیا گیا ہے ، جو حالیہ مارکیٹ میں اتار چڑھاؤ یا متواتر خود کار طریقے سے ایڈجسٹمنٹ پر مبنی ہے۔ مثال کے طور پر ، اعلی اتار چڑھاؤ والی مارکیٹ میں مختصر MACD پیرامیٹرز استعمال کیے جاسکتے ہیں اور کم اتار چڑھاؤ والی مارکیٹ میں طویل پیرامیٹرز استعمال کیے جاسکتے ہیں۔
سگنل طاقت درجہ بندی: داخلہ سگنل کے لئے طاقت کا درجہ بندی کا نظام قائم کریں ، جس میں سگنل کو متعدد عوامل (جیسے MACD کالم سائز ، RSI انحراف ، VWAP فاصلہ وغیرہ) کی بنیاد پر اسکور کیا جائے ، اور صرف ان تجارتوں کو انجام دیا جائے جن کی طاقت کسی خاص حد سے زیادہ ہو ، یا سگنل کی طاقت کے مطابق پوزیشن کا سائز تبدیل کریں۔
مشین سیکھنے میں اضافہ: مشین لرننگ ماڈل متعارف کرانے کے لئے پیش گوئی کرنے کے لئے کہ کون سے سگنل زیادہ منافع بخش تجارت پیدا کرنے کا امکان رکھتے ہیں ، تاریخی اعداد و شمار کے تربیت یافتہ ماڈل کی بنیاد پر سب سے زیادہ قیمتی پیٹرن مجموعہ کی شناخت کریں۔ اس سے حکمت عملی کی موافقت اور جیت کی شرح میں اضافہ ہوسکتا ہے۔
ان اصلاحات کا مقصد حکمت عملی کی استحکام ، موافقت اور طویل مدتی کارکردگی کو بہتر بنانا ہے ، جبکہ اس کے بنیادی منطق کو برقرار رکھنا ہے۔ ان بہتریوں کے ذریعہ ، حکمت عملی کو مختلف مارکیٹ کے ماحول اور حالات میں تبدیلیوں کا بہتر انداز میں جواب دیا جاسکتا ہے۔
کثیر ٹائم فریم MACD-RSI کراس اتار چڑھاؤ کی شرح کو فلٹر کرنے والی تجارتی حکمت عملی ایک ڈیزائن کردہ جامع تجارتی نظام ہے جو متعدد تکنیکی اشارے اور متعدد ٹائم فریموں کے اشارے کو ملا کر اعلی معیار کے تجارتی مواقع کی نشاندہی کرتا ہے۔ اس حکمت عملی کا بنیادی فائدہ اس کے کثیر سطحی سگنل کی تصدیق کے طریقہ کار اور بلٹ ان رسک مینجمنٹ کی خصوصیات میں ہے جو اسے قیمت میں اتار چڑھاؤ کو پکڑنے کے ساتھ ساتھ خطرے کو کنٹرول کرنے کی اجازت دیتا ہے۔
کم جیت کی شرح کے چیلنجوں کے باوجود ، حکمت عملی نے اوسط منافع بخش تجارت کی آمدنی میں اضافہ کرکے مثبت توقعات کو برقرار رکھا ہے۔ حکمت عملی کی کارکردگی کو مزید بہتر بنانے کے لئے تجویز کردہ اصلاحاتی اقدامات ، خاص طور پر متحرک اسٹاپ نقصان ، مارکیٹ کے ماحول کی درجہ بندی اور سگنل کی طاقت کی درجہ بندی کو نافذ کرنے کی امید ہے۔
یہ حکمت عملی درمیانی اور قلیل مدتی تاجروں کے لئے موزوں ہے ، خاص طور پر ان لوگوں کے لئے جو تکنیکی تجزیہ پر مبنی نظام سازی کا طریقہ کار ڈھونڈتے ہیں اور جو خطرے کے انتظام کو اہمیت دیتے ہیں۔ حکمت عملی کے کثیر شرائط کی توثیق کا طریقہ کار ہر تجارت کے معیار کو بڑھاتا ہے ، حالانکہ اس کی تجارت کی فریکوئنسی کم ہوتی ہے ، جو کم سے کم زیادہ ہے کے ٹریڈنگ فلسفے کے مطابق ہے ، جس میں مقدار پر نہیں بلکہ معیار پر زور دیا گیا ہے۔
عملی استعمال میں ، یہ تجویز کیا جاتا ہے کہ تاجر اس حکمت عملی کو پہلے ایک تخلیقی ماحول میں جانچیں ، خاص طور پر مختلف اصلاحاتی اقدامات کی تاثیر کی جانچ کریں ، اور پھر احتیاط سے اسے حقیقی تجارت پر لاگو کریں۔ اس کے ساتھ ہی ، مارکیٹ کے حالات میں تبدیلی کی مسلسل نگرانی اور حکمت عملی کے پیرامیٹرز کو بروقت ایڈجسٹ کرنے سے طویل مدتی مستحکم کارکردگی کو برقرار رکھنے میں مدد ملے گی۔
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-08 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/
// © GentlemanOfTrading
//@version=6
strategy(title = "ETH Day Trader", overlay = true, margin_long = 100, margin_short = 100, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)
// ==== 1) USER INPUTS ====
// MACD/RSI lengths
fastLen = input.int(12, title="MACD Fast EMA Length", minval=1)
slowLen = input.int(26, title="MACD Slow EMA Length", minval=1)
signalLen = input.int(9, title="MACD Signal EMA Length", minval=1)
rsiLen = input.int(14, title="RSI Length", minval=1)
// RSI thresholds
rsiThreshLong30 = input.int(55, title="RSI30m > (Long)", minval=1, maxval=100)
rsiThreshShort30= input.int(45, title="RSI30m < (Short)", minval=1, maxval=100)
rsiThresh1h = input.int(50, title="RSI1h Threshold", minval=1, maxval=100)
// ATR filter (30m)
atrLen = input.int(14, title="ATR Length (30m)", minval=1)
atrMaLen = input.int(20, title="ATR MA Length (30m)", minval=1)
// Take Profit / Stop Loss (percent)
tpPerc = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100
slPerc = input.float(0.5, title="Stop Loss (%)", minval=0.1) / 100
// Toggle whether to use 1h trend confirmation
use1hTrend = input.bool(true, title="Use 1h MACD Trend Confirmation?")
// ==== 2) FETCH INDICATORS ON 30m ====
// We assume this script is applied on a chart ≤ 30m (e.g. 15m or 5m),
// but if you apply it on a 30m chart it still works: security() with "30" just returns the same bar.
[macd30m, macdSig30m, _] = ta.macd(close, fastLen, slowLen, signalLen)
rsi30m = ta.rsi(close, rsiLen)
atr30m = ta.atr(atrLen)
// ==== 3) FETCH INDICATORS ON 1h & VWAPs via request.security() ====
// --- 1h MACD & RSI ---
[macd1h, macdSig1h, _] = request.security(syminfo.tickerid, "60", ta.macd(close, fastLen, slowLen, signalLen), lookahead=barmerge.lookahead_off)
rsi1h = request.security(syminfo.tickerid, "60", ta.rsi(close, rsiLen), lookahead=barmerge.lookahead_off)
// --- 30m VWAP & 1h VWAP (session VWAP) ---
vwap30m = request.security(syminfo.tickerid, "30", ta.vwap(close), lookahead=barmerge.lookahead_off)
vwap1h = request.security(syminfo.tickerid, "60", ta.vwap(close), lookahead=barmerge.lookahead_off)
// ==== 4) BUILD VOLATILITY FILTER (30m ATR vs ATR MA) ====
atr30m_ma = ta.sma(atr30m, atrMaLen)
volatilityOK = atr30m >= atr30m_ma
// ==== 5) MULTI-TIMEFRAME CROSS CONDITIONS ====
// 30m MACD cross signals
longCross30m = ta.crossover(macd30m, macdSig30m)
shortCross30m = ta.crossunder(macd30m, macdSig30m)
// 1h MACD trend confirmation
macdTrendUp1h = macd1h > macdSig1h
macdTrendDown1h = macd1h < macdSig1h
// ==== 6) ENTRY & EXIT CONDITIONS ====
// LONG ENTRY:
// • 30m MACD crossover
// • 30m RSI > rsiThreshLong30
// • (optionally) 1h MACD line > 1h MACD signal
// • Price > 30m VWAP AND Price > 1h VWAP
// • 30m ATR ≥ 30m ATR MA (volatility filter)
longEntryCond =
longCross30m
and (rsi30m > rsiThreshLong30)
and (close > vwap30m)
and (close > vwap1h)
and volatilityOK
and (use1hTrend ? macdTrendUp1h : true)
// LONG EXIT:
// • fixed TP/SL
// OR • 30m MACD crossunder
// OR • 1h MACD falls below signal (trend flipped)
var float entryPriceLong = na
longExitCond = false
if (strategy.position_size > 0)
// Price-based TP / SL checks
entryPriceLong := nz(entryPriceLong[1], strategy.position_avg_price)
longTPprice = entryPriceLong * (1 + tpPerc)
longSLprice = entryPriceLong * (1 - slPerc)
// check TP/SL first
longExitTP = high >= longTPprice
longExitSL = low <= longSLprice
// fallback: MACD crossunder on 30m OR 1h trend flips
macdTrendFlip1h = macdTrendUp1h and (macd1h < macdSig1h)
macdCross30m = shortCross30m
longExitCond := longExitTP or longExitSL or macdCross30m or macdTrendFlip1h
else
entryPriceLong := na // reset when no position
// SHORT ENTRY:
// • 30m MACD crossunder
// • 30m RSI < rsiThreshShort30
// • (optionally) 1h MACD line < 1h MACD signal
// • Price < 30m VWAP AND Price < 1h VWAP
// • 30m ATR ≥ 30m ATR MA (volatility filter)
shortEntryCond =
shortCross30m
and (rsi30m < rsiThreshShort30)
and (close < vwap30m)
and (close < vwap1h)
and volatilityOK
and (use1hTrend ? macdTrendDown1h : true)
// SHORT EXIT:
// • fixed TP/SL
// OR • 30m MACD crossover
// OR • 1h MACD flips up
var float entryPriceShort = na
shortExitCond = false
if (strategy.position_size < 0)
entryPriceShort := nz(entryPriceShort[1], strategy.position_avg_price)
shortTPprice = entryPriceShort * (1 - tpPerc)
shortSLprice = entryPriceShort * (1 + slPerc)
// check TP/SL first
shortExitTP = low <= shortTPprice
shortExitSL = high >= shortSLprice
macdTrendFlipUp1h = macdTrendDown1h and (macd1h > macdSig1h)
macdCrossUp30m = longCross30m
shortExitCond := shortExitTP or shortExitSL or macdCrossUp30m or macdTrendFlipUp1h
else
entryPriceShort := na // reset when no position
// ==== 7) EXECUTE STRATEGY ORDERS WITH LABELS & ALERTS ====
// — Long Entry —
if (longEntryCond and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
label.new(bar_index, low, text="Buy (LT)", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white, yloc=yloc.belowbar)
alert("Buy (LT)", alert.freq_once_per_bar_close)
// — Long Exit —
if (strategy.position_size > 0 and longExitCond)
strategy.close("Long")
label.new(bar_index, high, text="Sell (LT)", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, yloc=yloc.abovebar)
alert("Sell (LT)", alert.freq_once_per_bar_close)
// — Short Entry —
if (shortEntryCond and strategy.position_size == 0)
strategy.entry("Short", strategy.short)
label.new(bar_index, high, text="Sell (ST)", style=label.style_label_down, color=color.new(color.red, 0), textcolor=color.white, yloc=yloc.abovebar)
alert("Sell (ST)", alert.freq_once_per_bar_close)
// — Short Exit —
if (strategy.position_size < 0 and shortExitCond)
strategy.close("Short")
label.new(bar_index, low, text="Buy (ST)", style=label.style_label_up, color=color.new(color.green, 0), textcolor=color.white, yloc=yloc.belowbar)
alert("Buy (ST)", alert.freq_once_per_bar_close)
// ==== 8) OPTIONAL PLOTTING (for debugging) ====
// We’ve removed any `transp`/`opacity` arguments. Instead, we use `color.new(baseColor, α)`
// for transparency, where α = 0 is fully opaque and α = 255 is fully transparent.
// 30m VWAP
plot(vwap30m, title = "VWAP 30m", color = color.new(color.teal, 80)) // ~31% transparentlinewidth= 1
// 1h VWAP
plot(vwap1h, title = "VWAP 1h", color = color.new(color.fuchsia, 80), linewidth= 1) // ~31% transparent
// 30m ATR vs ATR_MA
plot(atr30m, title = "ATR 30m", color = color.new(color.orange, 80))
plot(atr30m_ma, title = "ATR30m MA", color = color.new(color.yellow, 80))
// 30m MACD Histogram (bars)
plot(macd30m - macdSig30m, title = "MACD Histogram (30m)", style = plot.style_columns, color = (macd30m - macdSig30m >= 0 ? color.new(color.green, 80) : color.new(color.red, 80)))
// 1h MACD Histogram (area)
h1 = request.security(syminfo.tickerid, "60", macd1h - macdSig1h, lookahead=barmerge.lookahead_off)
plot(1, title = "MACD Hist (1h)", style = plot.style_area, color = (h1 >= 0 ? color.new(color.green, 80) : color.new(color.red, 80)))