डबल एमए ट्रेंड ब्रेकआउट रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो प्रवृत्ति को निर्धारित करने और प्रवेश संकेत उत्पन्न करने के लिए विभिन्न अवधियों के दो चलती औसत का उपयोग करती है। यह मुख्य रूप से धीमी एमए के माध्यम से समग्र प्रवृत्ति दिशा का न्याय करती है और प्रवेश फ़िल्टरिंग के लिए तेज़ एमए का उपयोग करती है। जब बड़े समय सीमा प्रवृत्ति की दिशा सुसंगत होती है, तो यह उच्च जीत दर और लाभप्रदता का पीछा करने के लिए प्रवेश करने के लिए उलट बार का चयन करती है।
इस रणनीति में निम्नलिखित मुख्य भाग शामिल हैंः
रुझान: 21 अवधि के एमए की गणना करता है, जिसे धीमी एमए के रूप में परिभाषित किया गया है। इसकी स्थिति अपेक्षाकृत स्थिर है और इसका उपयोग समग्र प्रवृत्ति की दिशा का न्याय करने के लिए किया जा सकता है। जब कीमतें इस एमए के करीब बढ़ती हैं, तो यह एक ऊपर की प्रवृत्ति है। जब कीमतें इस एमए के करीब गिरती हैं, तो यह एक नीचे की प्रवृत्ति है।
प्रविष्टि फ़िल्टरिंग: 5-अवधि एमए की गणना करता है, जिसे फास्ट एमए के रूप में परिभाषित किया गया है। केवल जब कीमत धीमी एमए और तेज एमए दोनों को तोड़ती है, तो ट्रेडिंग सिग्नल ट्रिगर किया जाता है। यह डिज़ाइन मुख्य रूप से झूठे ब्रेकआउट की संभावना को और फ़िल्टर करता है।
मोमबत्ती फ़िल्टरिंग: यह रणनीति केवल तब लंबी होती है जब वर्तमान मोमबत्ती मंदी होती है, या जब वर्तमान मोमबत्ती तेजी होती है तो छोटी होती है। यह मानता है कि प्रवेश के लिए रिवर्सल बार का उपयोग करने से अधिक सफलता दर प्राप्त की जा सकती है। यह ओवरबॉट या ओवरसोल्ड क्षेत्रों में प्रवेश करने से बचने के लिए तेजी से आरएसआई संकेतक को भी जोड़ती है।
पिरामिड फिल्टरक्रिप्टो बाजार के लिए, रणनीति में महत्वपूर्ण डाउनट्रेंड में ओवरसोल्ड अवसरों को पकड़ने के लिए तीन गुना अस्थिरता ब्रेकआउट की स्थिति भी शामिल है।
हानि रोकें: रणनीति चलती स्टॉप लॉस का समर्थन करती है। पदों के खुलने के बाद, सेट प्रतिशत के आधार पर स्टॉप लॉस को वास्तविक समय में अपडेट किया जाएगा।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
इस रणनीति में कुछ जोखिम भी हैं:
इन जोखिमों से निपटने के लिए निम्नलिखित पहलुओं में अनुकूलन किया जा सकता हैः
इस रणनीति को अनुकूलित करने के मुख्य पहलुओं में निम्नलिखित शामिल हैंः
पैरामीटर अनुकूलन: जोखिम-समायोजित रिटर्न में सुधार के लिए इष्टतम तेज और धीमी एमए अवधि संयोजन खोजने के लिए व्यवस्थित रूप से बैकटेस्ट करें।
पैटर्न पहचानना: अधिक विश्वसनीय उलट संकेतों की पहचान करने के लिए KDJ, MACD जैसे अन्य संकेतक जोड़ें।
स्टॉप लॉस ऑप्टिमाइजेशन: रोके जाने की संभावना कम करने के लिए फ्लोटिंग या ट्रेलिंग स्टॉप लॉस एल्गोरिदम विकसित करें।
मशीन लर्निंग: एमएल का उपयोग करके स्वचालित रूप से ट्रेडिंग नियम उत्पन्न करने के लिए अधिक ऐतिहासिक डेटा एकत्र और लेबल करें।
स्थिति आकार: बाजार की स्थितियों के आधार पर स्थिति आकार को गतिशील रूप से समायोजित करें।
ड्यूल एमए ट्रेंड ब्रेकआउट रणनीति आम तौर पर एक सरल और व्यावहारिक ट्रेंड फॉलोअप रणनीति है। जटिल मशीन लर्निंग एल्गोरिदम की तुलना में, यह रणनीति व्याख्या करने और मास्टर करने में आसान है, उच्च विश्वसनीयता के साथ। पैरामीटर ट्यूनिंग, सुविधा विस्तार और एमएल संवर्धन के साथ, इस रणनीति में सुधार की बड़ी क्षमता है और मात्रात्मक व्यापार के लिए एक शानदार प्रारंभिक बिंदु है।
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-07 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, "long") needshort = input(true, "short") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") useohlc4 = input(false, defval = false, title = "Use OHLC4") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)") src = useohlc4 == true ? ohlc4 : close //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1] //Bars bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 //Fast RSI fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //CryptoBottom mac = sma(close, 10) len = abs(close - mac) sma = sma(len, 100) max = max(open, close) min = min(open, close) up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //Signals up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0 dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0 up2 = high < center and high < center2 and bar == -1 ? 1 : 0 dn2 = low > center and low > center2 and bar == 1 ? 0 : 0 //Lines plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 or (up2 == 1 and needex == true) or up3 == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)