
یہ حکمت عملی ایک ہائبرڈ حکمت عملی کا نظام ہے جس میں رجحانات کی پیروی اور جھٹکے کی تجارت شامل ہے ، جس میں متعدد تکنیکی اشارے کے فلٹرنگ اور سخت فنڈ مینجمنٹ کے ذریعہ مستحکم تجارت حاصل کی جاتی ہے۔ حکمت عملی منافع کو روکنے کے لئے مرحلہ وار اسٹاپ کا استعمال کرتی ہے ، جبکہ زیادہ سے زیادہ واپسی کے کنٹرول کا تعین کرتی ہے اور منافع کی ضمانت دیتے ہوئے خطرے کو بھی کنٹرول کرتی ہے۔ نظام آر ایس آئی حرکیات کے اشارے اور اے ڈی ایکس رجحان کی طاقت کے اشارے کو بنیادی تجارتی سگنل کے طور پر استعمال کرتا ہے ، اور تجارت کی مقدار ، اے ٹی آر اور ای ایم اے جیسے متعدد فلٹرز کے ساتھ مل کر تجارت کی تاثیر کو یقینی بناتا ہے۔
حکمت عملی کی بنیادی منطق میں درج ذیل کلیدی عناصر شامل ہیں:
یہ حکمت عملی ایک جامع تجارتی نظام ہے جس میں متعدد تکنیکی اشارے اور سخت فنڈ مینجمنٹ کے ذریعہ مستحکم تجارت کی جاتی ہے۔ اس حکمت عملی کا بنیادی فائدہ اس کے مکمل رسک کنٹرول سسٹم اور مرحلہ وار روکنے کے طریقہ کار میں ہے ، لیکن اس کے ساتھ ہی عملی استعمال میں مارکیٹ کی صورتحال کے مطابق پیرامیٹرز کی ترتیب کو ایڈجسٹ کرنے پر بھی توجہ دی جانی چاہئے۔ حکمت عملی میں مزید اصلاح کی گنجائش بنیادی طور پر پیرامیٹرز کی متحرک موافقت اور سگنل فلٹرنگ میکانزم میں بہتری میں ہے۔
/*backtest
start: 2023-12-20 00:00:00
end: 2024-12-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Swing Strategy (<30% DD)", shorttitle="SwingStratDD", overlay=true)
//-----------------------------------------------------
// Example Indicators and Logic
//-----------------------------------------------------
emaLen = input.int(200, "EMA Length", minval=1)
emaValue = ta.ema(close, emaLen)
plot(emaValue, color=color.yellow, linewidth=2, title="EMA 200")
//-----------------------------------------------------
// User Inputs
//-----------------------------------------------------
adxLen = input.int(14, "ADX Length", minval=1)
rsiLen = input.int(14, "RSI Length", minval=1)
atrLen = input.int(14, "ATR Length", minval=1)
rsiBuyThresh = input.float(60, "RSI Buy Threshold", minval=1, maxval=100)
adxThresh = input.float(25, "ADX Threshold (Trend)", minval=1, maxval=100)
minVolume = input.float(1e6,"Minimum Volume", minval=1)
minATR = input.float(2, "Minimum ATR(14)", minval=0.1, step=0.1)
stopLossPerc = input.float(15, "Stop-Loss %", minval=0.1, step=0.1)
// We’ll do two partial take-profit levels to aim for consistent cashflow:
takeProfit1Perc = input.float(15, "Take-Profit1 %", minval=0.1, step=0.1)
takeProfit2Perc = input.float(30, "Take-Profit2 %", minval=0.1, step=0.1)
ddLimit = input.float(30, "Max Drawdown %", minval=0.1, step=0.1)
//-----------------------------------------------------
// Indicators
//-----------------------------------------------------
rsiValue = ta.rsi(close, rsiLen)
atrValue = ta.atr(atrLen)
//--- Fully Manual ADX Calculation ---
upMove = high - high[1]
downMove = low[1] - low
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0.0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0.0
smPlusDM = ta.rma(plusDM, adxLen)
smMinusDM = ta.rma(minusDM, adxLen)
smTR = ta.rma(ta.tr, adxLen)
plusDI = (smPlusDM / smTR) * 100
minusDI = (smMinusDM / smTR) * 100
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adxValue = ta.rma(dx, adxLen)
//-----------------------------------------------------
// Screener-Like Conditions (Technical Only)
//-----------------------------------------------------
volumeCondition = volume > minVolume
adxCondition = adxValue > adxThresh
rsiCondition = rsiValue > rsiBuyThresh
atrCondition = atrValue > minATR
aboveEmaCondition = close > emaValue
longCondition = volumeCondition and adxCondition and rsiCondition and atrCondition and aboveEmaCondition
//-----------------------------------------------------
// Strategy Entry / Exit Logic
//-----------------------------------------------------
var bool inTrade = false
// Entry
if longCondition and not inTrade
strategy.entry("Long", strategy.long)
// Basic Exit Condition: RSI < 50 or Price < EMA
exitCondition = (rsiValue < 50) or (close < emaValue)
if inTrade and exitCondition
strategy.close("Long")
// Update inTrade status
inTrade := strategy.position_size > 0
//-----------------------------------------------------
// Multi-Level Stop-Loss & Partial Profits
//-----------------------------------------------------
if inTrade
float entryPrice = strategy.position_avg_price
// Stop-Loss
float stopPrice = entryPrice * (1 - stopLossPerc / 100)
// Two partial take-profit levels
float tp1Price = entryPrice * (1 + takeProfit1Perc / 100)
float tp2Price = entryPrice * (1 + takeProfit2Perc / 100)
// Example approach: exit half at TP1, half at TP2
strategy.exit("TP1/SL", from_entry="Long", stop=stopPrice, limit=tp1Price, qty_percent=50)
strategy.exit("TP2", from_entry="Long", limit=tp2Price, qty_percent=50)
//-----------------------------------------------------
// Dynamic Drawdown Handling
//-----------------------------------------------------
var float peakEquity = strategy.equity
peakEquity := math.max(peakEquity, strategy.equity)
currentDrawdownPerc = (peakEquity - strategy.equity) / peakEquity * 100
if currentDrawdownPerc > ddLimit
strategy.close_all("Max Drawdown Exceeded")
//-----------------------------------------------------
// Plotting
//-----------------------------------------------------
plot(emaValue, title="EMA 200", color=color.yellow, linewidth=2)
plotchar(rsiValue, title="RSI", char='●', location=location.bottom, color=color.new(color.teal, 50))
plot(adxValue, title="Manual ADX", color=color.orange)