यह रणनीति मुख्य रूप से दोहरी चलती औसत का उपयोग ट्रेंड रिवर्स से लाभ उठाने के लिए सिग्नल खरीदने और बेचने के रूप में करती है। यह लंबी अवधि के चलती औसत के ऊपर पार होने पर लंबी अवधि के चलती औसत के ऊपर जाता है, और लंबी अवधि के चलती औसत के नीचे पार होने पर छोटा हो जाता है। यह एक सामान्य ट्रैलिंग स्टॉप लॉस रणनीति से संबंधित है।
यह रणनीति पहले दो चलती औसत निर्धारित करती है, एक अल्पकालिक 20-दिवसीय एमए और एक दीर्घकालिक 60-दिवसीय एमए। फिर यह प्रवेश निर्धारित करने के लिए दोनों एमए के बीच क्रॉसिंग स्थितियों का आकलन करती है।
विशेष रूप से, जब अल्पकालिक एमए दीर्घकालिक एमए के ऊपर पार करता है, तो यह एक अपट्रेंड का संकेत देता है, इसलिए लंबे समय तक जाएं। जब अल्पकालिक एमए दीर्घकालिक एमए के नीचे पार करता है, तो यह एक डाउनट्रेंड का संकेत देता है, इसलिए शॉर्ट जाएं।
लॉन्ग या शॉर्ट जाने के बाद स्टॉप लॉस विधि अधिकतम लाभ में लॉक करने के लिए उच्चतम मूल्य और निम्नतम मूल्य के आधार पर ट्रेलिंग स्टॉप है।
कोड का मुख्य तर्क हैः
इस रणनीति के लाभ इस प्रकार हैंः
कुछ जोखिम भी हैं:
जोखिमों से निपटने के लिए:
इस रणनीति को निम्नलिखित क्षेत्रों में और अधिक अनुकूलित किया जा सकता हैः
बहु-स्थिति प्रविष्टि के लिए आरएसआई जैसे अन्य फ़िल्टर जोड़ें, झूठे ब्रेक से बचें।
सबसे अच्छा पैरामीटर मिश्रण खोजने के लिए एमए अवधि का अनुकूलन करें। वृद्धिशील आगे चलकर विभिन्न अवधि का परीक्षण कर सकते हैं।
इष्टतम रेंज खोजने के लिए बैकटेस्ट गणना के माध्यम से स्टॉप लॉस रेंज का अनुकूलन करें। गतिशील स्टॉप लॉस का भी उपयोग कर सकते हैं।
व्यापार आवृत्ति को कम करने के लिए स्टॉप लॉस से बाहर निकलने के बाद री-एंट्री लॉजिक सेट करें।
जब प्रवृत्ति स्पष्ट न हो तब ट्रेडिंग को रोकने के लिए प्रवृत्ति संकेतक के साथ संयोजन करें।
बाजार की स्थितियों के आधार पर स्थिति आकार और गतिशील स्टॉप लॉस जोड़ें।
संक्षेप में, दोहरी एमए रिवर्स रणनीति सरल और व्यावहारिक है, जो दोहरी एमए क्रॉसओवर के माध्यम से रुझान मोड़ बिंदुओं की पहचान करती है। लेकिन ऐसे जोखिम हैं जिन्हें पैरामीटर ट्यूनिंग, स्टॉप लॉस अनुकूलन, और रणनीति प्रभावशीलता को अधिकतम करने के लिए फ़िल्टर जोड़ने की आवश्यकता होती है। सावधानीपूर्वक अनुकूलन और अनुशासित जोखिम प्रबंधन के साथ, यह एक स्थिर लाभदायक स्विंग ट्रेडिंग रणनीति बन सकती है।
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %") needbe = input(true, defval = true, title = "Bands Entry") needct = input(false, defval = false, title = "Counter-trend entry") needdb = input(true, defval = true, title = "Double Body") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") needbb = input(true, defval = true, title = "Show Bands") needbg = input(true, defval = true, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //Distance dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma hd2 = center + distsma * 2 ld2 = center - distsma * 2 //Trend trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2") plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1") plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2 candle = high - low //Signals bar = close > open ? 1 : close < open ? -1 : 0 up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0 dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0 dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0 if up7 == 1 or up8 == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na) if dn7 == 1 or dn8 == 1 strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)