यह रणनीति मूल्य रुझानों और ओवरबॉट/ओवरसोल्ड स्थितियों को निर्धारित करने के लिए वेवट्रेंड संकेतक का उपयोग करती है। यह संकेतों को फ़िल्टर करने के लिए आरएसआई संकेतक को जोड़ती है और ओवरबॉट/ओवरसोल्ड स्तरों पर काउंटर-ट्रेंड ऑपरेशन करने के लिए ट्रेंड ट्रैकिंग विधि को अपनाती है।
रणनीति मूल्य प्रवृत्ति दिशा निर्धारित करने के लिए वेवट्रेंड संकेतक का उपयोग करती है। वेवट्रेंड संकेतक को इंद्रधनुष संकेतक के आधार पर सुधार किया गया है। यह हेकिन-अशी चलती औसत और मूल्य के पूर्ण मूल्य के बीच अंतर की गणना करके मूल्य प्रवृत्ति दिशा का न्याय करता है। यह ओवरबॉट / ओवरसोल्ड स्थितियों का निर्धारण करने के लिए आरएसआई संकेतक को जोड़कर ट्रेडिंग संकेत उत्पन्न करता है।
विशेष रूप से, रणनीति में वेवट्रेंड सूत्र हैः
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)
जहां esa गणना की गई हेकिन-अशी चलती औसत है, d हेकिन-अशी चलती औसत और मूल्य के पूर्ण मूल्य के बीच अंतर का औसत है। ci तथाकथित अनुकूलन सीमा है, जो कीमतों की अस्थिरता को दर्शाती है। wt ci का चलती औसत है, जो मूल्य प्रवृत्ति की दिशा निर्धारित करता है और लंबे और छोटे के लिए प्रमुख संकेतक है।
आरएसआई सूचक का उपयोग ओवरबॉट/ओवरसोल्ड स्थितियों को निर्धारित करने के लिए किया जाता है। कोड में आरएसआई गणना सूत्र हैः
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))
इसका मानक मूल्य 0 से 100 है। 70 से ऊपर अधिक खरीदा जाता है और 30 से नीचे अधिक बेचा जाता है।
इन दो संकेतकों के साथ संयुक्त, जब आरएसआई 25 से नीचे है और वेवट्रेंड -60 से नीचे है, तो यह लंबे समय तक जाने के लिए ओवरसोल्ड है। जब आरएसआई 75 से ऊपर है और वेवट्रेंड 60 से ऊपर है, तो यह शॉर्ट जाने के लिए ओवरबॉट है।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
कुछ जोखिम भी हैं:
समाधान:
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
सिग्नल की सटीकता में सुधार के लिए निर्णय संकेतकों को बदलें या जोड़ें, जैसे कि एमएसीडी, केडी आदि।
विभिन्न उत्पादों को अनुकूलित करने के लिए पैरामीटर सेटिंग्स को अनुकूलित करें, उदाहरण के लिए चिकनी अवधि को समायोजित करें।
एकल हानि को नियंत्रित करने के लिए ट्रैकिंग स्टॉप लॉस रणनीतियों को जोड़ें, जैसे प्रतिशत स्टॉप लॉस, ट्रेलिंग स्टॉप लॉस आदि।
विभिन्न पिरामिड रणनीतियों पर विचार करें, उदाहरण के लिए निश्चित मात्रा के बजाय मार्टिंगेल।
निर्णय की सटीकता में सुधार के लिए अनुकूलन सीमा मापदंडों का अनुकूलन करें।
रणनीति का समग्र विचार स्पष्ट है, मूल्य रुझानों को निर्धारित करने और शोर को प्रभावी ढंग से फ़िल्टर करने के लिए अस्थिरता संकेतकों का उपयोग करना। रणनीति को अधिक मजबूत बनाने के लिए कई पहलुओं में अनुकूलन के लिए जगह है। पैरामीटर ट्यूनिंग के माध्यम से, इसे विभिन्न उत्पादों के लिए अनुकूलित किया जा सकता है और आगे के लाइव परीक्षण के लायक है।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(false, defval = false, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") showarr = input(true, defval = true, title = "Show Arrows") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //RSI rsiup = rma(max(change(close), 0), 14) rsidown = rma(-min(change(close), 0), 14) rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown)) //WaveTrend esa = ema(hlc3, 10) d = ema(abs(hlc3 - esa), 10) ci = (hlc3 - esa) / (0.015 * d) wt = ema(ci, 21) //Body body = abs(close - open) abody = sma(body, 10) //Signals bar = close > open ? 1 : close < open ? -1 : 0 overs = rsi < 25 and wt < -60 overb = rsi > 75 and wt > 60 up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1 dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1 exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false) //Arrows col = exit ? black : up1 or dn1 ? blue : na needup = up1 needdn = dn1 needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] if up1 if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if dn1 if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if exit strategy.close_all()