یہ حکمت عملی QQE (کوئیک خاموش ایکسپوننٹر) اشارے پر مبنی رجحان کے بعد کا نظام ہے ، جس میں متحرک رسک مینجمنٹ میکانزم شامل ہیں۔ حکمت عملی کا بنیادی حصہ QQE تیز اور سست لائنوں کے کراس اوور کے ذریعے مارکیٹ کے رجحانات کو حاصل کرتا ہے ، جبکہ ATR (اوسط حقیقی رینج) کا استعمال کرتے ہوئے متحرک طور پر اسٹاپ نقصان اور فائدہ اٹھانے کی سطح کو بہتر خطرہ-انعام کی تشکیل کے لئے ایڈجسٹ کرتا ہے۔ اس حکمت عملی میں اکاؤنٹ رسک مینجمنٹ اور پوزیشن کنٹرول کی خصوصیات بھی شامل ہیں جو اکاؤنٹ کی ایکویٹی کی بنیاد پر پوزیشن کے سائز کو خود بخود ایڈجسٹ کرتی ہیں۔
اسٹریٹجی میں تین بنیادی ماڈیولز شامل ہیں: سگنل جنریشن ، رسک مینجمنٹ ، اور پوزیشن کنٹرول۔ سگنل جنریشن ماڈیول QQE اشارے پر مبنی ہے ، جس میں RSI کے ایکسپونینشیل موونگ ایوریج (EMA) کے ذریعے فاسٹ لائن (QQEF) کا حساب لگایا جاتا ہے ، اور سست لائن (QQES) کا حساب لگانے کے لئے ATRRSI کو جوڑتا ہے۔ جب QQEF QQES سے اوپر عبور کرتا ہے تو لمبے سگنل پیدا ہوتے ہیں ، اور جب اس سے نیچے عبور کرتا ہے تو مختصر سگنل پیدا ہوتے ہیں۔ رسک مینجمنٹ ماڈیول منافع کو بچانے کے لئے ٹریلنگ اسٹاپس کا اطلاق کرتے ہوئے اسٹاپ نقصان اور منافع لینے کی سطحوں کا متحرک حساب لگانے کے لئے ATR کا استعمال کرتا ہے۔ پوزیشن کنٹرول ماڈیول پہلے سے طے شدہ رسک فیصد اور کرنٹ اکاؤنٹ ایکویٹی کی بنیاد پر پوزیشن سائز کا حساب لگاتا ہے۔
یہ حکمت عملی QQE اشارے کو ایک مکمل تجارتی نظام میں تبدیل کرتی ہے ، جس سے رجحان کی پیروی اور رسک مینجمنٹ کا ایک نامیاتی امتزاج حاصل ہوتا ہے۔ حکمت عملی کا ڈیزائن معقول ہے ، جس میں مضبوط عملی اور توسیع پذیری ہے۔ پیرامیٹر کی مناسب اصلاح اور رسک کنٹرول کے ذریعے ، یہ حکمت عملی مختلف مارکیٹ کے ماحول میں مستحکم کارکردگی برقرار رکھ سکتی ہے۔ تاجروں کو براہ راست تجارت سے پہلے مکمل بیک ٹیسٹنگ اور پیرامیٹر کی اصلاح کرنے کی سفارش کی جاتی ہے۔
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © seckinduran //@version=5 strategy("QQE Strategy with Risk Management", overlay=true) // Girdi Parametreleri src = input(close, title="Source") length = input.int(14, title="RSI Length", minval=1) SSF = input.int(5, title="SF RSI Smoothing Factor", minval=1) riskPercentage = input.float(1.0, title="Risk Percentage per Trade", minval=0.1, maxval=10.0) // Trailing Stop ve Stop Loss Parametreleri stopLossMultiplier = input.float(title="Stop Loss Katsayısı", defval=1.5) takeProfitMultiplier = input.float(title="Take Profit Katsayısı", defval=3) trailStopMultiplier = input.float(title="Trailing Stop Katsayısı", defval=1.5) // QQE Hesaplamaları RSII = ta.ema(ta.rsi(src, length), SSF) TR = math.abs(RSII - RSII[1]) wwalpha = 1 / length WWMA = ta.ema(TR, length) ATRRSI = ta.ema(WWMA, length) QQEF = ta.ema(ta.rsi(src, length), SSF) QUP = QQEF + ATRRSI * 4.236 QDN = QQEF - ATRRSI * 4.236 QQES = 0.0 QQES := QUP < nz(QQES[1]) ? QUP : QQEF > nz(QQES[1]) and QQEF[1] < nz(QQES[1]) ? QDN : QDN > nz(QQES[1]) ? QDN : QQEF < nz(QQES[1]) and QQEF[1] > nz(QQES[1]) ? QUP : nz(QQES[1]) // Çizgileri Görselleştirme plot(QQEF, "FAST", color=color.maroon, linewidth=2) plot(QQES, "SLOW", color=color.blue, linewidth=1) // Alım ve Satım Koşulları longCondition = ta.crossover(QQEF, QQES) // Hızlı çizgi yavaş çizgiyi yukarı keserse shortCondition = ta.crossunder(QQEF, QQES) // Hızlı çizgi yavaş çizgiyi aşağı keserse // ATR Hesaplaması atrValue = ta.atr(14) // ATR hesaplaması burada // Pozisyon Büyüklüğü Hesaplama tradeSize = strategy.equity / close riskSize = (strategy.equity * riskPercentage / 100) / close leverageSize = math.max(1, riskSize) // Negatif değerleri engellemek için doğrulama // Pozisyon Açma if (longCondition) strategy.entry("Buy", strategy.long, qty=leverageSize, stop=close - (atrValue * stopLossMultiplier), limit=close + (atrValue * takeProfitMultiplier), comment="Long Entry") if (shortCondition) strategy.entry("Sell", strategy.short, qty=leverageSize, stop=close + (atrValue * stopLossMultiplier), limit=close - (atrValue * takeProfitMultiplier), comment="Short Entry") // Çıkış Koşulları: Trailing Stop if (strategy.position_size > 0) strategy.exit("Trail Exit Long", from_entry="Buy", trail_price=close - atrValue * trailStopMultiplier, trail_offset=atrValue * stopLossMultiplier, limit=close + atrValue * takeProfitMultiplier) if (strategy.position_size < 0) strategy.exit("Trail Exit Short", from_entry="Sell", trail_price=close + atrValue * trailStopMultiplier, trail_offset=atrValue * stopLossMultiplier, limit=close - atrValue * takeProfitMultiplier) // Pozisyon Kapatma Koşulları if (ta.crossunder(close, QQES)) strategy.close("Buy") // Long pozisyonu kapat if (ta.crossover(close, QQEF)) strategy.close("Sell") // Short pozisyonu kapat // Ekstra Görselleştirme (Trend Renkleri) longFillColor = QQEF > QQES ? color.new(color.green, 80) : na shortFillColor = QQEF < QQES ? color.new(color.red, 80) : na fill(plot1=plot(QQEF, display=display.none), plot2=plot(QQES, display=display.none), color=longFillColor, title="Uptrend Fill") fill(plot1=plot(QQEF, display=display.none), plot2=plot(QQES, display=display.none), color=shortFillColor, title="Downtrend Fill")