
ای ایم اے کراسنگ اور بولنگر بینڈ ڈبل انٹری حکمت عملی ایک مقداری تجارتی نظام ہے جو رجحان سے باخبر رہنے اور اتار چڑھاؤ کے خلاف ورزیوں کو جوڑتا ہے۔ یہ حکمت عملی بنیادی طور پر مارکیٹ کے رجحانات کا تعین کرنے کے لئے اشاریہ کی حرکت پذیری اوسط ((ای ایم اے) کے کراسنگ کا استعمال کرتی ہے ، جبکہ بولنگر بینڈ ((بولنگر بینڈ) کا استعمال کرتے ہوئے ممکنہ توڑنے کے مواقع کی نشاندہی کرتی ہے۔ اس طریقہ کار کا مقصد مارکیٹ کے مضبوط رجحانات کو پکڑنا ہے اور بولنگر بینڈ کے ذریعے اضافی داخلہ فراہم کرنا ہے ، جس سے تجارت کے مواقع میں اضافہ ہوتا ہے اور فنڈ مینجمنٹ کو بہتر بنایا جاتا ہے۔
ای ایم اے کراسنگ: حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے 12 اور 26 سائیکل ای ایم اے کا استعمال کرتی ہے۔ جب تیز رفتار ای ایم اے ((12 سائیکل) پر سست رفتار ای ایم اے ((26 سائیکل) سے گزرتا ہے تو ، ایک کثیر سگنل پیدا ہوتا ہے۔ اس کے برعکس ، ایک خالی سگنل پیدا ہوتا ہے۔
برین بینڈ: حکمت عملی 55 سائیکل کا استعمال کرتی ہے ، برین بینڈ کی ترتیب 0.9 معیاری فرق ہے۔ جب قیمت ٹریک سے ٹکرا جاتی ہے تو ، اگر یہ پہلے ہی ایک کثیر جہتی رجحان میں ہے تو ، اضافی داخلے کا موقع فراہم کیا جاتا ہے۔
ان پٹ منطق:
باہر نکلنے کی منطق:
سٹاپ نقصان کی ترتیبات:
رسک مینجمنٹ:
کثیر جہتی تجزیہ: رجحان کی پیروی (EMA) اور اتار چڑھاؤ کی توڑ (برن بینڈ) کی حکمت عملی کے ساتھ مل کر ، تجارتی سگنل کی وشوسنییتا میں اضافہ ہوا۔
لچکدار داخلے کا طریقہ کار: بنیادی ای ایم اے کراس سگنل کے علاوہ ، برن بینڈ کی توڑ کا استعمال کرتے ہوئے اضافی داخلے کے مواقع فراہم کرنا ، حکمت عملی کی موافقت میں اضافہ کرنا۔
متحرک رسک مینجمنٹ: اے ٹی آر کا استعمال اسٹاپ نقصانات کو قائم کرنے اور پوزیشن سائز کو ایڈجسٹ کرنے کے لئے کیا جاتا ہے تاکہ حکمت عملی مختلف مارکیٹ کے حالات میں اتار چڑھاؤ کو بہتر طور پر اپنائے۔
مارکیٹ کی حالت کا احساس: مارکیٹ کی حالت کا اندازہ لگانے کے لئے برن بینڈ کے وسط میں ، منفی حالات میں تجارت کو روکنے کا انتخاب کریں ، اور خطرہ کم کریں۔
فنڈ مینجمنٹ کی اصلاح: فیصد رسک مینجمنٹ اور اے ٹی آر کے ذریعے پوزیشن کی سائز کو متحرک طور پر ایڈجسٹ کرنے کے ذریعے ، فنڈ کا زیادہ ٹھیک کنٹرول حاصل کریں۔
مضبوط مرضی کے مطابق: متعدد پیرامیٹرز کو ایڈجسٹ کیا جاسکتا ہے ، جیسے ای ایم اے کی مدت ، برلن بینڈ کی ترتیب ، اے ٹی آر ضرب ، وغیرہ ، تاکہ حکمت عملی مختلف قسم کے تجارت اور مارکیٹ کے ماحول کے مطابق ہو۔
رجحان کے الٹ جانے کا خطرہ: مضبوط رجحان کے بازاروں میں اچھی کارکردگی کا مظاہرہ کرنا ، لیکن ہلچل والے بازاروں میں اکثر جھوٹے بریک سگنل ہوسکتے ہیں۔
زیادہ تجارت کا خطرہ: برین بینڈ کی خرابی کے نتیجے میں بہت زیادہ تجارتی سگنل ہوسکتے ہیں ، جس سے تجارت کی لاگت میں اضافہ ہوتا ہے۔
سلائڈ پوائنٹ کا خطرہ: انتہائی اتار چڑھاؤ والے بازاروں میں ، داخلے اور باہر نکلنے کی قیمتوں میں توقع سے زیادہ انحراف ہوسکتا ہے۔
پیرامیٹر حساسیت: حکمت عملی کی کارکردگی پیرامیٹرز کی تبدیلیوں جیسے ای ایم اے کی مدت ، برلن بینڈ کی ترتیب وغیرہ سے حساس ہوسکتی ہے ، جس میں محتاط اصلاح اور جانچ پڑتال کی ضرورت ہے۔
مارکیٹ کے ماحول پر انحصار: حکمت عملی مختلف مارکیٹ کے ادوار اور اتار چڑھاؤ کے ماحول میں متضاد کارکردگی کا مظاہرہ کر سکتی ہے۔
فنڈ مینجمنٹ رسک: اگرچہ فیصد رسک مینجمنٹ کا استعمال کیا جاتا ہے ، لیکن مسلسل نقصانات کی صورت میں بڑے اکاؤنٹ کی واپسی کا سامنا کرنا پڑ سکتا ہے۔
ملٹی ٹائم فریم تجزیہ: غلط سگنل کو کم کرنے کے لئے طویل عرصے تک رجحان کی تصدیق ، جیسے گھڑی یا چاند ای ایم اے متعارف کروائیں۔
اتار چڑھاؤ فلٹر: کم اتار چڑھاؤ کے ماحول میں برن بینڈ پیرامیٹرز کو ایڈجسٹ کریں یا افقی مارکیٹ میں زیادہ تجارت سے بچنے کے لئے تجارت کو روک دیں۔
رجحان کی طاقت اور ممکنہ الٹ اشارے کی تصدیق کے لئے متحرک اشارے شامل کریں ، جیسے RSI یا MACD
آؤٹ پٹ میکانیزم کو بہتر بنائیں: منافع کو بہتر طور پر لاک کرنے کے لئے اسٹاپ نقصان یا اے ٹی آر پر مبنی متحرک منافع کے اہداف کا استعمال کرنے پر غور کریں۔
مارکیٹ کی حالت کی درجہ بندی: مارکیٹ کے ماحول کی درجہ بندی کا ایک نظام تیار کریں ، جس میں مختلف مارکیٹ کی حالت میں مختلف پیرامیٹرز کی ترتیبات کا استعمال کیا جائے۔
مشین لرننگ کی اصلاح: مختلف مارکیٹ کے حالات کے مطابق حکمت عملی کے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنے کے لئے مشین لرننگ الگورتھم کا استعمال کریں۔
وابستگی کا تجزیہ: کثیر قسم کے تجارت میں ، مجموعی طور پر پورٹ فولیو کے خطرے سے متعلق فوائد کی خصوصیات کو بہتر بنانے کے لئے مختلف قسم کے مابین وابستگی کو مدنظر رکھنا۔
بنیادی عوامل متعارف کروائیں: اسٹاک یا اجناس کے لئے ، متعلقہ بنیادی اشارے شامل کرنے پر غور کریں ، تاکہ انٹری سگنل کی کیفیت کو بہتر بنایا جاسکے
ای ایم اے کراس اور بورن بینڈ ڈبل انٹری اسٹریٹجی ایک مقداری تجارتی نظام ہے جس میں رجحانات کی پیروی اور اتار چڑھاؤ کے خلاف ورزی کے تصورات کو ملا دیا گیا ہے۔ یہ ای ایم اے کراس کے ذریعہ اہم رجحانات کو پکڑتا ہے اور بورن بینڈ کے خلاف ورزیوں کا استعمال کرتے ہوئے اضافی داخلے کے مواقع فراہم کرتا ہے ، جبکہ متحرک رسک مینجمنٹ کے طریقوں کو استعمال کرتے ہوئے فنڈز کے استعمال کو بہتر بناتا ہے۔ اس حکمت عملی کا فائدہ اس کے کثیر جہتی تجزیاتی طریقہ کار اور لچکدار رسک مینجمنٹ میں ہے ، لیکن اس میں رجحانات کی واپسی اور حد سے زیادہ تجارت جیسے خطرات کا بھی سامنا کرنا پڑتا ہے۔
اس حکمت عملی میں کثیر ٹائم فریم تجزیہ ، اتار چڑھاؤ کی شرح فلٹرنگ ، حرکیاتی اشارے شامل کرنے وغیرہ کے ذریعہ بہت زیادہ اصلاح کی گنجائش ہے۔ خاص طور پر مشین لرننگ الگورتھم اور مارکیٹ اسٹیٹ درجہ بندی کا نظام متعارف کرانے سے حکمت عملی کی موافقت اور استحکام میں نمایاں اضافہ ہوسکتا ہے۔ تاہم ، عملی استعمال میں ، پھر بھی جامع بیک اپ اور فارورڈ ٹیسٹنگ کی ضرورت ہے ، اور مخصوص تجارتی اقسام اور مارکیٹ کے ماحول کے مطابق پیچیدہ پیرامیٹرز کو ایڈجسٹ کرنا ہے۔
مجموعی طور پر ، یہ ایک ڈیزائن کردہ ، معقول ، اور ممکنہ طور پر مقدار میں تجارت کی حکمت عملی کا فریم ورک ہے۔ مسلسل اصلاح اور محتاط انتظام کے ذریعہ ، اس میں ایک مستحکم تجارتی نظام بننے کی صلاحیت موجود ہے ، جو رجحانات کو پکڑنے کے ساتھ ساتھ خطرے پر قابو پانے کے خواہاں سرمایہ کاروں کے لئے موزوں ہے۔
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover with BB Double Entry", overlay=true, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=100)
// Input parameters
fastLength = input.int(12, "Fast EMA Length")
slowLength = input.int(26, "Slow EMA Length")
atrPeriod = input.int(14, "ATR Period")
atrMultiplier = input.float(1.0, "ATR Multiplier")
useATRStopLoss = input.bool(true, "Use ATR Stop Loss")
stopLossDays = input.int(5, "Number of days for stop loss", minval=1, maxval=50)
riskPerTrade = input.float(3.0, "Risk per trade (%)", minval=0.1, maxval=5, step=0.1)
bbRiskPerTrade = input.float(1.5, "Risk for BB breakout trade (%)", minval=0.1, maxval=5, step=0.1)
// Bollinger Bands parameters
bbLength = input.int(55, "BB Length")
bbMult = input.float(0.9, "BB Standard Deviation")
useBBPauseResume = input.bool(false, "Use BB for Pause/Resume trading")
// Backtesting dates
startDate = input(timestamp("2020-01-01"), "Start Date")
endDate = input(timestamp("9999-12-31"), "End Date")
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Calculate ATR
atr = ta.atr(atrPeriod)
// Calculate Bollinger Bands
bbBasis = ta.sma(close, bbLength)
bbDev = bbMult * ta.stdev(close, bbLength)
bbUpper = bbBasis + bbDev
bbLower = bbBasis - bbDev
// Define trading conditions
longCondition = ta.crossover(fastEMA, slowEMA)
shortCondition = ta.crossunder(fastEMA, slowEMA)
bullish = fastEMA > slowEMA
bearish = fastEMA < slowEMA
// Bollinger Bands breakout
bbBreakout = close > bbUpper and close[1] <= bbUpper[1]
// Calculate lowest low for stop loss
lowestLow = ta.lowest(low, stopLossDays)
// Variables to store entry price and stop loss
var float entryPrice = na
var float stopLoss = na
var bool inPosition = false
var bool pauseTrading = false
// Entry logic
entryConditions = (longCondition or (bbBreakout and bullish)) and
(not useBBPauseResume or close > bbBasis) and
not pauseTrading
if entryConditions and not inPosition
entryPrice := close
atrStopLoss = close - (atr * atrMultiplier)
lowStopLoss = lowestLow
stopLoss := useATRStopLoss ? atrStopLoss : lowStopLoss
riskAmount = strategy.equity * (riskPerTrade / 100)
positionSize = riskAmount / (close - stopLoss)
strategy.entry("Long", strategy.long, qty=positionSize)
inPosition := true
pauseTrading := false
alert("BUY," + syminfo.ticker + ",EntryPrice=" + str.tostring(close) + ",StopLoss=" + str.tostring(stopLoss) + ",PositionSize=" + str.tostring(positionSize), alert.freq_once_per_bar_close)
// Additional entry on BB breakout
if inPosition and bbBreakout and bullish and (not useBBPauseResume or close > bbBasis)
bbRiskAmount = strategy.equity * (bbRiskPerTrade / 100)
bbPositionSize = bbRiskAmount / (close - stopLoss)
strategy.entry("Long_BB", strategy.long, qty=bbPositionSize)
alert("ADD," + syminfo.ticker + ",EntryPrice=" + str.tostring(close) + ",StopLoss=" + str.tostring(stopLoss) + ",PositionSize=" + str.tostring(bbPositionSize), alert.freq_once_per_bar_close)
// Exit logic
if shortCondition or (useBBPauseResume and inPosition and close < bbBasis)
if shortCondition
strategy.close_all(comment="EMA Crossdown")
inPosition := false
pauseTrading := false
alert("SELL," + syminfo.ticker + ",Reason=EMA_Crossdown", alert.freq_once_per_bar_close)
else if useBBPauseResume
strategy.close_all(comment="Close under BB basic")
pauseTrading := true
alert("SELL," + syminfo.ticker + ",Reason=Below_BB_Basic", alert.freq_once_per_bar_close)
entryPrice := na
stopLoss := na
// Resume trading if price closes above BB basic
if useBBPauseResume and pauseTrading and close > bbBasis
pauseTrading := false
alert("RESUME," + syminfo.ticker, alert.freq_once_per_bar_close)
// Stop loss
if strategy.position_size > 0
strategy.exit("Stop Loss", "Long", stop=stopLoss)
strategy.exit("Stop Loss", "Long_BB", stop=stopLoss)
if close <= stopLoss
alert("SELL," + syminfo.ticker + ",Reason=Stop_Loss", alert.freq_once_per_bar_close)
// Plotting
plot(fastEMA, color=color.new(color.blue, 0), title="Fast EMA")
plot(slowEMA, color=color.new(color.red, 0), title="Slow EMA")
plot(bbUpper, color=color.new(color.green, 50), title="BB Upper")
plot(bbLower, color=color.new(color.green, 50), title="BB Lower")
plot(bbBasis, color=color.new(color.yellow, 50), title="BB Basic")
plot(strategy.position_size > 0 ? stopLoss : na, color=color.red, style=plot.style_cross, linewidth=2, title="Stop Loss")
// Alert conditions
alertcondition(entryConditions, title="Buy Alert", message="Buy {{ticker}}")
alertcondition(bbBreakout and inPosition and bullish and (not useBBPauseResume or close > bbBasis), title="Add Position Alert", message="Add Position {{ticker}}")
alertcondition(shortCondition, title="Sell Alert (EMA)", message="Sell {{ticker}} (EMA crossdown)")
alertcondition(useBBPauseResume and inPosition and close < bbBasis, title="Pause Alert", message="Pause trading {{ticker}} (Close under BB basic)")
alertcondition(useBBPauseResume and pauseTrading and close > bbBasis, title="Resume Alert", message="Resume trading {{ticker}} (Close above BB basic)")