यह रणनीति क्रॉसओवर सिग्नल उत्पन्न करने के लिए दो अर्नो लेगौ मूविंग एवरेज (एएलएमए) का उपयोग करती है, एक तेज और एक धीमी। एएलएमए पारंपरिक एमए की तुलना में लेग को कम करता है और सिग्नल लाइन को चिकना करता है। सिग्नल सटीकता में सुधार के लिए वॉल्यूम फिल्टर जोड़ा जाता है। यह क्रिप्टो के लिए अनुकूलित है लेकिन अन्य उपकरणों के लिए समायोजित किया जा सकता है। अलर्ट शामिल हैं।
मुख्य संकेतक और नियम निम्नलिखित हैंः
फास्ट अलमा: ब्रेकआउट को पकड़ने के लिए कम अवधि।
धीमी ALMA: प्रवृत्ति को मापने के लिए लंबी अवधि।
वॉल्यूम फ़िल्टरः जब लघु ईएमए लंबे ईएमए से पार हो जाता है तो वैध होता है।
खरीद संकेतः तेज ALMA धीमी ALMA और वॉल्यूम फिल्टर के ऊपर से गुजरता है।
बेचने का संकेतः तेज ALMA धीमी ALMA से नीचे जाता है.
संक्षिप्त संकेतः तेज अलमा धीमी अलमा और वॉल्यूम फिल्टर से गुजरता है।
कवर सिग्नल: तेज अलमा धीमी अलमा के ऊपर से गुजरता है।
यह रणनीति मजबूत संकेतों के लिए रुझान, गति और मात्रा विश्लेषण को जोड़ती है। अलमा लेगिंग को कम करता है जबकि मात्रा झूठे ब्रेकआउट से बचती है।
पारंपरिक चलती औसत रणनीतियों की तुलना में, मुख्य फायदे हैंः
ALMA लेग को कम करता है और सिग्नल की गुणवत्ता में सुधार करता है।
वॉल्यूम फिल्टर झूठे ब्रेकआउट से नुकसान से बचाता है।
तेज/धीमी संयोजन प्रवृत्ति दिशा को मापता है।
सरल और सहज नियम, लागू करने में आसान।
विभिन्न बाजारों के लिए एमओ पैरामीटर का लचीला समायोजन।
उचित जोखिम प्रबंधन।
पैरामीटर ट्यूनिंग के माध्यम से आगे अनुकूलन क्षमता।
पारंपरिक क्रॉसओवर रणनीतियों की तुलना में समग्र रूप से बेहतर स्थिरता और गुणवत्ता।
लाभों के बावजूद, निम्नलिखित जोखिमों पर ध्यान दिया जाना चाहिए:
क्रॉसओवर प्रणाली आंतरिक रूप से whipsaws के लिए कमजोर हैं।
ALMA का प्रदर्शन पैरामीटर ट्यूनिंग पर निर्भर करता है।
वॉल्यूम स्पाइक्स सिग्नल जनरेशन को भ्रामक बना सकते हैं।
कुछ विलंब हमेशा मौजूद रहता है, सभी नुकसान से बचा नहीं जा सकता।
अति अनुकूलन से अति अनुकूलन का जोखिम।
जब वॉल्यूम असामान्य होता है तो सिग्नल विफल हो जाते हैं।
मशीन लर्निंग तकनीक बेहतर परिणाम दे सकती है।
अत्यधिक उपयोग से बचने के लिए लाभ/जोखिम अनुपात की निगरानी करें।
जोखिमों से निपटने के लिए निम्नलिखित क्षेत्रों में सुधार किए जा सकते हैंः
बेहतर संवेदनशीलता के लिए ALMA मापदंडों का अनुकूलन करें।
विभिन्न आयतन माप के साथ प्रयोग करें।
व्यापार के प्रति नियंत्रण हानि के लिए स्टॉप लॉस का परिचय दें।
मजबूत संकेतों के लिए अन्य संकेतक शामिल करें।
स्मार्ट सिग्नल समायोजन के लिए मशीन लर्निंग मॉड्यूल जोड़ें।
रणनीति विविधता के लिए कई उत्पादों में तैनात करें।
विभिन्न बाजारों के लिए स्थिति आकार मॉडल का अनुकूलन करना।
अति-फिटिंग से बचने के लिए मज़बूती का शोध करें।
निष्कर्ष में, पारंपरिक क्रॉसओवर रणनीतियों की तुलना में, यह रणनीति ALMA एल्गोरिथ्म और वॉल्यूम फिल्टर के माध्यम से संकेत की गुणवत्ता और मजबूती में सुधार करती है। लेकिन रणनीति अनुकूलन एक पुनरावृत्ति प्रक्रिया है। बदलते बाजारों के अनुकूल होने के लिए कई आयामों से रणनीति में सुधार करना महत्वपूर्ण है।
/*backtest start: 2022-09-16 00:00:00 end: 2023-09-22 00:00:00 period: 1d basePeriod: 1h 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/ // © Sarahann999 // Calculations for TP/SL based off: https://kodify.net/tradingview/orders/percentage-profit/ //@version=5 strategy("ALMA Cross", overlay=true) //User Inputs src= (close) long_entry = input(true, title='Long Entry') short_entry = input(true, title='Short Entry') //Fast Settings ALMA1 = input(100, "ALMA Lenghth 1", group= "ALMA Fast Length Settings") alma_offset = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01) alma_sigma = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0) Alma1 = ta.alma(src, ALMA1, alma_offset, alma_sigma) //Slow Settings ALMA2 = input(120, "ALMA Length 2", group = "ALMA Slow Length Settings") alma_offset2 = input.float(defval=0.85, title='Arnaud Legoux (ALMA) - Offset Value', minval=0, step=0.01) alma_sigma2 = input.int(defval=6, title='Arnaud Legoux (ALMA) - Sigma Value', minval=0) Alma2 = ta.alma(src, ALMA2, alma_offset2, alma_sigma2) //Volume var cumVol = 0. cumVol += nz(volume) if barstate.islast and cumVol == 0 runtime.error("No volume is provided by the data vendor.") shortlen = input.int(5, minval=1, title = "Short Length", group= "Volume Settings") longlen = input.int(10, minval=1, title = "Long Length") short = ta.ema(volume, shortlen) long = ta.ema(volume, longlen) osc = 100 * (short - long) / long //Define Cross Conditions buy = ta.crossover(Alma1, Alma2) sell = ta.crossunder(Alma1, Alma2) //Calculate Take Profit Percentage longProfitPerc = input.float(title="Long Take Profit", group='Take Profit Percentage', minval=0.0, step=0.1, defval=2) / 100 shortProfitPerc = input.float(title="Short Take Profit", minval=0.0, step=0.1, defval=2) / 100 // Figure out take profit price 1 longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Make inputs that set the stop % 1 longStopPerc = input.float(title="Long Stop Loss", group='Stop Percentage', minval=0.0, step=0.1, defval=2.5) / 100 shortStopPerc = input.float(title="Short Stop Loss", minval=0.0, step=0.1, defval=2.5) / 100 // Figure Out Stop Price longStopPrice = strategy.position_avg_price * (1 - longStopPerc) shortStopPrice = strategy.position_avg_price * (1 + shortStopPerc) //Define Conditions buySignal = buy and osc > 0 and strategy.position_size == 0 //sellSignal sellSignal = sell and osc > 0 and strategy.position_size == 0 // Submit entry orders if buySignal and long_entry strategy.entry(id="Long", direction=strategy.long, alert_message="Enter Long") alert(message="BUY Trade Entry Alert", freq=alert.freq_once_per_bar) if sellSignal and short_entry strategy.entry(id="Short", direction=strategy.short, alert_message="Enter Short") alert(message="SELL Trade Entry Alert", freq=alert.freq_once_per_bar) // Submit exit orders based on take profit price if (strategy.position_size > 0) strategy.exit(id="Long TP/SL", limit=longExitPrice, stop=longStopPrice, alert_message="Long Exit 1 at {{close}}") if (strategy.position_size < 0) strategy.exit(id="Short TP/SL", limit=shortExitPrice, stop=shortStopPrice, alert_message="Short Exit 1 at {{close}}") //Draw plot(Alma1,"Alma Fast", color=color.purple, style=plot.style_circles) plot(Alma2,"Alma Slow", color=#acb5c2, style=plot.style_circles)