
डबल एमए ट्रेंड ब्रेकिंग रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो दो अलग-अलग चक्रों की चलती औसत का उपयोग करके प्रवृत्ति निर्णय और प्रवेश के लिए करती है। रणनीति मुख्य रूप से धीमी एमए द्वारा समग्र प्रवृत्ति की दिशा का निर्णय करती है, और तेजी से एमए का उपयोग करके प्रवेश फ़िल्टर करती है। जब बड़े स्तर पर प्रवृत्ति की दिशा संगत होती है, तो उच्च जीत और लाभप्रदता के लिए प्रवेश के लिए K लाइन को उलटने का विकल्प चुनें।
इस रणनीति में मुख्य रूप से निम्नलिखित घटक शामिल हैंः
रुझान का आकलन:21 चक्रों के एमए की गणना करके, धीमी गति से एमए के रूप में परिभाषित किया गया है, इसकी स्थिति काफी स्थिर है, जिसका उपयोग समग्र प्रवृत्ति की दिशा का पता लगाने के लिए किया जा सकता है। जब कीमतें बढ़ती हैं तो एमए के मूल्य के करीब आने के लिए एक उछाल है, जब कीमतें गिरती हैं तो यह एमए के मूल्य के करीब आने के लिए एक गिरावट है।
प्रवेश फ़िल्टर:5 चक्रों के एमए की गणना करें, जिसे तेजी से एमए के रूप में परिभाषित किया गया है। केवल तभी ट्रेडिंग सिग्नल उत्पन्न होता है जब कीमत धीमी एमए को तोड़ती है और साथ ही तेजी से एमए को भी तोड़ती है। यह डिजाइन मुख्य रूप से आगे के फ़िल्टरिंग की संभावना है।
K-लाइन फ़िल्टर:रणनीति केवल तब अधिक होती है जब चक्र K लाइन नकारात्मक होती है, या जब चक्र K लाइन सकारात्मक होती है, तो यह खाली होती है। यह ध्यान में रखते हुए कि रिवर्स K लाइन प्रविष्टि का उपयोग करने से उच्च सफलता दर प्राप्त की जा सकती है। साथ ही साथ तेजी से आरएसआई संकेतक के साथ ओवरबॉट या ओवरसोल्ड क्षेत्र में प्रवेश से बचने के लिए।
फ़िल्टर करेंःक्रिप्टोक्यूरेंसी बाजारों के लिए, रणनीति ने अतिरिक्त रूप से तीन गुना उतार-चढ़ाव के लिए शर्तों को बढ़ा दिया है, जो बड़े पैमाने पर गिरावट के दौरान ओवरब्रिज के अवसरों को छानता है।
क्षतिग्रस्त डिजाइनःरणनीति चलती रोक को समर्थन करती है। जब स्थिति खोला जाता है, तो रोक को वास्तविक समय में अपडेट किया जाता है, जो कि सेट किए गए रोक के प्रतिशत के आधार पर होता है।
इस रणनीति के निम्नलिखित फायदे हैं:
इस रणनीति के कुछ जोखिम भी हैं:
इन जोखिमों के लिए अनुकूलन निम्नलिखित तरीकों से किया जा सकता हैः
इस रणनीति को निम्नलिखित क्षेत्रों में अनुकूलित किया जा सकता हैः
पैरामीटर अनुकूलन: अधिक व्यवस्थित प्रतिक्रिया के माध्यम से, तेजी से धीमी गति से एमए के चक्र पैरामीटर संयोजन को अनुकूलित करें, जिससे समग्र लाभ जोखिम अनुपात में सुधार हो।
पैटर्न पहचान: 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)