यह रणनीति मूल्य उलट के संकेतों की पहचान करने और जब मजबूत प्रवृत्ति उलट जाती है तो प्रवेश करने के लिए विपरीत रणनीतियों को अपनाने के लिए एमएसीडी, आरएसआई, एडीएक्स और अन्य गति तकनीकी संकेतकों को जोड़ती है। यह रणनीति मुनाफे में लॉक करने और जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस और लाभ लेने की भी स्थापना करती है।
यह रणनीति पहले मूल्य रुझानों का न्याय करने के लिए एमएसीडी संकेतक
विशेष रूप से, जब एमएसीडी फास्ट लाइन स्लो लाइन से ऊपर जाती है, तो आरएसआई 50 से अधिक होता है और बढ़ता है, एडीएक्स 20 से अधिक होता है, यह एक खरीद संकेत है; जब एमएसीडी फास्ट लाइन स्लो लाइन से नीचे जाती है, तो आरएसआई 50 से कम होता है और गिरता है, एडीएक्स 20 से अधिक होता है, यह एक बिक्री संकेत है।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह कई संकेतकों को प्रभावी ढंग से फिल्टर करने के लिए जोड़ती है whipsaws और त्रुटिपूर्ण संकेत, वास्तव में प्रवृत्ति उलट के मोड़ बिंदुओं को लॉक करना, इस प्रकार एक उच्च जीत दर प्राप्त करना। इसके अलावा, लाभ में स्टॉप लॉस और ले लाभ लॉक सेट करना और जोखिमों को नियंत्रित करना, जो अप्रत्याशित घटनाओं के प्रभाव को प्रभावी ढंग से हेज कर सकता है।
इस रणनीति का सबसे बड़ा जोखिम रुझान उलटने का गलत आकलन है, जैसे कि कीमत में गहरा रिट्रेसमेंट होने से गलत आकलन होता है। इसके अलावा, उलटने के बाद नए रुझान की स्थिरता पर्याप्त लाभ कमाने के लिए पर्याप्त नहीं हो सकती है।
समाधान पैरामीटर को और अधिक अनुकूलित करना, स्टॉप लॉस मार्जिन को समायोजित करना, या सिग्नल फ़िल्टरिंग के लिए अधिक सहायक संकेतकों को शामिल करना है।
इस रणनीति को निम्नलिखित दिशाओं में और अधिक अनुकूलित किया जा सकता हैः
मूल्य उलट-फेर के निर्णयों की सटीकता में सुधार के लिए एमएसीडी और आरएसआई मापदंडों के संयोजन को अनुकूलित करना;
एक दूसरे को शामिल करने वाले संकेतकों के प्रभाव को बनाने के लिए अधिक संकेतकों की फ़िल्टरिंग, जैसे कि केडी, बीओएलएल आदि को बढ़ाना;
विभिन्न बाजार स्थितियों के अनुसार स्टॉप लॉस मार्जिन को गतिशील रूप से समायोजित करें;
रिवर्स के बाद वास्तविक प्रवृत्ति के अनुसार वास्तविक समय में लाभ लेने की स्थिति को संशोधित करें।
यह रणनीति संभावित मूल्य उलट अवसरों की पहचान करने के लिए कई गति संकेतक को जोड़ती है। पैरामीटर अनुकूलन, अधिक सहायक संकेतकों को शामिल करने, गतिशील रूप से स्टॉप लॉस और लाभ लेने की रणनीतियों को समायोजित करने के माध्यम से, बाजारों द्वारा प्रदान किए गए विभिन्न व्यापारिक अवसरों को लॉक करने के लिए रणनीति की स्थिरता और विश्वसनीयता में और सुधार किया जा सकता है।
/*backtest start: 2023-11-28 00:00:00 end: 2023-12-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © AHMEDABDELAZIZZIZO //@version=5 strategy("Ta Strategy", overlay=true ) // inputs inversestrategy = input.bool(false, title = "Inverse Strategy",tooltip = "This option makes you reverse the strategy so that long signals become where to short ") direction = input.string(defval = "Both" , options = ["Both" , "Short" , "Long"] ) leftbars= input(6,title = " Left Bars" , group = "Support and resistance") rightbars = input(6, title = " Right Bars", group = "Support and resistance") macdfast = input(12, title = "MACD Fast", group = "MACD") macdslow = input(26, title = "MACD Slow",group = "MACD") macdsignal = input(7, "MACD Signal",group = "MACD") sellqty = input(50, title = "QTY to sell at TP 1") len = input(14, title="ADX Length" , group = "ADX") // sup and res res = fixnan(ta.pivothigh(high,leftbars,rightbars)) sup = fixnan(ta.pivotlow(low , leftbars,rightbars)) // macd macd =ta.ema(close,macdfast) - ta.ema(close,macdslow) signal=ta.ema(macd,macdsignal) //adx up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr,len) plusDI = 100 * ta.rma(plusDM, len) / truerange minusDI = 100 * ta.rma(minusDM, len) / truerange dx = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI), len) adx = ta.sma(dx, len) // start deal condition longcondition = ta.crossover(macd,signal) and close > res and ta.rsi(close,14) > 50 and plusDI > minusDI and adx > 20 shortcondition = ta.crossunder(macd,signal) and close < sup and ta.rsi(close,14) < 50 and plusDI < minusDI and adx > 20 //tp longtp1 = input.float(6, "Long TP 1", minval = 0.0, step = 0.25, group = "Exit LONG Orders") /100 longtp2 = input.float(12, "Long TP 2", minval = 0.0, step = 0.25, group = "Exit LONG Orders") /100 longsl1 = input.float(3.0, "Long SL", minval = 0.0, step = 0.25, group = "Exit LONG Orders") /100 longtakeprofit1 = (strategy.position_avg_price * (1 + longtp1)) longstoploss1 = (strategy.position_avg_price * (1 - longsl1)) longtakeprofit2 = (strategy.position_avg_price * (1 + longtp2)) //sl shorttp1 = input.float(6.0, "Short TP 1 ", minval = 0.0, step = 0.25, group = "Exit SHORT Orders")/100 shorttp2 = input.float(12.0, "Short TP 2", minval = 0.0, step = 0.25, group = "Exit SHORT Orders")/100 shortsl1 = input.float(3.0, "Short SL", minval = 0.0, step = 0.25, group = "Exit SHORT Orders")/100 shorttakeprofit1 = (strategy.position_avg_price * (1- shorttp1)) shortstoploss1 = (strategy.position_avg_price * (1 + shortsl1)) shorttakeprofit2 = (strategy.position_avg_price * (1- shorttp2)) //placeorders if inversestrategy == false if direction == "Both" if longcondition and strategy.opentrades == 0 strategy.entry("long" , strategy.long ) strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1) strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1) if high >= longtakeprofit1 strategy.cancel("exit long 2") strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price) if shortcondition and strategy.opentrades == 0 strategy.entry("short",strategy.short) strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1) strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1) if low <= shorttakeprofit1 strategy.cancel("exit short 2") strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price) else if direction == "Long" if longcondition and strategy.opentrades == 0 strategy.entry("long" , strategy.long ) strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1) strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1) if high >= longtakeprofit1 strategy.cancel("exit long 2") strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price) else if direction == "Short" if shortcondition and strategy.opentrades == 0 strategy.entry("short",strategy.short) strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1) strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1) if low <= shorttakeprofit1 strategy.cancel("exit short 2") strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price) else if direction == "Both" if shortcondition and strategy.opentrades == 0 strategy.entry("long" , strategy.long ) strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1) strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1) if high >= longtakeprofit1 strategy.cancel("exit long 2") strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price) if longcondition and strategy.opentrades == 0 strategy.entry("short",strategy.short) strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1) strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1) if low <= shorttakeprofit1 strategy.cancel("exit short 2") strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price) else if direction == "Long" if shortcondition and strategy.opentrades == 0 strategy.entry("long" , strategy.long ) strategy.exit("exit long 1","long",qty_percent = sellqty ,limit = longtakeprofit1,stop = longstoploss1) strategy.exit("exit long 2","long",qty_percent = 100 ,limit = longtakeprofit2,stop = longstoploss1) if high >= longtakeprofit1 strategy.cancel("exit long 2") strategy.exit("exit long 3","long",qty_percent = 100 ,limit = longtakeprofit2,stop = strategy.position_avg_price) else if direction == "Short" if longcondition and strategy.opentrades == 0 strategy.entry("short",strategy.short) strategy.exit("exit short 1","short",qty_percent = sellqty ,limit = shorttakeprofit1,stop = shortstoploss1) strategy.exit("exit short 2","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = shortstoploss1) if low <= shorttakeprofit1 strategy.cancel("exit short 2") strategy.exit("exit short 3","short",qty_percent = 100 ,limit = shorttakeprofit2,stop = strategy.position_avg_price) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// lsl1 = plot(strategy.position_size <= 0 ? na : longstoploss1, color=color.rgb(124, 11, 11), style=plot.style_linebr, linewidth=1) ltp1 = plot(strategy.position_size <= 0 ? na : longtakeprofit1, color=color.rgb(15, 116, 18), style=plot.style_linebr, linewidth=1) ltp2 = plot(strategy.position_size <= 0 ? na : longtakeprofit2, color=color.rgb(15, 116, 18), style=plot.style_linebr, linewidth=1) avg = plot(strategy.position_avg_price, color=color.rgb(255, 153, 0, 47), style=plot.style_linebr, linewidth=1) fill(ltp1,avg , color =strategy.position_size <= 0 ? na : color.rgb(82, 255, 97, 90)) fill(ltp2,ltp1 , color =strategy.position_size <= 0 ? na : color.rgb(82, 255, 97, 90)) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ssl1 = plot(strategy.position_size >= 0 ? na : shortstoploss1, color=color.red, style=plot.style_linebr, linewidth=1) stp1 = plot(strategy.position_size >= 0 ? na : shorttakeprofit2, color=color.green, style=plot.style_linebr, linewidth=1) stp2 = plot(strategy.position_size >= 0 ? na : shorttakeprofit1, color=color.green, style=plot.style_linebr, linewidth=1) fill(stp1,avg , color =strategy.position_size >= 0 ? na : color.rgb(30, 92, 35, 90)) fill(stp2,stp1 , color =strategy.position_size >= 0 ? na : color.rgb(30, 92, 35, 90)) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// resplot = plot(res, color=ta.change(res) ? na : #bf141446, linewidth=3, offset=-(rightbars+1), title="res") supplot = plot(sup, color=ta.change(sup) ? na : #118f113a, linewidth=3, offset=-(rightbars+1), title="sup")