یہ حکمت عملی ایک ہائبرڈ سسٹم ہے جس میں رجحان کی پیروی اور سوئنگ ٹریڈنگ کو جوڑتا ہے ، متعدد تکنیکی اشارے کی اسکریننگ اور سخت سرمائے کے انتظام کے ذریعے مستحکم تجارت حاصل کرتا ہے۔ یہ حکمت عملی منافع میں تالا لگانے کے لئے ایک قدم بہ قدم فائدہ اٹھانے کا نقطہ نظر اپناتی ہے جبکہ واپسی کو یقینی بناتے ہوئے رسک کو سنبھالنے کے لئے زیادہ سے زیادہ ڈراؤونگ کنٹرول کا تعین کرتی ہے۔ یہ نظام تجارتی تاثیر کو یقینی بنانے کے لئے حجم ، اے ٹی آر ، اور ای ایم اے کے متعدد فلٹرز کے ساتھ مل کر آر ایس آئی رفتار اشارے اور اے ڈی ایکس رجحان طاقت اشارے کو تجارتی سگنل ٹرگرز کے طور پر استعمال کرتا ہے۔
حکمت عملی کے بنیادی منطق میں مندرجہ ذیل اہم عناصر شامل ہیں:
یہ حکمت عملی ایک جامع تجارتی نظام ہے جو متعدد تکنیکی اشارے اور سخت سرمائے کے انتظام کے ذریعے مستحکم تجارت حاصل کرتا ہے۔ حکمت عملی کے بنیادی فوائد اس کے مکمل رسک کنٹرول سسٹم اور مرحلہ وار منافع لینے کے طریقہ کار میں ہیں ، لیکن عملی درخواست میں مارکیٹ کے حالات کی بنیاد پر بروقت پیرامیٹر ایڈجسٹمنٹ پر توجہ دینے کی ضرورت ہے۔ حکمت عملی کی مزید اصلاح کی جگہ بنیادی طور پر پیرامیٹر متحرک موافقت اور سگنل فلٹرنگ میکانزم کی بہتری میں ہے۔
/*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)