यह रणनीति QQE (Quick Quiet Exponent) संकेतक के आधार पर एक प्रवृत्ति के बाद प्रणाली है, जो गतिशील जोखिम प्रबंधन तंत्र के साथ संयुक्त है। रणनीति का मूल QQE तेज और धीमी लाइनों के क्रॉसओवर के माध्यम से बाजार के रुझानों को पकड़ता है, जबकि एटीआर (औसत सच्ची रेंज) का उपयोग करके गतिशील रूप से अनुकूलित जोखिम-इनाम विन्यास के लिए स्टॉप-लॉस और ले-प्रॉफिट स्तरों को समायोजित करता है। रणनीति में खाता जोखिम प्रबंधन और स्थिति नियंत्रण सुविधाएं भी शामिल हैं जो स्वचालित रूप से खाता इक्विटी के आधार पर स्थिति आकार को समायोजित करती हैं।
रणनीति में तीन मुख्य मॉड्यूल होते हैंः सिग्नल जनरेशन, जोखिम प्रबंधन और स्थिति नियंत्रण। सिग्नल जनरेशन मॉड्यूल QQE संकेतक पर आधारित है, जो आरएसआई के घातीय चलती औसत (ईएमए) के माध्यम से तेजी से रेखा (QQEF) की गणना करता है, और धीमी रेखा (QQES) की गणना करने के लिए एटीआरआरएसआई को जोड़ता है। जब QQEF QQES के ऊपर से गुजरता है, तो लंबे संकेत उत्पन्न होते हैं, और जब यह नीचे से गुजरता है तो छोटे संकेत उत्पन्न होते हैं। जोखिम प्रबंधन मॉड्यूल एटीआर का उपयोग गतिशील रूप से स्टॉप-लॉस और ले-प्रॉफिट स्तरों की गणना करने के लिए करता है, लाभ की सुरक्षा के लिए ट्रैलिंग स्टॉप लागू करता है। स्थिति नियंत्रण मॉड्यूल पूर्व निर्धारित जोखिम प्रतिशत और चालू खाता इक्विटी के आधार पर स्थिति आकार की गणना करता है।
यह रणनीति क्यूक्यूई संकेतक को एक पूर्ण ट्रेडिंग प्रणाली में बदल देती है, जो प्रवृत्ति के बाद और जोखिम प्रबंधन के कार्बनिक संयोजन को प्राप्त करती है। रणनीति डिजाइन उचित है, जिसमें मजबूत व्यावहारिकता और स्केलेबिलिटी है। उचित पैरामीटर अनुकूलन और जोखिम नियंत्रण के माध्यम से, यह रणनीति विभिन्न बाजार वातावरण में स्थिर प्रदर्शन बनाए रख सकती है। व्यापारियों को लाइव ट्रेडिंग से पहले गहन बैकटेस्टिंग और पैरामीटर अनुकूलन करने की सिफारिश की जाती है।
/*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")