यह रणनीति ज्यूरिक मूविंग एवरेज (जेएमए) और आरएसआई संकेतक के क्रॉसिंग द्वारा ट्रेडिंग सिग्नल उत्पन्न करती है। जब जेएमए आरएसआई के ऊपर पार करता है तो यह लंबा हो जाता है और नीचे पार करते समय छोटा हो जाता है। यह रणनीति दो संकेतकों को मिलाकर झूठे संकेतों को फ़िल्टर करने का प्रयास करती है, और जब प्रवृत्ति अधिक स्पष्ट होती है तो व्यापार करती है।
इस रणनीति में मुख्य रूप से दो प्रकार के संकेतकों का उपयोग किया गया हैः
जेएमए संकेतक: पावर गुणकों का उपयोग करते हुए एक चिकनी चलती औसत, कम विलंब और मूल्य परिवर्तनों को पकड़ने में तेज़।
आरएसआई संकेतक: एक सामान्य शक्ति संकेतक जो खरीद/बिक्री गति को दर्शाता है।
जब जेएमए आरएसआई से ऊपर जाता है, तो यह दीर्घकालिक प्रवृत्ति की तुलना में अधिक मजबूत अल्पकालिक अपट्रेंड को इंगित करता है और खरीद संकेत उत्पन्न करता है। जब आरएसआई से नीचे जाता है, तो यह बिक्री संकेत का संकेत देता है।
सिग्नल पर, रणनीति संबंधित दिशा में व्यापार में प्रवेश करती है। जब कीमत पूर्वनिर्धारित लाभ अनुपात तक पहुंचती है या संकेतक विपरीत दिशा में पार करते हैं तो बाहर निकलती है।
समायोज्य जेएमए पैरामीटर विभिन्न अवधियों के अनुकूल हैं।
आरएसआई झूठे पलायनों को फ़िल्टर करता है।
दोहरे संकेतकों का संयोजन झूठे संकेतों को कम करता है।
अंतर्निहित स्टॉप लॉस लॉस नियंत्रण।
लाभ लक्ष्यीकरण के लिए अनुकूलन योग्य लाभ अनुपात।
दोहरी संकेतक संयोजन बहुत कम संकेत उत्पन्न कर सकते हैं. संवेदनशीलता के लिए मापदंडों tweaked कर सकते हैं.
JMA अभी भी देरी है, मोड़ बिंदुओं को याद कर सकते हैं।
गलत स्टॉप लॉस प्लेसमेंट से अधिक नुकसान हो सकता है। उपयुक्त प्लेसमेंट के लिए बैकटेस्ट करना चाहिए।
संकेतकों पर अत्यधिक निर्भरता से झूठे संकेत उत्पन्न हो सकते हैं। यह वॉल्यूम या अस्थिरता फिल्टर जोड़ सकता है।
इष्टतम सेटिंग्स खोजने के लिए JMA पैरामीटर का परीक्षण करें.
बेहतर प्रदर्शन के लिए विभिन्न आरएसआई मापदंडों का प्रयास करें।
अनुकूली स्टॉप के लिए ट्रेलिंग स्टॉप तंत्र जोड़ें।
जीतने वाले ट्रेडों में जोड़ने के रूप में प्रवेश स्थिति आकार को अनुकूलित करें।
केडी, एमएसीडी जैसे अतिरिक्त फ़िल्टर की खोज करें।
यह रणनीति JMA और RSI क्रॉसओवर के साथ प्रवृत्ति का अनुसरण करने में सक्षम है और स्टॉप के माध्यम से जोखिम को सीमित करती है। लेकिन झूठे संकेत संभावित हैं, जिसके लिए मापदंडों और फिल्टर पर आगे अनुकूलन की आवश्यकता होती है। स्टॉप लॉस को बैकटेस्ट सत्यापन की भी आवश्यकता होती है। यह सुधार के लिए जगह के साथ दोहरी संकेतक क्रॉसिंग प्रणाली के लिए एक बुनियादी ढांचा प्रदान करता है।
/*backtest start: 2023-01-01 00:00:00 end: 2023-03-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Stratégie marche le mieux sur du 2 jours strategy("JMA(7,50,RSI) crossing RSI(14,close)", overlay=false, currency=currency.EUR, default_qty_type=strategy.cash, default_qty_value=5000) // Strategy Tester Start Time sYear = input(2019, title = "Start Year") sMonth = input(06, title = "Start Month", minval = 01, maxval = 12) sDay = input(01, title = "Start Day", minval = 01, maxval = 31) sHour = input(00, title = "Start Hour", minval = 00, maxval = 23) sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59) startTime = true // Strategy Tester End Time eYear = input(2019, title = "End Year") eMonth = input(12, title = "End Month", minval = 01, maxval = 12) eDay = input(01, title = "End Day", minval = 01, maxval = 31) eHour = input(00, title = "End Hour", minval = 00, maxval = 23) eMinute = input(00, title = "End Minute", minval = 00, maxval = 59) endTime = true // === RSI === src = close, len = input(14, minval=1, title="Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(rsi, color=color.purple) band1 = hline(70) band0 = hline(30) // === JMA === _length = input(7, title="Length") _phase = input(50, title="Phase") _power = input(2, title="Power") highlightMovements = input(true, title="Highlight Movements ?") // srcJMA = input(rsi, title="Source") srcJMA = rsi phaseRatio = _phase < -100 ? 0.5 : _phase > 100 ? 2.5 : _phase / 100 + 1.5 beta = 0.45 * (_length - 1) / (0.45 * (_length - 1) + 2) alpha = pow(beta, _power) jma = 0.0 e0 = 0.0 e0 := (1 - alpha) * srcJMA + alpha * nz(e0[1]) e1 = 0.0 e1 := (srcJMA - e0) * (1 - beta) + beta * nz(e1[1]) e2 = 0.0 e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1]) jma := e2 + nz(jma[1]) // === End of JMA def === jmaColor = highlightMovements ? (jma > jma[1] ? color.green : color.red) : #6d1e7f plot(jma, title="JMA switch", linewidth=2, color=jmaColor, transp=0) // === Inputs === // risk management useStop = input(true, title = "Use Initial Stop Loss?") goLong() => crossover(rsi, jma) killLong() => crossunder(rsi, jma) // ======= DEBUGGGGGGGG ============ long_price = 0.0 short_price = 0.0 if(startTime and endTime) if(goLong()) long_price := close strategy.entry("Buy", strategy.long, when = goLong()) strategy.close("Buy", when = killLong() and close > long_price) // Shorting if using goShort() => killLong() killShort() => goLong() if(startTime and endTime) if(goShort()) short_price := close strategy.entry("Sell", strategy.short, when = goShort() and close < short_price) strategy.close("Sell", when = killShort()) // ========================= if (useStop) strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08) strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.08)