
حکمت عملی ایک رجحان کی پیروی کرنے والا نظام ہے جو QQE (کوئیک کوئٹ ایکسپوننٹ) اشارے پر مبنی ہے، جو ایک متحرک رسک مینجمنٹ میکانزم کے ساتھ مل کر ہے۔ حکمت عملی کا بنیادی مقصد QQE فاسٹ لائن اور سست لائن کے درمیان سے مارکیٹ کے رجحانات کو پکڑنا ہے، اور ATR (ایوریج ٹرو رینج) کا استعمال اسٹاپ نقصان کو متحرک طور پر ایڈجسٹ کرنے اور زیادہ سے زیادہ رسک ریٹرن کنفیگریشن حاصل کرنے کے لیے منافع کی پوزیشن لینا ہے۔ حکمت عملی میں اکاؤنٹ رسک مینجمنٹ اور پوزیشن کنٹرول کے افعال بھی شامل ہیں، جو اکاؤنٹ ایکویٹی کی بنیاد پر کھلی پوزیشنوں کی تعداد کو خود بخود ایڈجسٹ کر سکتے ہیں۔
حکمت عملی میں بنیادی طور پر تین بنیادی ماڈیولز شامل ہیں: سگنل جنریشن، رسک مینجمنٹ اور پوزیشن کنٹرول۔ سگنل جنریشن ماڈیول QQE اشارے پر مبنی ہے یہ تیز لائن (QQEF) حاصل کرنے کے لیے RSI کی ایکسپونینشل موونگ ایوریج (EMA) کا حساب لگاتا ہے، اور ATRRSI کے ساتھ مل کر سست لائن (QQES) کا حساب لگاتا ہے۔ جب 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")