
یہ حکمت عملی رجحانات کی پیروی اور وقفے وقفے سے تجارت کے ساتھ مل کر ایک خود کار طریقے سے ٹریڈنگ سسٹم ہے۔ یہ متعدد تکنیکی اشارے کے ہم آہنگی کے ساتھ کام کرتا ہے ، مختلف مارکیٹ کے ماحول میں لچکدار تجارت کے موڈ کو تبدیل کرتا ہے۔ حکمت عملی مارکیٹ کی حالت کی شناخت اور تجارتی سگنل کی نشاندہی کرنے کے لئے سپر ٹرینڈ ، موبائل میڈ لائن ، ADX ، RSI اور برلن بینڈ جیسے اشارے کا استعمال کرتی ہے ، جبکہ VWAP کے ساتھ قیمت کا حوالہ دیا جاتا ہے ، اور خطرے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کا طریقہ کار ترتیب دیا گیا ہے۔
حکمت عملی کے بنیادی منطق کو دو حصوں میں تقسیم کیا گیا ہے: رجحانات کی پیروی اور وقفے سے تجارت کرنا۔ رجحانات کی منڈیوں میں ((ADX> 25 کی طرف سے فیصلہ کیا جاتا ہے) ، حکمت عملی سپر ٹرینڈ کی سمت ، EMA کراسنگ اور VWAP پوزیشن پر مبنی سگنل پیدا کرتی ہے۔ چونکانے والی منڈیوں میں ، حکمت عملی بروئنگ بینڈ کی سرحد اور RSI سے زیادہ خرید و فروخت کی سطح پر تجارت کرتی ہے۔ خاص طور پر:
یہ ایک جامع حکمت عملی ہے جو معقول اور منطقی طور پر ڈیزائن کی گئی ہے۔ مختلف مارکیٹ کے حالات میں متعدد اشارے کے تعاون اور موڈل سوئچنگ کے ذریعہ کچھ موافقت برقرار رکھی جاسکتی ہے۔ اگرچہ کچھ ممکنہ خطرات موجود ہیں ، لیکن معقول خطرے پر قابو پانے اور مسلسل اصلاح کے ذریعہ ، اس حکمت عملی میں عملی استعمال کی اچھی قدر ہے۔ عملی استعمال کے وقت مناسب پیرامیٹرز کی اصلاح اور جانچ پڑتال کی سفارش کی جاتی ہے۔
/*backtest
start: 2025-01-27 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Nifty/BankNifty Multi-Strategy v2", overlay=true, margin_long=100, margin_short=100)
// ———— Inputs ———— //
// Supertrend
atrPeriod = input.int(10, "ATR Period")
supertrendMultiplier = input.float(2.0, "Supertrend Multiplier", step=0.1)
// EMA
ema20Period = input.int(20, "20 EMA Period")
ema50Period = input.int(50, "50 EMA Period")
// ADX/DMI
adxThreshold = input.int(25, "ADX Trend Threshold")
adxLength = input.int(14, "ADX Length")
// RSI
rsiLength = input.int(14, "RSI Length")
rsiOverbought = input.int(70, "RSI Overbought")
rsiOversold = input.int(30, "RSI Oversold")
// Bollinger Bands
bbLength = input.int(20, "BB Length")
bbStdDev = input.float(2.0, "BB Std Dev", step=0.1)
// Stop-Loss
stopLossPerc = input.float(1.0, "Stop-Loss %", step=0.1)
// ———— Calculations ———— //
// Supertrend
[supertrend, direction] = ta.supertrend(supertrendMultiplier, atrPeriod)
// EMAs
ema20 = ta.ema(close, ema20Period)
ema50 = ta.ema(close, ema50Period)
// ADX via DMI (corrected)
[dip, din, adx] = ta.dmi(adxLength, adxLength) // ta.dmi(diLength, adxSmoothing)
// RSI
rsi = ta.rsi(close, rsiLength)
// Bollinger Bands
basis = ta.sma(close, bbLength)
upperBB = basis + ta.stdev(close, bbLength) * bbStdDev
lowerBB = basis - ta.stdev(close, bbLength) * bbStdDev
// VWAP
vwapValue = ta.vwap(hlc3)
// ———— Strategy Logic ———— //
trendingMarket = adx > adxThreshold
// Trend-Following Strategy
emaBullish = ema20 > ema50
priceAboveVWAP = close > vwapValue
longConditionTrend = trendingMarket and direction < 0 and emaBullish and priceAboveVWAP
shortConditionTrend = trendingMarket and direction > 0 and not emaBullish and close < vwapValue
// Range-Bound Strategy
priceNearLowerBB = close <= lowerBB
priceNearUpperBB = close >= upperBB
longConditionRange = not trendingMarket and priceNearLowerBB and rsi < rsiOversold
shortConditionRange = not trendingMarket and priceNearUpperBB and rsi > rsiOverbought
// ———— Entries/Exits ———— //
if (longConditionTrend or longConditionRange)
strategy.entry("Long", strategy.long)
stopPriceLong = strategy.position_avg_price * (1 - stopLossPerc / 100)
strategy.exit("Exit Long", "Long", stop=stopPriceLong)
if (shortConditionTrend or shortConditionRange)
strategy.entry("Short", strategy.short)
stopPriceShort = strategy.position_avg_price * (1 + stopLossPerc / 100)
strategy.exit("Exit Short", "Short", stop=stopPriceShort)
// Exit on Supertrend flip or RSI extremes
if (direction > 0 or rsi >= rsiOverbought)
strategy.close("Long")
if (direction < 0 or rsi <= rsiOversold)
strategy.close("Short")
// ———— Visualization ———— //
plot(supertrend, "Supertrend", color = direction < 0 ? color.green : color.red)
plot(ema20, "20 EMA", color.blue)
plot(ema50, "50 EMA", color.orange)
plot(vwapValue, "VWAP", color.purple)
plot(upperBB, "Upper BB", color.gray)
plot(lowerBB, "Lower BB", color.gray)